Author: sboscarine
Date: 2009-11-23 21:42:50 -0500 (Mon, 23 Nov 2009)
New Revision: 11658
Added:
modules/trunk/transaction/src/main/java/org/seamframework/
modules/trunk/transaction/src/main/java/org/seamframework/tx/
modules/trunk/transaction/src/main/java/org/seamframework/tx/EntityTransactionInterceptor.java
modules/trunk/transaction/src/main/java/org/seamframework/tx/Transactional.java
Log:
initial commit
Added:
modules/trunk/transaction/src/main/java/org/seamframework/tx/EntityTransactionInterceptor.java
===================================================================
---
modules/trunk/transaction/src/main/java/org/seamframework/tx/EntityTransactionInterceptor.java
(rev 0)
+++
modules/trunk/transaction/src/main/java/org/seamframework/tx/EntityTransactionInterceptor.java 2009-11-24
02:42:50 UTC (rev 11658)
@@ -0,0 +1,35 @@
+package org.seamframework.tx;
+
+import javax.enterprise.inject.Any;
+import javax.inject.Inject;
+import javax.interceptor.AroundInvoke;
+import javax.interceptor.Interceptor;
+import javax.interceptor.InvocationContext;
+import javax.persistence.EntityManager;
+
+/**
+ * Declarative JPA EntityTransactions
+ *
+ * @author Gavin King
+ *
+ */
+@Transactional @Interceptor
+public class EntityTransactionInterceptor {
+
+ private @Inject @Any EntityManager em;
+
+ @AroundInvoke
+ public Object aroundInvoke(InvocationContext ic) throws Exception {
+ boolean act = !em.getTransaction().isActive();
+ if (act) em.getTransaction().begin();
+ try {
+ Object result = ic.proceed();
+ if (act) em.getTransaction().commit();
+ return result;
+ }
+ catch (Exception e) {
+ if (act) em.getTransaction().rollback();
+ throw e;
+ }
+ }
+}
\ No newline at end of file
Added: modules/trunk/transaction/src/main/java/org/seamframework/tx/Transactional.java
===================================================================
--- modules/trunk/transaction/src/main/java/org/seamframework/tx/Transactional.java
(rev 0)
+++
modules/trunk/transaction/src/main/java/org/seamframework/tx/Transactional.java 2009-11-24
02:42:50 UTC (rev 11658)
@@ -0,0 +1,17 @@
+package org.seamframework.tx;
+
+import static java.lang.annotation.ElementType.METHOD;
+import static java.lang.annotation.ElementType.TYPE;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+import javax.interceptor.InterceptorBinding;
+
+@Retention(RUNTIME)
+@Target({METHOD, TYPE})
+@Documented
+@InterceptorBinding
+public @interface Transactional {}
\ No newline at end of file
Show replies by date