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();
+ }
+}