[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