![JAR search and dependency download from the Maven repository](/logo.png)
bdi.junit.PicoContainer Maven / Gradle / Ivy
package bdi.junit;
import org.picocontainer.MutablePicoContainer;
import org.picocontainer.PicoBuilder;
import java.lang.reflect.Constructor;
import java.util.HashSet;
import java.util.Set;
/**
* @author @aloyer
*/
public class PicoContainer {
private MutablePicoContainer pico;
private final Set> classes = new HashSet<>();
public MutablePicoContainer underlying() {
return pico;
}
public void start() {
pico = new PicoBuilder().withCaching().build();
classes.forEach(pico::addComponent);
pico.start();
}
public void stop() {
pico.stop();
pico.dispose();
}
public void addClass(Class> clazz) {
if (classes.add(clazz)) {
addConstructorDependencies(clazz);
}
}
public T getInstance(Class type) {
return pico.getComponent(type);
}
private void addConstructorDependencies(Class> clazz) {
for (Constructor constructor : clazz.getConstructors()) {
for (Class paramClazz : constructor.getParameterTypes()) {
addClass(paramClazz);
}
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy