package org.needle4j.mock;
import java.lang.reflect.Field;
import java.util.List;
import org.needle4j.NeedleContext;
import org.needle4j.annotation.Mock;
import org.needle4j.injection.InjectionConfiguration;
import org.needle4j.processor.AbstractNeedleProcessor;
import org.needle4j.reflection.ReflectionUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class MockAnnotationProcessor extends AbstractNeedleProcessor {
private static final Logger LOG = LoggerFactory.getLogger(MockAnnotationProcessor.class);
private final MockProvider mockProvider;
public MockAnnotationProcessor(final InjectionConfiguration configuration) {
super(configuration);
mockProvider = configuration.getMockProvider();
}
@Override
public void process(final NeedleContext context) {
final List<Field> fields = context.getAnnotatedTestcaseFields(Mock.class);
for (Field field : fields) {
Object mock = mockProvider.createMockComponent(field.getType());
try {
ReflectionUtil.setField(field, context.getTest(), mock);
} catch (Exception e) {
LOG.warn("could not assign mock obejct " + mock, e);
}
}
}
}