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=a1ab1a2e44c95cc10ad4c4d15420b49e3744d93b;hp=b36dfbf8675243dc09cc3e4aa222a2b1c65b8bc8;hpb=8e6201ee8a948b120540f6306c6c9b85bed8ce95;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 b36dfbf8..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.InjectorBuilder; import org.wamblee.inject.InjectorFactory; -import org.wamblee.inject.InjectorFactoryBuilder; import org.wamblee.test.persistence.JpaBuilder; /** @@ -38,7 +42,7 @@ import org.wamblee.test.persistence.JpaBuilder; * *

* To use it, construct the factory using one of the available constructors and set - * {@link InjectorFactoryBuilder#setInjectorFactory(InjectorFactory)). + * InjectorBuilder.setInjectorFactory(InjectorFactory). *

* * @author Erik Brakkee @@ -46,36 +50,56 @@ 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 InjectorFactoryBuilder#getInjector()}. - * @param aEntityManager Contextual entity manager to inject. + * {@link InjectorBuilder#getInjector()}. */ - public JavaEETestInjectorFactory(EntityManager aEntityManager) { - this(aEntityManager, getDefaultInjectorFactory()); + public JavaEETestInjectorFactory() { + this(getDefaultInjectorFactory()); } private static InjectorFactory getDefaultInjectorFactory() { - InjectorFactoryBuilder.setInjectorFactory(null); - return InjectorFactoryBuilder.getInjectorFactory(); + InjectorBuilder.setInjectorFactory(null); + return InjectorBuilder.getInjectorFactory(); } @Override public Injector create(Class aClass) { - return new JavaEETestInjector(aClass, entityManager, delegate + return new JavaEETestInjector(aClass, bindings, delegate .create(aClass)); } }