X-Git-Url: http://wamblee.org/gitweb/?a=blobdiff_plain;f=test%2Fenterprise%2Fsrc%2Fmain%2Fjava%2Forg%2Fwamblee%2Ftest%2Finject%2FJavaEETestInjectorFactory.java;h=fdfb84a782ba71993d92788075515677590274ce;hb=ca6cd90ac2aeca2f61320ac15c2403dde120f3de;hp=c2228b987a9de41c6c2f9ac342df1e6eb1bed5ac;hpb=3176eb654a388bda2eefced0debd6cf698fe5092;p=utils diff --git a/test/enterprise/src/main/java/org/wamblee/test/inject/JavaEETestInjectorFactory.java b/test/enterprise/src/main/java/org/wamblee/test/inject/JavaEETestInjectorFactory.java index c2228b98..fdfb84a7 100644 --- a/test/enterprise/src/main/java/org/wamblee/test/inject/JavaEETestInjectorFactory.java +++ b/test/enterprise/src/main/java/org/wamblee/test/inject/JavaEETestInjectorFactory.java @@ -15,11 +15,15 @@ */ package org.wamblee.test.inject; +import java.util.ArrayList; +import java.util.List; + import javax.persistence.EntityManager; +import javax.persistence.PersistenceContext; import org.wamblee.inject.Injector; -import org.wamblee.inject.InjectorFactory; import org.wamblee.inject.InjectorBuilder; +import org.wamblee.inject.InjectorFactory; import org.wamblee.test.persistence.JpaBuilder; /** @@ -46,26 +50,46 @@ import org.wamblee.test.persistence.JpaBuilder; */ public class JavaEETestInjectorFactory implements InjectorFactory { - private EntityManager entityManager; + private List bindings; private InjectorFactory delegate; /** * Constructs the factory. - * @param aEntityManager Contextual entity manager to inject. * @param aInjectorFactory Injector factory to delegate to. */ - public JavaEETestInjectorFactory(EntityManager aEntityManager, InjectorFactory aInjectorFactory) { - entityManager = aEntityManager; + public JavaEETestInjectorFactory(InjectorFactory aInjectorFactory) { + bindings = new ArrayList(); delegate = aInjectorFactory; } + /** + * Adds default entity manager binding. Any field annotated with @PersistenceContext and of type + * entity manager will get injected. + * @param aEntityManager Entitymanager object to inject. + * @return Factory to allow chaining. + */ + public JavaEETestInjectorFactory addEntityManagerBinding(EntityManager aEntityManager) { + Binding em = new Binding(EntityManager.class, PersistenceContext.class, aEntityManager); + addBinding(em); + return this; + } + + /** + * Adds another custom injection binding. + * @param aBinding Injection binding to use. + * @return the factoryto allow chaining. + */ + public JavaEETestInjectorFactory addBinding(Binding aBinding) { + bindings.add(aBinding); + return this; + } + /** * Constructs the factory with the default injector factory obtained from * {@link InjectorBuilder#getInjector()}. - * @param aEntityManager Contextual entity manager to inject. */ - public JavaEETestInjectorFactory(EntityManager aEntityManager) { - this(aEntityManager, getDefaultInjectorFactory()); + public JavaEETestInjectorFactory() { + this(getDefaultInjectorFactory()); } private static InjectorFactory getDefaultInjectorFactory() { @@ -75,7 +99,7 @@ public class JavaEETestInjectorFactory implements InjectorFactory { @Override public Injector create(Class aClass) { - return new JavaEETestInjector(aClass, entityManager, delegate + return new JavaEETestInjector(aClass, bindings, delegate .create(aClass)); } }