X-Git-Url: http://wamblee.org/gitweb/?a=blobdiff_plain;f=test%2Fenterprise%2Fsrc%2Fmain%2Fjava%2Forg%2Fwamblee%2Fsupport%2Fpersistence%2FTransactionProxyFactory.java;h=548a3cdaebc1a8279ebaef779854807387925a99;hb=92a561d54ddba5c5f29ce165cc4841bb92178eef;hp=4e72f4845d4a377b7075f62a11e0b8856b0e6783;hpb=91e83e5fe095e04d411b3999583e3c35f8d03006;p=utils diff --git a/test/enterprise/src/main/java/org/wamblee/support/persistence/TransactionProxyFactory.java b/test/enterprise/src/main/java/org/wamblee/support/persistence/TransactionProxyFactory.java index 4e72f484..548a3cda 100644 --- a/test/enterprise/src/main/java/org/wamblee/support/persistence/TransactionProxyFactory.java +++ b/test/enterprise/src/main/java/org/wamblee/support/persistence/TransactionProxyFactory.java @@ -15,6 +15,7 @@ */ package org.wamblee.support.persistence; + import java.lang.reflect.InvocationHandler; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; @@ -27,10 +28,24 @@ import org.wamblee.support.persistence.JpaBuilder.JpaUnitOfWork; /** * This utility makes sure that each invocation on a certain interface is - * carried out within a JPA unit of work. + * carried out within a JPA unit of work. Note that this is equivalent + * to the sementics of a requiresNew transaction attribute. + * + * Use {@link #getTransactionScopedEntityManager()} to get the transaction + * scoped entity manager to pass to services. * - * Use {@link #getTransactionScopedEntityManager()} to get the transaction scoped - * entity manager to pass to services. + * + * For example: + *
+ * JpaBuilder builder = ... + * TransactionProxyFactory+ * The above example executes the executeMethod() call on the service object within an active transaction. + * In the constructor of the service a transaction scoped entity manager is passed. * * @param T * Type of interface to proxy. @@ -39,6 +54,13 @@ import org.wamblee.support.persistence.JpaBuilder.JpaUnitOfWork; */ public class TransactionProxyFactoryfactory = new TransactionProxyFactory ( + * builder, Service.class); + * Service service = new JpaService(factory.getTransactionScopedEntityManager()); + * Service proxy = factory.getProxy(service); + * proxy.executeMethod(...); + *