public void initialize()

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 );
            }
        }
    }