package cuke4duke.internal.jvmclass; import cuke4duke.StepMother; import org.picocontainer.MutablePicoContainer; import org.picocontainer.PicoBuilder; import java.util.ArrayList; import java.util.List; import java.lang.reflect.Modifier; public class PicoFactory implements ObjectFactory { private MutablePicoContainer pico; private final List<Class<?>> classes = new ArrayList<Class<?>>(); private final List<Object> instances = new ArrayList<Object>(); public void createObjects() { pico = new PicoBuilder().withCaching().build(); for (Class<?> clazz : classes) { pico.addComponent(clazz); } for (Object instance : instances) { pico.addComponent(instance); } pico.start(); } public void disposeObjects() { pico.stop(); pico.dispose(); } public boolean canHandle(Class<?> clazz) { return true; } public void addClass(Class<?> clazz) { classes.add(clazz); } public void addStepMother(StepMother instance) { instances.add(instance); } public <T> T getComponent(Class<T> type) { return pico.getComponent(type); } public List<Class<?>> getClasses() { return classes; } }