001 /* $Id: FromAnnotationRuleProviderFactory.java 992060 2010-09-02 19:09:47Z simonetripodi $
002 *
003 * Licensed to the Apache Software Foundation (ASF) under one or more
004 * contributor license agreements. See the NOTICE file distributed with
005 * this work for additional information regarding copyright ownership.
006 * The ASF licenses this file to You under the Apache License, Version 2.0
007 * (the "License"); you may not use this file except in compliance with
008 * the License. You may obtain a copy of the License at
009 *
010 * http://www.apache.org/licenses/LICENSE-2.0
011 *
012 * Unless required by applicable law or agreed to in writing, software
013 * distributed under the License is distributed on an "AS IS" BASIS,
014 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
015 * See the License for the specific language governing permissions and
016 * limitations under the License.
017 */
018 package org.apache.commons.digester.annotations;
019
020 import org.apache.commons.digester.annotations.internal.DefaultDigesterLoaderHandlerFactory;
021 import org.apache.commons.digester.annotations.spi.AnnotationRuleProviderFactory;
022 import org.apache.commons.digester.annotations.spi.DigesterLoaderHandlerFactory;
023
024 /**
025 * {@link DigesterLoader} builder implementation.
026 *
027 * @since 2.1
028 */
029 public final class FromAnnotationRuleProviderFactory {
030
031 /**
032 * The {@link AnnotationRuleProviderFactory} selected in the previous
033 * chained builder.
034 */
035 private final AnnotationRuleProviderFactory annotationRuleProviderFactory;
036
037 /**
038 * {@link DigesterLoader} builder implementation.
039 *
040 * @param annotationRuleProviderFactory the
041 * {@link AnnotationRuleProviderFactory} selected in the previous
042 * chained builder.
043 */
044 protected FromAnnotationRuleProviderFactory(
045 AnnotationRuleProviderFactory annotationRuleProviderFactory) {
046 this.annotationRuleProviderFactory = annotationRuleProviderFactory;
047 }
048
049 /**
050 * Builds a new {@link DigesterLoader} using the default
051 * {@link DigesterLoaderHandlerFactory} implementation.
052 *
053 * @return the {@link DigesterLoader}.
054 */
055 public DigesterLoader useDefaultDigesterLoaderHandlerFactory() {
056 return this.useDigesterLoaderHandlerFactory(new DefaultDigesterLoaderHandlerFactory());
057 }
058
059 /**
060 * Builds a new {@link DigesterLoader} using the user defined
061 * {@link DigesterLoaderHandlerFactory} implementation.
062 *
063 * @param digesterLoaderHandlerFactory
064 * @return the {@link DigesterLoader}.
065 */
066 public DigesterLoader useDigesterLoaderHandlerFactory(DigesterLoaderHandlerFactory digesterLoaderHandlerFactory) {
067 if (digesterLoaderHandlerFactory == null) {
068 throw new IllegalArgumentException("Parameter 'digesterLoaderHandlerFactory' must be not null");
069 }
070 return new DigesterLoader(this.annotationRuleProviderFactory, digesterLoaderHandlerFactory);
071 }
072
073 }