public MutablePicoContainer build() { DefaultPicoContainer tempContainer = new TransientPicoContainer(); tempContainer.addComponent(PicoContainer.class, parentContainer); addContainerComponents(tempContainer); ComponentFactory componentFactory; if (injectors.size() == 1) { componentFactory = injectors.get(0); } else if (injectors.size() == 0) { componentFactory = adaptiveDI(); } else { componentFactory = new CompositeInjection(injectors.toArray(new InjectionType[injectors.size()])); } Stack<Object> clonedBehaviors = (Stack< Object >) behaviors.clone(); while (!clonedBehaviors.empty()) { componentFactory = buildComponentFactory(tempContainer, componentFactory, clonedBehaviors); } tempContainer.addComponent(ComponentFactory.class, componentFactory); buildComponentMonitor(tempContainer); if (lifecycle == null) { tempContainer.addComponent(LifecycleStrategy.class, lifecycleClass); } else { tempContainer.addComponent(LifecycleStrategy.class, lifecycle); } tempContainer.addComponent("mpc", mpcClass); MutablePicoContainer newContainer = (MutablePicoContainer) tempContainer.getComponent("mpc"); addChildToParent(newContainer); return newContainer; }
public MutablePicoContainer build() { DefaultPicoContainer tempContainer = new TransientPicoContainer(); tempContainer.addComponent(PicoContainer.class, parentContainer); addContainerComponents(tempContainer); ComponentFactory componentFactory; if (injectors.size() == 1) { componentFactory = injectors.get(0); } else if (injectors.size() == 0) { componentFactory = adaptiveDI(); } else { componentFactory = new CompositeInjection(injectors.toArray(new InjectionType[injectors.size()])); } Stack<Object> clonedBehaviors = (Stack< Object >) behaviors.clone(); while (!clonedBehaviors.empty()) { componentFactory = buildComponentFactory(tempContainer, componentFactory, clonedBehaviors); } tempContainer.addComponent(ComponentFactory.class, componentFactory); buildComponentMonitor(tempContainer); if (lifecycle == null) { tempContainer.addComponent(LifecycleStrategy.class, lifecycleClass); } else { tempContainer.addComponent(LifecycleStrategy.class, lifecycle); } tempContainer.addComponent("mpc", mpcClass); MutablePicoContainer newContainer = (MutablePicoContainer) tempContainer.getComponent("mpc"); addChildToParent(newContainer); return newContainer; }