public static ServiceContainer create()

in src/java/org/apache/fulcrum/yaafi/framework/factory/ServiceContainerFactory.java [66:134]


    public static ServiceContainer create(
        ServiceContainerConfiguration serviceManagerConfig, Context context )
        throws Exception
    {
        Validate.notNull(serviceManagerConfig,"serviceManagerConfig");
        Validate.notNull(context,"context");

        String clazzName;
        Class<?> clazz = null;
        Configuration configuration = null;
        ServiceContainer result = null;

        // Enforce a logger from the caller

        try
        {
            // bootstrap the logging

            ServiceContainerFactory.logger = serviceManagerConfig.getLogger();

            // bootstrap the configuration settings

            configuration = serviceManagerConfig.createFinalConfiguration();

            // bootstrap the service container

            clazzName = getServiceContainerClazzName(configuration);

            ServiceContainerFactory.logger.debug(
                "Loading the service container class " + clazzName
                );

            clazz = ServiceContainerFactory.class.getClassLoader().loadClass(
                clazzName
                );

            ServiceContainerFactory.logger.debug(
                "Instantiating the service container class " + clazzName
                );

            result = (ServiceContainer) clazz.getDeclaredConstructor().newInstance();
        }
        catch (Exception e)
        {
            String msg = "Creating the ServiceContainer failed";
            ServiceContainerFactory.logger.error( msg, e );
            throw e;
        }

        Logger serviceContainerLogger = serviceManagerConfig.getLogger();

        serviceContainerLogger.debug(
            "Using the following configuration : "
            + ConfigurationUtil.toString( configuration )
            );

        ContainerUtil.enableLogging( result, serviceManagerConfig.getLogger() );
        ContainerUtil.contextualize( result, context );

        if(serviceManagerConfig.getParentServiceManager() != null)
        {
            ContainerUtil.service(result, serviceManagerConfig.getParentServiceManager());
        }
        
        ContainerUtil.configure( result, configuration );
        ContainerUtil.initialize( result );

        return result;
    }