You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openjpa.apache.org by aw...@apache.org on 2007/01/03 01:49:00 UTC

svn commit: r491994 - in /incubator/openjpa/trunk: openjpa-kernel/src/main/java/org/apache/openjpa/kernel/BrokerImpl.java openjpa-persistence/src/main/java/org/apache/openjpa/persistence/PersistenceExceptions.java

Author: awhite
Date: Tue Jan  2 16:48:59 2007
New Revision: 491994

URL: http://svn.apache.org/viewvc?view=rev&rev=491994
Log:
Exception translation when a managed transaction completion even causes an 
error.


Modified:
    incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/BrokerImpl.java
    incubator/openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/PersistenceExceptions.java

Modified: incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/BrokerImpl.java
URL: http://svn.apache.org/viewvc/incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/BrokerImpl.java?view=diff&rev=491994&r1=491993&r2=491994
==============================================================================
--- incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/BrokerImpl.java (original)
+++ incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/BrokerImpl.java Tue Jan  2 16:48:59 2007
@@ -1757,11 +1757,11 @@
         } catch (OpenJPAException ke) {
             if (_log.isTraceEnabled())
                 _log.trace(_loc.get("end-trans-error"), ke);
-            throw ke;
+            throw translateManagedCompletionException(ke);
         } catch (RuntimeException re) {
             if (_log.isTraceEnabled())
                 _log.trace(_loc.get("end-trans-error"), re);
-            throw new StoreException(re);
+            throw translateManagedCompletionException(new StoreException(re));
         } finally {
             endOperation();
         }
@@ -1789,11 +1789,11 @@
         } catch (OpenJPAException ke) {
             if (_log.isTraceEnabled())
                 _log.trace(_loc.get("end-trans-error"), ke);
-            throw ke;
+            throw translateManagedCompletionException(ke);
         } catch (RuntimeException re) {
             if (_log.isTraceEnabled())
                 _log.trace(_loc.get("end-trans-error"), re);
-            throw new StoreException(re);
+            throw translateManagedCompletionException(new StoreException(re));
         } finally {
             _flags &= ~FLAG_ACTIVE;
             _flags &= ~FLAG_FLUSHED;
@@ -1811,6 +1811,15 @@
 
             endOperation();
         }
+    }
+
+    /**
+     * If we're in a managed transaction, use our implicit behavior exception
+     * translator to translate before/afterCompletion callback errors.
+     */
+    private RuntimeException translateManagedCompletionException
+        (RuntimeException re) {
+        return (!_managed || _extrans == null) ? re : _extrans.translate(re);
     }
 
     /**

Modified: incubator/openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/PersistenceExceptions.java
URL: http://svn.apache.org/viewvc/incubator/openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/PersistenceExceptions.java?view=diff&rev=491994&r1=491993&r2=491994
==============================================================================
--- incubator/openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/PersistenceExceptions.java (original)
+++ incubator/openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/PersistenceExceptions.java Tue Jan  2 16:48:59 2007
@@ -48,7 +48,7 @@
      * and {@link NonUniqueResultException} in accordance with
      * section 3.7 of the EJB 3.0 specification.
      */
-    static RuntimeExceptionTranslator getRollbackTranslator
+    public static RuntimeExceptionTranslator getRollbackTranslator
         (final OpenJPAEntityManager em) {
         return new RuntimeExceptionTranslator() {
             private boolean throwing = false;