package org.testfun.jee.runner.inject; import org.testfun.jee.runner.EjbWithMockitoRunnerException; import org.testfun.jee.runner.SingletonEntityManager; import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; import java.lang.reflect.Field; // Inject an entityManager to @PersistenceContext annotated member variables public class PersistenceContextInjector implements Injector { @Override public <T> void inject(T target, Field field) { if (field.isAnnotationPresent(PersistenceContext.class)) { // Make sure the field is of EntityManager interface Class<?> fieldClass = InjectionUtils.getFieldInterface(target, field); if (!EntityManager.class.equals(fieldClass)) { throw new EjbWithMockitoRunnerException(InjectionUtils.getFieldDescription(field, target) + " is annotated with PersistenceContext but isn't EntityManager"); } // Assign the EntityManager to the field InjectionUtils.assignObjectToField(target, field, SingletonEntityManager.getInstance()); } } @Override public void reset() { } }