[maven-release-plugin] copy for tag org.apache.aries.jpa-2.2.0

git-svn-id: http://svn.apache.org/repos/asf/aries/tags/org.apache.aries.jpa-2.2.0@1704790 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/itests/jpa-container-itest-karaf/src/test/java/org/apache/aries/jpa/itest/karaf/AbstractJPAItest.java b/itests/jpa-container-itest-karaf/src/test/java/org/apache/aries/jpa/itest/karaf/AbstractJPAItest.java
index 28723a4..3a5b875 100644
--- a/itests/jpa-container-itest-karaf/src/test/java/org/apache/aries/jpa/itest/karaf/AbstractJPAItest.java
+++ b/itests/jpa-container-itest-karaf/src/test/java/org/apache/aries/jpa/itest/karaf/AbstractJPAItest.java
@@ -150,7 +150,7 @@
             when(localRepo != null).useOptions(vmOption("-Dorg.ops4j.pax.url.mvn.localRepository=" + localRepo)),
             features(paxJdbcFeatureUrl, "pax-jdbc-config", "pax-jdbc-h2", "pax-jdbc-pool-dbcp2"),
             features(enterpriseFeatureUrl, "transaction", "http-whiteboard", "hibernate/4.3.6.Final", "scr"),
-            features(jpaFeatureUrl, "jpa/2.2.0-SNAPSHOT"),
+            features(jpaFeatureUrl, "jpa"),
             mavenBundle("org.apache.aries.jpa.example", "org.apache.aries.jpa.example.tasklist.model").versionAsInProject()
 //            replaceConfigurationFile("etc/org.ops4j.pax.logging.cfg", getConfigFile("/etc/org.ops4j.pax.logging.cfg")),
         );
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 e96a19b..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
@@ -47,4 +47,11 @@
         tx(TransactionType.Required, code);
     }
 
+
+    protected RuntimeException wrapThrowable(Throwable ex, String message) {
+        if (ex instanceof RuntimeException) {
+            return (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 2eb0ed1..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
@@ -25,8 +25,11 @@
 import org.apache.aries.jpa.template.TransactionType;
 import org.osgi.service.coordinator.Coordination;
 import org.osgi.service.coordinator.Coordinator;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 public class ResourceLocalJpaTemplate extends AbstractJpaTemplate {
+    private static final Logger LOGGER = LoggerFactory.getLogger(ResourceLocalJpaTemplate.class);
     private EmSupplier emSupplier;
     private Coordinator coordinator;
 
@@ -59,7 +62,7 @@
             if (weControlTx) {
                 safeRollback(em, e);
             }
-            throw new RuntimeException(e);
+            throw wrapThrowable(e, "Exception occured in transactional code");
         } finally {
             coord.end();
         }
@@ -70,6 +73,7 @@
             try {
                 em.getTransaction().rollback();
             } catch (Exception e1) {
+                LOGGER.warn("Exception during transaction rollback", e1);
             }
         }
     }
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 c89c251..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,15 +62,19 @@
             return result;
         } catch (Throwable ex) {
             safeRollback(tranToken, ex);
-            throw new RuntimeException(ex);
+            if (ex instanceof Error) {
+                throw (Error)ex;
+            }
+            throw wrapThrowable(ex, "Exception occured in transactional code");
         } finally {
             try {
                 ta.finish(tm, tranToken);
-                coord.end();
             } catch (Exception e) {
                 // We are throwing an exception, so we don't error it out
-                LOGGER.debug("exception.during.tx.finish", e);
-                throw new RuntimeException("Exception during finish of transaction", e);
+                LOGGER.debug("Exception during finish of transaction", e);
+                throw wrapThrowable(e, "Exception during finish of transaction");
+            } finally {
+                coord.end();
             }
         }
     }
@@ -88,7 +92,7 @@
         } catch (Exception e) {
             // we do not throw the exception since there already is one, but we
             // need to log it
-            LOGGER.warn("exception.during.tx.cleanup", e);
+            LOGGER.warn("Exception during transaction rollback", e);
         }
     }