in spring-registry/spring-registry-commons/src/main/java/org/apache/archiva/components/registry/commons/CommonsConfigurationRegistry.java [584:686]
public void initialize( )
throws RegistryException
{
synchronized (this)
{
try
{
CombinedConfiguration configuration;
CombinedConfigurationBuilder builder;
if ( configurationDefinitionFile != null && Files.exists( configurationDefinitionFile ) )
{
DefaultExpressionEngine expressionEngine = new DefaultExpressionEngine( DefaultExpressionEngineSymbols.DEFAULT_SYMBOLS );
Parameters params = new Parameters( );
builder = new CombinedConfigurationBuilder( )
.configure( params.fileBased( ).setFile( configurationDefinitionFile.toFile( ) ) );
configuration = builder.getConfiguration( );
configuration.setExpressionEngine( expressionEngine );
}
else if ( StringUtils.isNotBlank( configurationDefinition ) )
{
builder = new CombinedConfigurationBuilder( );
DefaultExpressionEngine expressionEngine = new DefaultExpressionEngine( DefaultExpressionEngineSymbols.DEFAULT_SYMBOLS );
StringSubstitutor substitutor = new StringSubstitutor( StringLookupFactory.INSTANCE.systemPropertyStringLookup( ) );
String interpolatedProps = substitutor.replace( configurationDefinition );
Parameters p = new Parameters( );
ReaderBuilderParameters param = new ReaderBuilderParameters( );
param.setReader( new StringReader( interpolatedProps ) );
ReaderConfigurationBuilder<XMLConfiguration> defBuilder = new ReaderConfigurationBuilder<>( XMLConfiguration.class ).configure( param );
logger.debug( "Loading configuration into commons-configuration, xml {}", interpolatedProps );
builder.configure( new Parameters( ).combined( ).setDefinitionBuilder( defBuilder ) );
configuration = builder.getConfiguration( );
configuration.setExpressionEngine( expressionEngine );
//configuration.set
configuration.addConfiguration( new SystemConfiguration( ) );
}
else
{
logger.debug( "Creating a default configuration - no configuration was provided" );
this.isPersistent = false;
Parameters params = new Parameters( );
builder = new CombinedConfigurationBuilder( )
.configure( params.fileBased( ).setURL(
getClass( ).getClassLoader( ).getResource( "org/apache/commons/registry/default-config-definition.xml" )
) );
configuration = builder.getConfiguration( );
}
HierarchicalConfiguration<?> defConfig = builder.getDefinitionBuilder( ).getConfiguration( );
logger.debug( "Node def children: {}", defConfig.getNodeModel( ).getInMemoryRepresentation( ).getChildren( ) );
for ( ImmutableNode child : defConfig.getNodeModel().getInMemoryRepresentation().getChildren()) {
logger.debug( "Child: {}, Attributes: {}" , child.getNodeName( ), child.getAttributes( ));
}
this.configuration = configuration;
this.configurationBuilder = builder;
if ( isPersistent )
{
List<String> nameList;
if (StringUtils.isEmpty(saveConfigurationName)) {
nameList = configuration.getConfigurationNameList( );
} else {
nameList = Arrays.asList( saveConfigurationName );
}
logger.debug( "Config: {}", String.join( ",", configuration.getConfigurationNameList( ) ) );
logger.debug( "Builder: {}", String.join( ",", builder.builderNames( ) ) );
for ( String name : nameList )
{
if (name != null)
{
Configuration configInstance = configuration.getConfiguration( name );
ConfigurationBuilder builderInstance = builder.getNamedBuilder( name );
logger.debug( "Config: {}, Builder: {}", configInstance, builderInstance );
if ( configInstance != null && builderInstance != null &&
builderInstance instanceof FileBasedConfigurationBuilder &&
configInstance instanceof FileBasedConfiguration )
{
this.saveConfiguration = (FileBasedConfiguration) configInstance;
this.saveConfigurationBuilder = (FileBasedConfigurationBuilder) builderInstance;
break;
}
}
}
if ( saveConfiguration == null )
{
this.isPersistent = false;
logger.warn( "No writable configuration found. That means configuration cannot be saved." );
}
}
}
catch ( ConfigurationException e )
{
throw new RuntimeException( e.getMessage( ), e );
}
}
}