in redback-common/redback-common-configuration/redback-common-configuration-acc2/src/main/java/org/apache/archiva/redback/common/config/acc2/CommonsConfigurationRegistry.java [637:705]
public void initialize( )
throws RegistryException
{
try
{
CombinedConfiguration configuration;
if ( StringUtils.isNotBlank( combinedConfigurationDefinition ) )
{
String interpolatedProps;
Parameters params = new Parameters( );
DefaultExpressionEngineSymbols symbols = new DefaultExpressionEngineSymbols.Builder( DefaultExpressionEngineSymbols.DEFAULT_SYMBOLS )
.setPropertyDelimiter( propertyDelimiter )
.setIndexStart( "(" )
.setIndexEnd( ")" )
.setEscapedDelimiter( "\\" + propertyDelimiter )
.create( );
DefaultExpressionEngine expressionEngine = new DefaultExpressionEngine( symbols );
// It allows to use system properties in the XML declaration.
ConfigurationInterpolator interpolator = ConfigurationInterpolator.fromSpecification( new InterpolatorSpecification.Builder( ).withDefaultLookup( DefaultLookups.SYSTEM_PROPERTIES.getLookup( ) ).create( ) );
interpolatedProps = interpolator.interpolate( combinedConfigurationDefinition ).toString( );
logger.debug( "Loading configuration into commons-configuration, xml {}", interpolatedProps );
// This is the builder configuration for the XML declaration, that contains the definition
// for the sources that are used for the CombinedConfiguration.
FileSystem fs = new StringFileSystem( interpolatedProps );
FileBasedConfigurationBuilder<XMLConfiguration> cfgBuilder =
new FileBasedConfigurationBuilder<>(
XMLConfiguration.class )
.configure( params.xml( )
.setFileSystem( fs )
.setFileName( "config.xml" )
.setListDelimiterHandler(
new DefaultListDelimiterHandler( ',' ) )
.setExpressionEngine( expressionEngine )
.setThrowExceptionOnMissing( false ) );
CombinedConfigurationBuilder builder = new CombinedConfigurationBuilder( ).
configure( params.combined( ).setDefinitionBuilder( cfgBuilder ) );
// The builder is needed later for saving of the file parts in the combined configuration.
this.configurationBuilder = builder;
configuration = builder.getConfiguration( );
}
else
{
logger.debug( "Creating a default configuration - no configuration was provided" );
NodeCombiner combiner = new UnionCombiner( );
configuration = new CombinedConfiguration( combiner );
this.configurationBuilder = null;
}
// In the end, we add the system properties to the combined configuration
if ( addSystemProperties )
{
configuration.addConfiguration( new SystemConfiguration( ), "SystemProperties" );
}
this.configuration = configuration;
}
catch ( ConfigurationException e )
{
logger.error( "Fatal error, while reading the configuration definition: " + e.getMessage( ) );
logger.error( "The definition was:" );
logger.error( combinedConfigurationDefinition );
throw new RegistryException( e.getMessage( ), e );
}
}