You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by rm...@apache.org on 2013/04/25 09:46:21 UTC

svn commit: r1475656 - in /tomee/tomee/trunk/container/openejb-core/src: main/java/org/apache/openejb/core/transaction/TransactionRolledbackException.java test/java/org/apache/openejb/transaction/SerializationOfTransactionRolledBackExceptionTest.java

Author: rmannibucau
Date: Thu Apr 25 07:46:20 2013
New Revision: 1475656

URL: http://svn.apache.org/r1475656
Log:
OPENEJB-2015 providing basic info on remote exception caused by a TransactionRolledbackException

Added:
    tomee/tomee/trunk/container/openejb-core/src/test/java/org/apache/openejb/transaction/SerializationOfTransactionRolledBackExceptionTest.java
Modified:
    tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/core/transaction/TransactionRolledbackException.java

Modified: tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/core/transaction/TransactionRolledbackException.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/core/transaction/TransactionRolledbackException.java?rev=1475656&r1=1475655&r2=1475656&view=diff
==============================================================================
--- tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/core/transaction/TransactionRolledbackException.java (original)
+++ tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/core/transaction/TransactionRolledbackException.java Thu Apr 25 07:46:20 2013
@@ -16,8 +16,13 @@
  */
 package org.apache.openejb.core.transaction;
 
+import org.apache.openejb.core.ivm.IntraVmArtifact;
+
+import java.io.ByteArrayOutputStream;
+import java.io.ObjectStreamException;
 import java.io.PrintStream;
 import java.io.PrintWriter;
+import java.io.StringWriter;
 
 /**
  * Subclass of javax.transaction.TransactionRolledbackException which adds init cause to the exception.
@@ -199,4 +204,10 @@ public class TransactionRolledbackExcept
         }
         return cause;
     }
+
+    protected Object writeReplace() throws ObjectStreamException {
+        final ByteArrayOutputStream baos = new ByteArrayOutputStream();
+        printStackTrace(new PrintStream(baos));
+        return new javax.transaction.TransactionRolledbackException(getMessage() + "\n\t" + new String(baos.toByteArray()));
+    }
 }

Added: tomee/tomee/trunk/container/openejb-core/src/test/java/org/apache/openejb/transaction/SerializationOfTransactionRolledBackExceptionTest.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/test/java/org/apache/openejb/transaction/SerializationOfTransactionRolledBackExceptionTest.java?rev=1475656&view=auto
==============================================================================
--- tomee/tomee/trunk/container/openejb-core/src/test/java/org/apache/openejb/transaction/SerializationOfTransactionRolledBackExceptionTest.java (added)
+++ tomee/tomee/trunk/container/openejb-core/src/test/java/org/apache/openejb/transaction/SerializationOfTransactionRolledBackExceptionTest.java Thu Apr 25 07:46:20 2013
@@ -0,0 +1,63 @@
+/*
+ * Copyright (c) 1996, 2003, Oracle and/or its affiliates. All rights reserved.
+ * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ */
+package org.apache.openejb.transaction;
+
+import org.junit.Test;
+
+import javax.transaction.TransactionRolledbackException;
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+
+import static org.hamcrest.CoreMatchers.containsString;
+import static org.hamcrest.CoreMatchers.instanceOf;
+import static org.hamcrest.CoreMatchers.not;
+import static org.junit.Assert.assertThat;
+
+public class SerializationOfTransactionRolledBackExceptionTest {
+    @Test
+    public void test() throws Exception {
+        final Exception exception = Exception.class.cast(deserialize(serialize(new org.apache.openejb.core.transaction.TransactionRolledbackException("foo", new NullPointerException()))));
+        assertThat(exception, instanceOf(TransactionRolledbackException.class));
+        assertThat(exception, not(instanceOf(org.apache.openejb.core.transaction.TransactionRolledbackException.class)));
+        assertThat(exception.getMessage(), containsString("foo"));
+        assertThat(exception.getMessage(), containsString("NullPointerException"));
+        exception.printStackTrace();
+    }
+
+    private static Object deserialize(final byte[] serial) throws Exception {
+        final ByteArrayInputStream bais = new ByteArrayInputStream(serial);
+        final ObjectInputStream ois = new ObjectInputStream(bais);
+        return ois.readObject();
+    }
+
+    private static byte[] serialize(final Object data) throws Exception {
+        final ByteArrayOutputStream baos = new ByteArrayOutputStream();
+        final ObjectOutputStream oos = new ObjectOutputStream(baos);
+        oos.writeObject(data);
+        return baos.toByteArray();
+    }
+}