dain        2004/04/14 01:57:27

  Modified:    modules/core/src/java/org/openejb/transaction
                        ContainerPolicy.java
  Log:

  The transactionContext must always be set into the ejbInvocation
  
  Revision  Changes    Path
  1.3       +31 -6     
openejb/modules/core/src/java/org/openejb/transaction/ContainerPolicy.java
  
  Index: ContainerPolicy.java
  ===================================================================
  RCS file: 
/home/projects/openejb/scm/openejb/modules/core/src/java/org/openejb/transaction/ContainerPolicy.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- ContainerPolicy.java      3 Apr 2004 22:20:11 -0000       1.2
  +++ ContainerPolicy.java      14 Apr 2004 05:57:27 -0000      1.3
  @@ -123,7 +123,12 @@
           public InvocationResult invoke(Interceptor interceptor, EJBInvocation 
ejbInvocation, TransactionManager txnManager) throws Throwable {
               TransactionContext clientContext = TransactionContext.getContext();
               if (clientContext instanceof InheritableTransactionContext) {
  -                return interceptor.invoke(ejbInvocation);
  +                try {
  +                    ejbInvocation.setTransactionContext(clientContext);
  +                    return interceptor.invoke(ejbInvocation);
  +                } finally {
  +                    ejbInvocation.setTransactionContext(null);
  +                }
               }
   
               if (clientContext != null) {
  @@ -166,7 +171,12 @@
           public InvocationResult invoke(Interceptor interceptor, EJBInvocation 
ejbInvocation, TransactionManager txnManager) throws Throwable {
               TransactionContext clientContext = TransactionContext.getContext();
               if (clientContext != null) {
  -                return interceptor.invoke(ejbInvocation);
  +                try {
  +                    ejbInvocation.setTransactionContext(clientContext);
  +                    return interceptor.invoke(ejbInvocation);
  +                } finally {
  +                    ejbInvocation.setTransactionContext(null);
  +                }
               }
   
               try {
  @@ -243,7 +253,12 @@
           public InvocationResult invoke(Interceptor interceptor, EJBInvocation 
ejbInvocation, TransactionManager txnManager) throws Throwable {
               TransactionContext clientContext = TransactionContext.getContext();
               if (clientContext instanceof InheritableTransactionContext) {
  -                return interceptor.invoke(ejbInvocation);
  +                try {
  +                    ejbInvocation.setTransactionContext(clientContext);
  +                    return interceptor.invoke(ejbInvocation);
  +                } finally {
  +                    ejbInvocation.setTransactionContext(null);
  +                }
               }
   
               if (ejbInvocation.getType().isLocal()) {
  @@ -269,7 +284,12 @@
               }
   
               if (clientContext != null) {
  -                return interceptor.invoke(ejbInvocation);
  +                try {
  +                    ejbInvocation.setTransactionContext(clientContext);
  +                    return interceptor.invoke(ejbInvocation);
  +                } finally {
  +                    ejbInvocation.setTransactionContext(null);
  +                }
               }
   
               try {
  @@ -307,7 +327,12 @@
           public InvocationResult invoke(Interceptor interceptor, EJBInvocation 
ejbInvocation, TransactionManager txnManager) throws Throwable {
               TransactionContext clientContext = TransactionContext.getContext();
               if (clientContext instanceof InheritableTransactionContext) {
  -                return interceptor.invoke(ejbInvocation);
  +                try {
  +                    ejbInvocation.setTransactionContext(clientContext);
  +                    return interceptor.invoke(ejbInvocation);
  +                } finally {
  +                    ejbInvocation.setTransactionContext(null);
  +                }
               }
   
               if (clientContext != null) {
  
  
  

Reply via email to