You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@aries.apache.org by cs...@apache.org on 2015/09/20 12:01:34 UTC
svn commit: r1704115 - in /aries/trunk/jpa/jpa-support/src:
main/java/org/apache/aries/jpa/support/osgi/impl/EmProxy.java
test/java/org/apache/aries/jpa/support/osgi/impl/EmfTrackerTest.java
Author: cschneider
Date: Sun Sep 20 10:01:33 2015
New Revision: 1704115
URL: http://svn.apache.org/viewvc?rev=1704115&view=rev
Log:
[ARIES-1412] unwrap InvocationTargetException
Modified:
aries/trunk/jpa/jpa-support/src/main/java/org/apache/aries/jpa/support/osgi/impl/EmProxy.java
aries/trunk/jpa/jpa-support/src/test/java/org/apache/aries/jpa/support/osgi/impl/EmfTrackerTest.java
Modified: aries/trunk/jpa/jpa-support/src/main/java/org/apache/aries/jpa/support/osgi/impl/EmProxy.java
URL: http://svn.apache.org/viewvc/aries/trunk/jpa/jpa-support/src/main/java/org/apache/aries/jpa/support/osgi/impl/EmProxy.java?rev=1704115&r1=1704114&r2=1704115&view=diff
==============================================================================
--- aries/trunk/jpa/jpa-support/src/main/java/org/apache/aries/jpa/support/osgi/impl/EmProxy.java (original)
+++ aries/trunk/jpa/jpa-support/src/main/java/org/apache/aries/jpa/support/osgi/impl/EmProxy.java Sun Sep 20 10:01:33 2015
@@ -19,6 +19,7 @@
package org.apache.aries.jpa.support.osgi.impl;
import java.lang.reflect.InvocationHandler;
+import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import javax.persistence.EntityManager;
@@ -38,7 +39,12 @@ public class EmProxy implements Invocati
if (em == null) {
throw new IllegalStateException("EntityManager not available. Make sure you run in an @Transactional method");
}
- return method.invoke(em, args);
+ try {
+ return method.invoke(em, args);
+ } catch (InvocationTargetException ex) {
+ InvocationTargetException iex = (InvocationTargetException)ex;
+ throw iex.getTargetException();
+ }
}
}
Modified: aries/trunk/jpa/jpa-support/src/test/java/org/apache/aries/jpa/support/osgi/impl/EmfTrackerTest.java
URL: http://svn.apache.org/viewvc/aries/trunk/jpa/jpa-support/src/test/java/org/apache/aries/jpa/support/osgi/impl/EmfTrackerTest.java?rev=1704115&r1=1704114&r2=1704115&view=diff
==============================================================================
--- aries/trunk/jpa/jpa-support/src/test/java/org/apache/aries/jpa/support/osgi/impl/EmfTrackerTest.java (original)
+++ aries/trunk/jpa/jpa-support/src/test/java/org/apache/aries/jpa/support/osgi/impl/EmfTrackerTest.java Sun Sep 20 10:01:33 2015
@@ -23,12 +23,16 @@ import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import static org.mockito.Mockito.any;
+import static org.mockito.Mockito.doThrow;
import java.util.Dictionary;
+import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
+import javax.persistence.PersistenceException;
import javax.persistence.spi.PersistenceUnitTransactionType;
+import org.apache.aries.jpa.supplier.EmSupplier;
import org.apache.aries.jpa.support.osgi.impl.EMFTracker;
import org.apache.aries.jpa.support.osgi.impl.EMFTracker.TrackedEmf;
import org.junit.Assert;
@@ -76,4 +80,15 @@ public class EmfTrackerTest {
verify(emProxyReg, times(1)).unregister();
verify(puContext, times(1)).ungetService(ref);
}
+
+ @Test(expected=PersistenceException.class)
+ public void testOriginalExceptionThrown() {
+ EmSupplier emSupplier = mock(EmSupplier.class);
+ EntityManager em = mock(EntityManager.class);
+ when(emSupplier.get()).thenReturn(em);
+ doThrow(new PersistenceException("Message")).when(em).flush();
+
+ EntityManager emProxy = EMFTracker.createProxy(emSupplier);
+ emProxy.flush();
+ }
}