You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@deltaspike.apache.org by gp...@apache.org on 2012/08/04 16:21:43 UTC
[1/2] git commit: DELTASPIKE-256 support a custom transaction-timeout
(first step)
Updated Branches:
refs/heads/master b8bafcf7e -> b553192c9
DELTASPIKE-256 support a custom transaction-timeout (first step)
Project: http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/commit/b553192c
Tree: http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/tree/b553192c
Diff: http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/diff/b553192c
Branch: refs/heads/master
Commit: b553192c97f755e5c41a626f13a642b87c1666c2
Parents: 4b38f5e
Author: gpetracek <gp...@apache.org>
Authored: Sat Aug 4 15:58:12 2012 +0200
Committer: gpetracek <gp...@apache.org>
Committed: Sat Aug 4 16:16:27 2012 +0200
----------------------------------------------------------------------
.../BeanManagedUserTransactionStrategy.java | 39 ++++++++++++++-
.../EnvironmentAwareTransactionStrategy.java | 4 ++
2 files changed, 42 insertions(+), 1 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/blob/b553192c/deltaspike/modules/jpa/impl/src/main/java/org/apache/deltaspike/jpa/impl/transaction/BeanManagedUserTransactionStrategy.java
----------------------------------------------------------------------
diff --git a/deltaspike/modules/jpa/impl/src/main/java/org/apache/deltaspike/jpa/impl/transaction/BeanManagedUserTransactionStrategy.java b/deltaspike/modules/jpa/impl/src/main/java/org/apache/deltaspike/jpa/impl/transaction/BeanManagedUserTransactionStrategy.java
index 1aa27b1..91b3d7d 100644
--- a/deltaspike/modules/jpa/impl/src/main/java/org/apache/deltaspike/jpa/impl/transaction/BeanManagedUserTransactionStrategy.java
+++ b/deltaspike/modules/jpa/impl/src/main/java/org/apache/deltaspike/jpa/impl/transaction/BeanManagedUserTransactionStrategy.java
@@ -31,6 +31,8 @@ import javax.transaction.Status;
import javax.transaction.SystemException;
import javax.transaction.UserTransaction;
import java.lang.annotation.Annotation;
+import java.util.logging.Level;
+import java.util.logging.Logger;
/**
* <p>{@link org.apache.deltaspike.jpa.spi.TransactionStrategy} for using JTA (bean-managed-)transactions
@@ -48,13 +50,43 @@ public class BeanManagedUserTransactionStrategy extends ResourceLocalTransaction
private static final long serialVersionUID = -2432802805095533499L;
+ private static final Logger LOGGER = Logger.getLogger(BeanManagedUserTransactionStrategy.class.getName());
+
@Override
protected EntityManagerEntry createEntityManagerEntry(
EntityManager entityManager, Class<? extends Annotation> qualifier)
{
+ applyTransactionTimeout(); //needs to be done before UserTransaction#begin - TODO move this call
return new JtaAwareEntityManagerEntry(entityManager, qualifier);
}
+ protected void applyTransactionTimeout()
+ {
+ Integer transactionTimeout = getDefaultTransactionTimeoutInSeconds();
+
+ if (transactionTimeout == null)
+ {
+ //the default configured for the container will be used
+ return;
+ }
+
+ try
+ {
+ UserTransaction userTransaction = resolveUserTransaction();
+ userTransaction.setTransactionTimeout(transactionTimeout);
+ }
+ catch (SystemException e)
+ {
+ LOGGER.log(Level.WARNING, "UserTransaction#setTransactionTimeout failed", e);
+ }
+ }
+
+ protected Integer getDefaultTransactionTimeoutInSeconds()
+ {
+ //override it and provide a custom value - if needed - TODO discuss a type-safe module-config for DELTASPIKE-256
+ return null;
+ }
+
@Override
protected EntityTransaction getTransaction(EntityManagerEntry entityManagerEntry)
{
@@ -88,6 +120,11 @@ public class BeanManagedUserTransactionStrategy extends ResourceLocalTransaction
entityManagerEntry.getEntityManager().joinTransaction();
}
+ protected UserTransaction resolveUserTransaction()
+ {
+ return JndiUtils.lookup(USER_TRANSACTION_JNDI_NAME, UserTransaction.class);
+ }
+
private class UserTransactionAdapter implements EntityTransaction
{
private final UserTransaction userTransaction;
@@ -95,7 +132,7 @@ public class BeanManagedUserTransactionStrategy extends ResourceLocalTransaction
public UserTransactionAdapter(EntityManager entityManager)
{
- this.userTransaction = JndiUtils.lookup(USER_TRANSACTION_JNDI_NAME, UserTransaction.class);
+ this.userTransaction = resolveUserTransaction();
this.entityManager = entityManager;
}
http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/blob/b553192c/deltaspike/modules/jpa/impl/src/main/java/org/apache/deltaspike/jpa/impl/transaction/EnvironmentAwareTransactionStrategy.java
----------------------------------------------------------------------
diff --git a/deltaspike/modules/jpa/impl/src/main/java/org/apache/deltaspike/jpa/impl/transaction/EnvironmentAwareTransactionStrategy.java b/deltaspike/modules/jpa/impl/src/main/java/org/apache/deltaspike/jpa/impl/transaction/EnvironmentAwareTransactionStrategy.java
index 7c83fee..6fdf1fc 100644
--- a/deltaspike/modules/jpa/impl/src/main/java/org/apache/deltaspike/jpa/impl/transaction/EnvironmentAwareTransactionStrategy.java
+++ b/deltaspike/modules/jpa/impl/src/main/java/org/apache/deltaspike/jpa/impl/transaction/EnvironmentAwareTransactionStrategy.java
@@ -91,6 +91,10 @@ public class EnvironmentAwareTransactionStrategy extends SimpleEnvironmentAwareT
"you could also use the default strategy " + ResourceLocalTransactionStrategy.class.getName());
}
+ if (isTransactionTypeJta)
+ {
+ applyTransactionTimeout(); //needs to be done before UserTransaction#begin - TODO move this call
+ }
return new JtaAwareEntityManagerEntry(entityManager, qualifier, isTransactionTypeJta);
}