[jboss-svn-commits] JBL Code SVN: r30410 - in labs/jbossesb/branches/JBESB_4_7_CP/product/rosetta: tests/src/org/jboss/soa/esb/message/tests and 1 other directory.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Tue Dec 1 10:02:47 EST 2009
Author: kevin.conner at jboss.com
Date: 2009-12-01 10:02:47 -0500 (Tue, 01 Dec 2009)
New Revision: 30410
Modified:
labs/jbossesb/branches/JBESB_4_7_CP/product/rosetta/src/org/jboss/soa/esb/couriers/FaultMessageException.java
labs/jbossesb/branches/JBESB_4_7_CP/product/rosetta/tests/src/org/jboss/soa/esb/message/tests/FaultUnitTest.java
Log:
Handle embedded message in FaultMessageException: JBESB-3010
Modified: labs/jbossesb/branches/JBESB_4_7_CP/product/rosetta/src/org/jboss/soa/esb/couriers/FaultMessageException.java
===================================================================
--- labs/jbossesb/branches/JBESB_4_7_CP/product/rosetta/src/org/jboss/soa/esb/couriers/FaultMessageException.java 2009-12-01 11:56:20 UTC (rev 30409)
+++ labs/jbossesb/branches/JBESB_4_7_CP/product/rosetta/src/org/jboss/soa/esb/couriers/FaultMessageException.java 2009-12-01 15:02:47 UTC (rev 30410)
@@ -22,8 +22,12 @@
package org.jboss.soa.esb.couriers;
+import java.io.IOException;
+import java.io.ObjectOutputStream;
import java.net.URI;
+import org.apache.log4j.Logger;
+import org.jboss.internal.soa.esb.message.format.MessageSerializer;
import org.jboss.soa.esb.message.Message;
/**
@@ -36,6 +40,8 @@
public class FaultMessageException extends CourierException
{
+ private static final Logger LOGGER = Logger.getLogger(FaultMessageException.class) ;
+
private static final long serialVersionUID = 1L;
/**
@@ -68,10 +74,39 @@
public final Message getReturnedMessage ()
{
+ if ((_msg == null) && (!attemptedDeserialisation))
+ {
+ attemptedDeserialisation = true ;
+ try
+ {
+ _msg = MessageSerializer.deserialize(serialisedForm) ;
+ }
+ catch (final IOException ioe)
+ {
+ LOGGER.warn("Failed to deserialize fault message", ioe) ;
+ }
+ }
return _msg;
}
+
+ /**
+ * Handle the serialisation.
+ * @param stream The object output stream.
+ * @throws IOException For errors during serialisation.
+ */
+ private void writeObject(final ObjectOutputStream stream)
+ throws IOException
+ {
+ if (_msg != null)
+ {
+ serialisedForm = MessageSerializer.serialize(_msg) ;
+ }
+ stream.defaultWriteObject() ;
+ }
+
private URI _code;
- private Message _msg;
-
+ private transient Message _msg;
+ private transient boolean attemptedDeserialisation;
+ private byte[] serialisedForm ;
}
Modified: labs/jbossesb/branches/JBESB_4_7_CP/product/rosetta/tests/src/org/jboss/soa/esb/message/tests/FaultUnitTest.java
===================================================================
--- labs/jbossesb/branches/JBESB_4_7_CP/product/rosetta/tests/src/org/jboss/soa/esb/message/tests/FaultUnitTest.java 2009-12-01 11:56:20 UTC (rev 30409)
+++ labs/jbossesb/branches/JBESB_4_7_CP/product/rosetta/tests/src/org/jboss/soa/esb/message/tests/FaultUnitTest.java 2009-12-01 15:02:47 UTC (rev 30410)
@@ -24,6 +24,7 @@
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
+import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.URI;
@@ -32,6 +33,8 @@
import org.apache.log4j.Logger;
import org.jboss.internal.soa.esb.message.format.serialized.MessageImpl;
+import org.jboss.soa.esb.couriers.FaultMessageException;
+import org.jboss.soa.esb.listeners.message.errors.Factory;
import org.jboss.soa.esb.message.Message;
import org.jboss.soa.esb.message.format.MessageFactory;
import org.jboss.soa.esb.message.format.MessageType;
@@ -118,4 +121,12 @@
}
}
+ public void testSerializableFaultMessageException () throws IOException
+ {
+ final Message message = MessageFactory.getInstance().getMessage(MessageType.JBOSS_XML) ;
+ final FaultMessageException exception = new FaultMessageException("error message", URI.create(Factory.UNEXPECTED_ERROR), message) ;
+ final ByteArrayOutputStream baos = new ByteArrayOutputStream() ;
+ final ObjectOutputStream oos = new ObjectOutputStream(baos) ;
+ oos.writeObject(exception) ;
+ }
}
More information about the jboss-svn-commits
mailing list