private static synchronized void lazyInit()

in core/impl/src/main/java/org/apache/myfaces/extensions/cdi/core/impl/projectstage/ProjectStageProducer.java [129:184]


    private static synchronized void lazyInit()
    {
        // switch into paranoia mode
        if (projectStageProducer != null)
        {
            return;
        }

        ProjectStageProducer defaultProjectStageProducer = new ProjectStageProducer();
        projectStageProducer = CodiUtils.lookupFromEnvironment(ProjectStageProducer.class,
                new Aggregatable<ProjectStageProducer>()
                {
                    private ProjectStageProducer specializedCodiProjectStageProducer;
                    private ProjectStageProducer customConfiguredProjectStageProducer;

                    /**
                     * {@inheritDoc}
                     */
                    public void add(ProjectStageProducer projectStageProducer)
                    {
                        if(projectStageProducer.getClass().getName().startsWith("org.apache.myfaces."))
                        {
                            specializedCodiProjectStageProducer = projectStageProducer;
                        }
                        else
                        {
                            customConfiguredProjectStageProducer = projectStageProducer;
                        }
                    }

                    /**
                     * {@inheritDoc}
                     */
                    public ProjectStageProducer create()
                    {
                        if(customConfiguredProjectStageProducer != null)
                        {
                            return this.customConfiguredProjectStageProducer;
                        }

                        if(specializedCodiProjectStageProducer != null)
                        {
                            return this.specializedCodiProjectStageProducer;
                        }
                        return null;
                    }
                }, defaultProjectStageProducer);

        if (projectStageProducer == null)
        {
            // if we still didn't find a customised ProjectStageProducer,
            // then we take the default one.
            projectStageProducer = defaultProjectStageProducer;
        }
        projectStageProducer.initProjectStage();
    }