package org.needle4j.injection;
import java.lang.annotation.Annotation;
public class DefaultMockInjectionProvider implements InjectionProvider<Object> {
private final Class<?> annotationClass;
private final InjectionConfiguration injectionConfiguration;
/**
*
* @param annotationClass
* injection annotation like Resource, EJB, Inject, ...
* @param injectionConfiguration the configuration
*/
public DefaultMockInjectionProvider(final Class<?> annotationClass,
final InjectionConfiguration injectionConfiguration) {
this.annotationClass = annotationClass;
this.injectionConfiguration = injectionConfiguration;
}
@Override
public Object getInjectedObject(final Class<?> type) {
return injectionConfiguration.getMockProvider().createMockComponent(type);
}
@SuppressWarnings("unchecked")
@Override
public boolean verify(final InjectionTargetInformation injectionTargetInformation) {
return (injectionTargetInformation.getType() == annotationClass || (annotationClass.isAnnotation() && injectionTargetInformation
.isAnnotationPresent((Class<? extends Annotation>) annotationClass)));
}
protected Class<?> getType() {
return annotationClass;
}
@Override
public Object getKey(final InjectionTargetInformation injectionTargetInformation) {
return injectionTargetInformation.getType();
}
protected InjectionConfiguration getInjectionConfiguration() {
return injectionConfiguration;
}
}