/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package org.apache.commons.configuration2.builder;

import java.util.Collection;
import java.util.Map;

import org.apache.commons.configuration2.ConfigurationDecoder;
import org.apache.commons.configuration2.io.ConfigurationLogger;
import org.apache.commons.configuration2.beanutils.BeanHelper;
import org.apache.commons.configuration2.convert.ConversionHandler;
import org.apache.commons.configuration2.convert.ListDelimiterHandler;
import org.apache.commons.configuration2.interpol.ConfigurationInterpolator;
import org.apache.commons.configuration2.interpol.Lookup;
import org.apache.commons.configuration2.sync.Synchronizer;

Definition of a properties interface for basic parameters which are supported by all ConfigurationBuilder implementations derived from BasicConfigurationBuilder.

This interface defines the single properties supported by a parameters object. Properties can be set using a fluent API making it convenient for client code to specify concrete property values in a single statement.

Important note: This interface is not intended to be implemented by client code! It defines a set of available properties and may be extended even in minor releases.

Type parameters:
  • <T> – the type of the result of all set methods for method chaining
Since:2.0
/** * <p> * Definition of a properties interface for basic parameters which are supported * by all {@link ConfigurationBuilder} implementations derived from * {@link BasicConfigurationBuilder}. * </p> * <p> * This interface defines the single properties supported by a parameters * object. Properties can be set using a fluent API making it convenient for * client code to specify concrete property values in a single statement. * </p> * <p> * <strong>Important note:</strong> This interface is not intended to be * implemented by client code! It defines a set of available properties and may * be extended even in minor releases. * </p> * * @since 2.0 * @param <T> the type of the result of all set methods for method chaining */
public interface BasicBuilderProperties<T> {
Sets the logger property. With this property a concrete ConfigurationLogger object can be set for the configuration. Thus logging behavior can be controlled.
Params:
  • log – the Log for the configuration produced by this builder
Returns:a reference to this object for method chaining
/** * Sets the <em>logger</em> property. With this property a concrete * {@code ConfigurationLogger} object can be set for the configuration. Thus * logging behavior can be controlled. * * @param log the {@code Log} for the configuration produced by this builder * @return a reference to this object for method chaining */
T setLogger(ConfigurationLogger log);
Sets the value of the throwExceptionOnMissing property. This property controls the configuration's behavior if missing properties are queried: a value of true causes the configuration to throw an exception, for a value of false it will return null values. (Note: Methods returning a primitive data type will always throw an exception if the property is not defined.)
Params:
  • b – the value of the property
Returns:a reference to this object for method chaining
/** * Sets the value of the <em>throwExceptionOnMissing</em> property. This * property controls the configuration's behavior if missing properties are * queried: a value of <b>true</b> causes the configuration to throw an * exception, for a value of <b>false</b> it will return <b>null</b> values. * (Note: Methods returning a primitive data type will always throw an * exception if the property is not defined.) * * @param b the value of the property * @return a reference to this object for method chaining */
T setThrowExceptionOnMissing(boolean b);
Sets the value of the listDelimiterHandler property. This property defines the object responsible for dealing with list delimiter and escaping characters. Note: AbstractConfiguration does not allow setting this property to null. If the default ListDelimiterHandler is to be used, do not call this method.
Params:
  • handler – the ListDelimiterHandler
Returns:a reference to this object for method chaining
/** * Sets the value of the <em>listDelimiterHandler</em> property. This * property defines the object responsible for dealing with list delimiter * and escaping characters. Note: * {@link org.apache.commons.configuration2.AbstractConfiguration AbstractConfiguration} * does not allow setting this property to <b>null</b>. If the default * {@code ListDelimiterHandler} is to be used, do not call this method. * * @param handler the {@code ListDelimiterHandler} * @return a reference to this object for method chaining */
T setListDelimiterHandler(ListDelimiterHandler handler);
Sets the ConfigurationInterpolator to be used for this configuration. Using this method a custom ConfigurationInterpolator can be set which can be freely configured. Alternatively, it is possible to add custom Lookup objects using other methods provided by this interface.
Params:
  • ci – the ConfigurationInterpolator for this configuration
Returns:a reference to this object for method chaining
/** * Sets the {@code ConfigurationInterpolator} to be used for this * configuration. Using this method a custom * {@code ConfigurationInterpolator} can be set which can be freely * configured. Alternatively, it is possible to add custom {@code Lookup} * objects using other methods provided by this interface. * * @param ci the {@code ConfigurationInterpolator} for this configuration * @return a reference to this object for method chaining */
T setInterpolator(ConfigurationInterpolator ci);
Sets additional Lookup objects for specific prefixes for this configuration object. All Lookup objects contained in the given map are added to the configuration's ConfigurationInterpolator. Note: This method only takes effect if no ConfigurationInterpolator is set using the setInterpolator(ConfigurationInterpolator) method.
Params:
  • lookups – a map with Lookup objects and their associated prefixes
See Also:
Returns:a reference to this object for method chaining
/** * Sets additional {@code Lookup} objects for specific prefixes for this * configuration object. All {@code Lookup} objects contained in the given * map are added to the configuration's {@code ConfigurationInterpolator}. * Note: This method only takes effect if no * {@code ConfigurationInterpolator} is set using the * {@link #setInterpolator(ConfigurationInterpolator)} method. * * @param lookups a map with {@code Lookup} objects and their associated * prefixes * @return a reference to this object for method chaining * @see ConfigurationInterpolator#registerLookups(Map) */
T setPrefixLookups(Map<String, ? extends Lookup> lookups);
Adds additional default Lookup objects (i.e. lookups which are not associated with a specific prefix) to this configuration object. Note: This method only takes effect if no ConfigurationInterpolator is set using the setInterpolator(ConfigurationInterpolator) method.
Params:
  • lookups – a collection with Lookup objects to be added as default lookups at the configuration's ConfigurationInterpolator
See Also:
Returns:a reference to this object for method chaining
/** * Adds additional default {@code Lookup} objects (i.e. lookups which are * not associated with a specific prefix) to this configuration object. * Note: This method only takes effect if no * {@code ConfigurationInterpolator} is set using the * {@link #setInterpolator(ConfigurationInterpolator)} method. * * @param lookups a collection with {@code Lookup} objects to be added as * default lookups at the configuration's * {@code ConfigurationInterpolator} * @return a reference to this object for method chaining * @see ConfigurationInterpolator#addDefaultLookups(Collection) */
T setDefaultLookups(Collection<? extends Lookup> lookups);
Sets the parent ConfigurationInterpolator for this configuration's ConfigurationInterpolator. Setting a parent ConfigurationInterpolator can be used for defining a default behavior for variables which cannot be resolved.
Params:
  • parent – the new parent ConfigurationInterpolator
See Also:
Returns:a reference to this object for method chaining
/** * Sets the parent {@code ConfigurationInterpolator} for this * configuration's {@code ConfigurationInterpolator}. Setting a parent * {@code ConfigurationInterpolator} can be used for defining a default * behavior for variables which cannot be resolved. * * @param parent the new parent {@code ConfigurationInterpolator} * @return a reference to this object for method chaining * @see ConfigurationInterpolator#setParentInterpolator(ConfigurationInterpolator) */
T setParentInterpolator(ConfigurationInterpolator parent);
Sets the Synchronizer object for this configuration. This object is used to protect this configuration instance against concurrent access. The concrete Synchronizer implementation used determines whether a configuration instance is thread-safe or not.
Params:
  • sync – the Synchronizer to be used (a value of null means that a default Synchronizer is used)
Returns:a reference to this object for method chaining
/** * Sets the {@code Synchronizer} object for this configuration. This object * is used to protect this configuration instance against concurrent access. * The concrete {@code Synchronizer} implementation used determines whether * a configuration instance is thread-safe or not. * * @param sync the {@code Synchronizer} to be used (a value of <b>null</b> * means that a default {@code Synchronizer} is used) * @return a reference to this object for method chaining */
T setSynchronizer(Synchronizer sync);
Sets the ConversionHandler object for this configuration. This object is responsible for all data type conversions required for accessing configuration properties in a specific target type. If this property is not set, a default ConversionHandler is used.
Params:
  • handler – the ConversionHandler to be used
Returns:a reference to this object for method chaining
/** * Sets the {@code ConversionHandler} object for this configuration. This * object is responsible for all data type conversions required for * accessing configuration properties in a specific target type. If this * property is not set, a default {@code ConversionHandler} is used. * * @param handler the {@code ConversionHandler} to be used * @return a reference to this object for method chaining */
T setConversionHandler(ConversionHandler handler);
Sets the ConfigurationDecoder object for this configuration. This object is called when encoded properties are queried using the getEncodedString() method.
Params:
  • decoder – the ConfigurationDecoder to be used
Returns:a reference to this object for method chaining
/** * Sets the {@code ConfigurationDecoder} object for this configuration. This * object is called when encoded properties are queried using the * {@code getEncodedString()} method. * * @param decoder the {@code ConfigurationDecoder} to be used * @return a reference to this object for method chaining */
T setConfigurationDecoder(ConfigurationDecoder decoder);
Sets a BeanHelper object to be used by the configuration builder. The BeanHelper is used to create the managed configuration instance dynamically. It is not a property of the configuration as most other properties defined by this interface. By setting an alternative BeanHelper the process of creating configuration instances via reflection can be adapted. (Some specialized configuration builder implementations also use a BeanHelper to create complex helper objects during construction of their result object. CombinedConfigurationBuilder for instance supports a complex configuration definition format which may contain several specialized bean declarations.) If no specific BeanHelper is set, the builder uses the default instance.
Params:
  • beanHelper – the BeanHelper to be used by the builder
Returns:a reference to this object for method chaining
/** * Sets a {@code BeanHelper} object to be used by the configuration builder. * The {@code BeanHelper} is used to create the managed configuration * instance dynamically. It is not a property of the configuration as most * other properties defined by this interface. By setting an alternative * {@code BeanHelper} the process of creating configuration instances via * reflection can be adapted. (Some specialized configuration builder * implementations also use a {@code BeanHelper} to create complex helper * objects during construction of their result object. * {@code CombinedConfigurationBuilder} for instance supports a complex * configuration definition format which may contain several specialized * bean declarations.) If no specific {@code BeanHelper} is set, the builder * uses the default instance. * * @param beanHelper the {@code BeanHelper} to be used by the builder * @return a reference to this object for method chaining */
T setBeanHelper(BeanHelper beanHelper); }