org.javers.core.pico.ContainerArgumentResolver Maven / Gradle / Ivy
package org.javers.core.pico;
import org.javers.common.exception.JaversException;
import org.javers.common.exception.JaversExceptionCode;
import org.javers.common.reflection.ArgumentResolver;
import org.picocontainer.PicoContainer;
import org.slf4j.Logger;
import static org.slf4j.LoggerFactory.getLogger;
/**
* @author bartosz walacik
*/
public class ContainerArgumentResolver implements ArgumentResolver {
private static final Logger logger = getLogger(ContainerArgumentResolver.class);
private final PicoContainer container;
public ContainerArgumentResolver(PicoContainer container) {
this.container = container;
}
@Override
public Object resolve(Class argType) {
if (argType == PicoContainer.class){
return container;
}
Object component = container.getComponent(argType);
if (component == null) {
logger.error("failed to get component of type "+argType.getName()+" from Pico container");
throw new JaversException(JaversExceptionCode.COMPONENT_NOT_FOUND, argType.getName());
}
return component;
}
}