[ARIES-1415] Adding message to wrapped exceptions, do not wrap Error instances

git-svn-id: https://svn.apache.org/repos/asf/aries/trunk/jpa@1704662 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/jpa-support/src/main/java/org/apache/aries/jpa/support/impl/AbstractJpaTemplate.java b/jpa-support/src/main/java/org/apache/aries/jpa/support/impl/AbstractJpaTemplate.java
index 075ae42..d0b2289 100644
--- a/jpa-support/src/main/java/org/apache/aries/jpa/support/impl/AbstractJpaTemplate.java
+++ b/jpa-support/src/main/java/org/apache/aries/jpa/support/impl/AbstractJpaTemplate.java
@@ -48,10 +48,10 @@
     }
 
 
-    protected RuntimeException wrapThrowable(Throwable ex) {
+    protected RuntimeException wrapThrowable(Throwable ex, String message) {
         if (ex instanceof RuntimeException) {
             return (RuntimeException) ex;
         }
-        return new RuntimeException(ex);
+        return new RuntimeException(message, ex);
     }
 }
diff --git a/jpa-support/src/main/java/org/apache/aries/jpa/support/impl/ResourceLocalJpaTemplate.java b/jpa-support/src/main/java/org/apache/aries/jpa/support/impl/ResourceLocalJpaTemplate.java
index 50ea461..2f68ee3 100644
--- a/jpa-support/src/main/java/org/apache/aries/jpa/support/impl/ResourceLocalJpaTemplate.java
+++ b/jpa-support/src/main/java/org/apache/aries/jpa/support/impl/ResourceLocalJpaTemplate.java
@@ -62,7 +62,7 @@
             if (weControlTx) {
                 safeRollback(em, e);
             }
-            throw wrapThrowable(e);
+            throw wrapThrowable(e, "Exception occured in transactional code");
         } finally {
             coord.end();
         }
diff --git a/jpa-support/src/main/java/org/apache/aries/jpa/support/impl/XAJpaTemplate.java b/jpa-support/src/main/java/org/apache/aries/jpa/support/impl/XAJpaTemplate.java
index 84d6d09..3b478e6 100644
--- a/jpa-support/src/main/java/org/apache/aries/jpa/support/impl/XAJpaTemplate.java
+++ b/jpa-support/src/main/java/org/apache/aries/jpa/support/impl/XAJpaTemplate.java
@@ -62,14 +62,17 @@
             return result;
         } catch (Throwable ex) {
             safeRollback(tranToken, ex);
-            throw wrapThrowable(ex);
+            if (ex instanceof Error) {
+                throw (Error)ex;
+            }
+            throw wrapThrowable(ex, "Exception occured in transactional code");
         } finally {
             try {
                 ta.finish(tm, tranToken);
             } catch (Exception e) {
                 // We are throwing an exception, so we don't error it out
                 LOGGER.debug("Exception during finish of transaction", e);
-                throw new RuntimeException("Exception during finish of transaction", e);
+                throw wrapThrowable(e, "Exception during finish of transaction");
             } finally {
                 coord.end();
             }