private List createServiceComponents()

in src/java/org/apache/fulcrum/yaafi/framework/container/ServiceContainerImpl.java [1166:1218]


    private List<ServiceComponent> createServiceComponents(Configuration roleConfiguration, Logger logger)
            throws ConfigurationException
    {
        Validate.notNull( roleConfiguration, "roleConfiguration" );
        Validate.notNull( logger, "logger" );

        ArrayList<ServiceComponent> result = new ArrayList<ServiceComponent>();
        ServiceComponent serviceComponent = null;

        // create an appropriate instance of role configuration parser

        RoleConfigurationParser roleConfigurationParser = this.createRoleConfigurationParser();

        // extract the role entries

        RoleEntry[] roleEntryList = roleConfigurationParser.parse( roleConfiguration );

        // get the default interceptors defined for the container

        List<String> defaultInterceptorList = this.getDefaultInterceptorServiceList();

        // create the service components based on the role entries

        for (int i = 0; i < roleEntryList.length; i++)
        {
            try
            {
                // add the default interceptors to all role entries

                RoleEntry roleEntry = roleEntryList[i];

                if (this.hasDynamicProxies())
                {
                    roleEntry.addInterceptors( defaultInterceptorList );
                } else
                {
                    roleEntry.setHasDynamicProxy( false );
                }

                serviceComponent = new AvalonServiceComponentImpl( roleEntry, this.getLogger(), logger );

                result.add( serviceComponent );
            } catch (Throwable t)
            {
                String serviceComponentName = (serviceComponent != null ? serviceComponent.getName() : "unknown");
                String msg = "Failed to load the service " + serviceComponentName;
                this.getLogger().error( msg, t );
                throw new ConfigurationException( msg, t );
            }
        }

        return result;
    }