[jboss-svn-commits] JBL Code SVN: r12163 - in labs/jbossesb/trunk/product: core/rosetta/src/org/jboss/internal/soa/esb/message/format/serialized and 5 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Sat May 26 14:36:47 EDT 2007


Author: mark.little at jboss.com
Date: 2007-05-26 14:36:47 -0400 (Sat, 26 May 2007)
New Revision: 12163

Modified:
   labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/actions/SystemPrintln.java
   labs/jbossesb/trunk/product/core/rosetta/src/org/jboss/internal/soa/esb/message/format/serialized/AttachmentImpl.java
   labs/jbossesb/trunk/product/core/rosetta/src/org/jboss/internal/soa/esb/message/format/serialized/BodyImpl.java
   labs/jbossesb/trunk/product/core/rosetta/src/org/jboss/internal/soa/esb/message/format/serialized/ContextImpl.java
   labs/jbossesb/trunk/product/core/rosetta/src/org/jboss/internal/soa/esb/message/format/serialized/FaultImpl.java
   labs/jbossesb/trunk/product/core/rosetta/src/org/jboss/internal/soa/esb/message/format/serialized/HeaderImpl.java
   labs/jbossesb/trunk/product/core/rosetta/src/org/jboss/internal/soa/esb/message/format/serialized/MessageImpl.java
   labs/jbossesb/trunk/product/core/rosetta/src/org/jboss/internal/soa/esb/message/format/serialized/PropertiesImpl.java
   labs/jbossesb/trunk/product/core/rosetta/src/org/jboss/internal/soa/esb/message/format/xml/AttachmentImpl.java
   labs/jbossesb/trunk/product/core/rosetta/src/org/jboss/internal/soa/esb/message/format/xml/BodyImpl.java
   labs/jbossesb/trunk/product/core/rosetta/src/org/jboss/internal/soa/esb/message/format/xml/ContextImpl.java
   labs/jbossesb/trunk/product/core/rosetta/src/org/jboss/internal/soa/esb/message/format/xml/FaultImpl.java
   labs/jbossesb/trunk/product/core/rosetta/src/org/jboss/internal/soa/esb/message/format/xml/HeaderImpl.java
   labs/jbossesb/trunk/product/core/rosetta/src/org/jboss/internal/soa/esb/message/format/xml/MessageImpl.java
   labs/jbossesb/trunk/product/core/rosetta/src/org/jboss/internal/soa/esb/message/format/xml/PropertiesImpl.java
   labs/jbossesb/trunk/product/core/rosetta/src/org/jboss/soa/esb/addressing/Call.java
   labs/jbossesb/trunk/product/core/rosetta/src/org/jboss/soa/esb/util/Util.java
   labs/jbossesb/trunk/product/core/rosetta/tests/src/org/jboss/soa/esb/message/tests/MessageUnitTest.java
   labs/jbossesb/trunk/product/docs/MessageActionGuide.odt
Log:
http://jira.jboss.com/jira/browse/JBESB-538

Modified: labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/actions/SystemPrintln.java
===================================================================
--- labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/actions/SystemPrintln.java	2007-05-26 17:53:41 UTC (rev 12162)
+++ labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/actions/SystemPrintln.java	2007-05-26 18:36:47 UTC (rev 12163)
@@ -19,17 +19,11 @@
  */
 package org.jboss.soa.esb.actions;
 
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
+import java.io.PrintStream;
 
-import javax.xml.transform.OutputKeys;
-import javax.xml.transform.Transformer;
-import javax.xml.transform.TransformerFactory;
-import javax.xml.transform.stream.StreamResult;
-import javax.xml.transform.stream.StreamSource;
-
 import org.jboss.soa.esb.helpers.ConfigTree;
 import org.jboss.soa.esb.message.Message;
+import org.jboss.soa.esb.util.Util;
 
 /**
  * Simple action that prints out the message contents using System.println.
@@ -38,9 +32,10 @@
  */
 public class SystemPrintln extends AbstractActionPipelineProcessor
 {
-
-	private String printlnMessage;
-
+	public static final String PRE_MESSAGE = "message";
+	public static final String FULL_MESSAGE = "printfull";
+	public static final String PRINT_STREAM = "outputstream";
+	
 	/**
 	 * Public constructor.
 	 * 
@@ -49,8 +44,11 @@
 	 */
 	public SystemPrintln(ConfigTree config)
 	{
-		printlnMessage = config.getAttribute("message",
+		printlnMessage = config.getAttribute(PRE_MESSAGE,
 				"** 'message' attribute not set **");
+		
+		printFullMessage = (config.getAttribute(FULL_MESSAGE, "false").equalsIgnoreCase("true") ? true : false);
+		useOutputStream = (config.getAttribute(PRINT_STREAM, "true").equals("true") ? true : false);
 	}
 
 	/*
@@ -61,68 +59,43 @@
 	public Message process(Message message) throws ActionProcessingException
 	{
 		Object messageObject = ActionUtils.getTaskObject(message);
-
+		PrintStream stream = (useOutputStream ? System.out : System.err);
+		
 		System.out.println(printlnMessage + ": ");
-		if (messageObject instanceof byte[])
+		
+		if (printFullMessage && (message != null))
 		{
-			System.out.println("[" + format(new String((byte[]) messageObject))
-					+ "].");
+			// the message should be responsible for converting itself to a string.
+			
+			stream.println("[ "+message.toString()+" ]");
 		}
 		else
 		{
-			if (messageObject != null)
-				System.out.println("[" + format(messageObject.toString())
-						+ "].");
-			for (int i = 0; i < message.getAttachment().getUnnamedCount(); i++)
+			if (messageObject instanceof byte[])
 			{
-				Message attachedMessage = (Message) message.getAttachment()
-						.itemAt(i);
-				System.out.println("attachment " + i + ": ["
-						+ new String(attachedMessage.getBody().getByteArray())
+				stream.println("[" + Util.format(new String((byte[]) messageObject))
 						+ "].");
 			}
+			else
+			{
+				if (messageObject != null)
+					stream.println("[" + Util.format(messageObject.toString())
+							+ "].");
+				for (int i = 0; i < message.getAttachment().getUnnamedCount(); i++)
+				{
+					Message attachedMessage = (Message) message.getAttachment()
+							.itemAt(i);
+					stream.println("attachment " + i + ": ["
+							+ new String(attachedMessage.getBody().getByteArray())
+							+ "].");
+				}
+			}
 		}
 
 		return message;
 	}
 
-	private static TransformerFactory factory = TransformerFactory
-			.newInstance();
-
-	/**
-	 * Attempt to format the output.
-	 * 
-	 * @param output
-	 *            Output to be formatted.
-	 * @return Output.
-	 */
-	private String format(String output)
-	{
-		StreamSource source = new StreamSource(new ByteArrayInputStream(output
-				.getBytes()));
-		ByteArrayOutputStream outStream = new ByteArrayOutputStream();
-
-		try
-		{
-			Transformer transformer;
-
-			// There's a bug in Java 5 re this code (formatting).
-			// See http://forum.java.sun.com/thread.jspa?threadID=562510&start=0
-			// and it explains the
-			// whys of the following code.
-			transformer = factory.newTransformer();
-			transformer.setOutputProperty(OutputKeys.INDENT, "yes");
-			transformer.setOutputProperty(
-					"{http://xml.apache.org/xalan}indent-amount", "4");
-			transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION,
-					"yes");
-			transformer.transform(source, new StreamResult(outStream));
-
-			return outStream.toString();
-		}
-		catch (Exception e)
-		{
-			return output;
-		}
-	}
+	private String printlnMessage;
+	private boolean printFullMessage;
+	private boolean useOutputStream;
 }

Modified: labs/jbossesb/trunk/product/core/rosetta/src/org/jboss/internal/soa/esb/message/format/serialized/AttachmentImpl.java
===================================================================
--- labs/jbossesb/trunk/product/core/rosetta/src/org/jboss/internal/soa/esb/message/format/serialized/AttachmentImpl.java	2007-05-26 17:53:41 UTC (rev 12162)
+++ labs/jbossesb/trunk/product/core/rosetta/src/org/jboss/internal/soa/esb/message/format/serialized/AttachmentImpl.java	2007-05-26 18:36:47 UTC (rev 12163)
@@ -98,15 +98,18 @@
 	{
 		return _table.size();
 	}
+	
 	public int getUnnamedCount() 
 	{
 		return _list.size();
 	}
+	
 	public String toString() 
-	{ return new StringBuilder()
-		.append("Attachment - Named:").append(_table.toString())
-		.append(" Unnamed:").append(_list.toString())
-		.toString();
+	{ 
+		return new StringBuilder()
+		.append("attachments: [ Named:").append(_table.toString())
+		.append(", Unnamed:").append(_list.toString())
+		.toString()+" ]";
 	}
 	
 	@Override

Modified: labs/jbossesb/trunk/product/core/rosetta/src/org/jboss/internal/soa/esb/message/format/serialized/BodyImpl.java
===================================================================
--- labs/jbossesb/trunk/product/core/rosetta/src/org/jboss/internal/soa/esb/message/format/serialized/BodyImpl.java	2007-05-26 17:53:41 UTC (rev 12162)
+++ labs/jbossesb/trunk/product/core/rosetta/src/org/jboss/internal/soa/esb/message/format/serialized/BodyImpl.java	2007-05-26 18:36:47 UTC (rev 12163)
@@ -5,6 +5,7 @@
 import java.util.Set;
 
 import org.jboss.soa.esb.message.Body;
+import org.jboss.soa.esb.util.Util;
 
 /*
  * JBoss, Home of Professional Open Source
@@ -153,6 +154,24 @@
 		}
 	}
 	
+	public String toString ()
+	{
+		String toReturn = "body: [ ";
+		
+		if (_content != null)
+			toReturn += "byte[]: "+Util.format(new String(_content));
+		
+		if (_objects != null)
+		{
+			if (_content != null)
+				toReturn += ", ";
+			
+			toReturn += "objects: "+_objects.toString();
+		}
+		
+		return toReturn+" ]";
+	}
+	
 	private byte[] _content;
 	private Hashtable<String, Serializable> _objects;
 	

Modified: labs/jbossesb/trunk/product/core/rosetta/src/org/jboss/internal/soa/esb/message/format/serialized/ContextImpl.java
===================================================================
--- labs/jbossesb/trunk/product/core/rosetta/src/org/jboss/internal/soa/esb/message/format/serialized/ContextImpl.java	2007-05-26 17:53:41 UTC (rev 12162)
+++ labs/jbossesb/trunk/product/core/rosetta/src/org/jboss/internal/soa/esb/message/format/serialized/ContextImpl.java	2007-05-26 18:36:47 UTC (rev 12163)
@@ -26,4 +26,9 @@
 public class ContextImpl implements Context, java.io.Serializable
 {
 	private static final long serialVersionUID = 0x0;
+	
+	public String toString ()
+	{
+		return "context: [ null ]";
+	}
 }
\ No newline at end of file

Modified: labs/jbossesb/trunk/product/core/rosetta/src/org/jboss/internal/soa/esb/message/format/serialized/FaultImpl.java
===================================================================
--- labs/jbossesb/trunk/product/core/rosetta/src/org/jboss/internal/soa/esb/message/format/serialized/FaultImpl.java	2007-05-26 17:53:41 UTC (rev 12162)
+++ labs/jbossesb/trunk/product/core/rosetta/src/org/jboss/internal/soa/esb/message/format/serialized/FaultImpl.java	2007-05-26 18:36:47 UTC (rev 12163)
@@ -49,6 +49,11 @@
 		_reason = reason;
 	}
 	
+	public String toString ()
+	{
+		return "fault: [ "+((_code != null) ? _code : "null")+", "+((_reason != null) ? _reason : "null")+" ]";
+	}
+	
 	private URI _code = null;
 	private String _reason = null;
 	

Modified: labs/jbossesb/trunk/product/core/rosetta/src/org/jboss/internal/soa/esb/message/format/serialized/HeaderImpl.java
===================================================================
--- labs/jbossesb/trunk/product/core/rosetta/src/org/jboss/internal/soa/esb/message/format/serialized/HeaderImpl.java	2007-05-26 17:53:41 UTC (rev 12162)
+++ labs/jbossesb/trunk/product/core/rosetta/src/org/jboss/internal/soa/esb/message/format/serialized/HeaderImpl.java	2007-05-26 18:36:47 UTC (rev 12163)
@@ -73,6 +73,14 @@
 		_call = call;
 	}
 
+	public String toString ()
+	{
+		if (_call != null)
+			return "header: [ "+_call.toString()+" ]";
+		else
+			return "header: [ null ]";
+	}
+	
 	/*
 	 * Call and PortReference aren't Serializable so we have to do some
 	 * magic.

Modified: labs/jbossesb/trunk/product/core/rosetta/src/org/jboss/internal/soa/esb/message/format/serialized/MessageImpl.java
===================================================================
--- labs/jbossesb/trunk/product/core/rosetta/src/org/jboss/internal/soa/esb/message/format/serialized/MessageImpl.java	2007-05-26 17:53:41 UTC (rev 12162)
+++ labs/jbossesb/trunk/product/core/rosetta/src/org/jboss/internal/soa/esb/message/format/serialized/MessageImpl.java	2007-05-26 18:36:47 UTC (rev 12163)
@@ -117,13 +117,19 @@
 	 */
 	public Properties getProperties() 
 	{
-		return _properties;
+		return _theProperties;
 	}
 
+	public String toString ()
+	{
+		return "message: [ JAVA_SERIALIZED ]\n[ "+_theHeader.toString()+"\n"+_theContext.toString()+"\n"+_theBody.toString()
+		+"\n"+_theFault.toString()+"\n"+_theAttachment.toString()+"\n"+_theProperties.toString()+" ]";
+	}
+	
 	private HeaderImpl _theHeader = new HeaderImpl();
 	private ContextImpl _theContext = new ContextImpl();
 	private BodyImpl _theBody = new BodyImpl();
 	private FaultImpl _theFault = new FaultImpl();
 	private AttachmentImpl _theAttachment = new AttachmentImpl();
-	private Properties _properties = new PropertiesImpl();
+	private Properties _theProperties = new PropertiesImpl();
 }

Modified: labs/jbossesb/trunk/product/core/rosetta/src/org/jboss/internal/soa/esb/message/format/serialized/PropertiesImpl.java
===================================================================
--- labs/jbossesb/trunk/product/core/rosetta/src/org/jboss/internal/soa/esb/message/format/serialized/PropertiesImpl.java	2007-05-26 17:53:41 UTC (rev 12162)
+++ labs/jbossesb/trunk/product/core/rosetta/src/org/jboss/internal/soa/esb/message/format/serialized/PropertiesImpl.java	2007-05-26 18:36:47 UTC (rev 12163)
@@ -63,7 +63,7 @@
 
 	public String toString()
 	{
-		return _table.toString();
+		return "properties: [ "+_table.toString()+" ]";
 	}
 
 	@Override

Modified: labs/jbossesb/trunk/product/core/rosetta/src/org/jboss/internal/soa/esb/message/format/xml/AttachmentImpl.java
===================================================================
--- labs/jbossesb/trunk/product/core/rosetta/src/org/jboss/internal/soa/esb/message/format/xml/AttachmentImpl.java	2007-05-26 17:53:41 UTC (rev 12162)
+++ labs/jbossesb/trunk/product/core/rosetta/src/org/jboss/internal/soa/esb/message/format/xml/AttachmentImpl.java	2007-05-26 18:36:47 UTC (rev 12163)
@@ -121,9 +121,9 @@
 
 	public String toString()
 	{
-		return new StringBuilder().append("Attachment - Named:").append(
-				_table.toString()).append(" Unnamed:").append(_list.toString())
-				.toString();
+		return new StringBuilder().append("attachments: [ Named:").append(
+				_table.toString()).append(", Unnamed:").append(_list.toString())
+				.toString()+" ]";
 	}
 
 	/**

Modified: labs/jbossesb/trunk/product/core/rosetta/src/org/jboss/internal/soa/esb/message/format/xml/BodyImpl.java
===================================================================
--- labs/jbossesb/trunk/product/core/rosetta/src/org/jboss/internal/soa/esb/message/format/xml/BodyImpl.java	2007-05-26 17:53:41 UTC (rev 12162)
+++ labs/jbossesb/trunk/product/core/rosetta/src/org/jboss/internal/soa/esb/message/format/xml/BodyImpl.java	2007-05-26 18:36:47 UTC (rev 12163)
@@ -9,6 +9,7 @@
 import org.jboss.soa.esb.MarshalException;
 import org.jboss.soa.esb.UnmarshalException;
 import org.jboss.soa.esb.message.Body;
+import org.jboss.soa.esb.util.Util;
 import org.w3c.dom.CDATASection;
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
@@ -297,6 +298,24 @@
 		_objects.putAll(((BodyImpl) b)._objects);
 	}
 
+	public String toString ()
+	{
+		String toReturn = "body: [ ";
+		
+		if (_content != null)
+			toReturn += "byte[]: "+Util.format(new String(_content));
+		
+		if (_objects != null)
+		{
+			if (_content != null)
+				toReturn += ", ";
+			
+			toReturn += "objects: "+_objects.toString();
+		}
+		
+		return toReturn+" ]";
+	}
+	
 	private byte[] _content;
 
 	private Hashtable<String, Object> _objects;

Modified: labs/jbossesb/trunk/product/core/rosetta/src/org/jboss/internal/soa/esb/message/format/xml/ContextImpl.java
===================================================================
--- labs/jbossesb/trunk/product/core/rosetta/src/org/jboss/internal/soa/esb/message/format/xml/ContextImpl.java	2007-05-26 17:53:41 UTC (rev 12162)
+++ labs/jbossesb/trunk/product/core/rosetta/src/org/jboss/internal/soa/esb/message/format/xml/ContextImpl.java	2007-05-26 18:36:47 UTC (rev 12163)
@@ -31,6 +31,11 @@
 {
     public static final String CONTEXT_TAG = "Context";
     
+	public String toString ()
+	{
+		return "context: [ null ]";
+	}
+	
 	public Element toXML (Element envelope) throws MarshalException
 	{
 		Document doc = envelope.getOwnerDocument();

Modified: labs/jbossesb/trunk/product/core/rosetta/src/org/jboss/internal/soa/esb/message/format/xml/FaultImpl.java
===================================================================
--- labs/jbossesb/trunk/product/core/rosetta/src/org/jboss/internal/soa/esb/message/format/xml/FaultImpl.java	2007-05-26 17:53:41 UTC (rev 12162)
+++ labs/jbossesb/trunk/product/core/rosetta/src/org/jboss/internal/soa/esb/message/format/xml/FaultImpl.java	2007-05-26 18:36:47 UTC (rev 12163)
@@ -59,6 +59,11 @@
 		_reason = reason;
 	}
 
+	public String toString ()
+	{
+		return "fault: [ "+((_code != null) ? _code : "null")+", "+((_reason != null) ? _reason : "null")+" ]";
+	}
+	
 	public Element toXML(Element envelope) throws MarshalException
 	{
 		Document doc = envelope.getOwnerDocument();

Modified: labs/jbossesb/trunk/product/core/rosetta/src/org/jboss/internal/soa/esb/message/format/xml/HeaderImpl.java
===================================================================
--- labs/jbossesb/trunk/product/core/rosetta/src/org/jboss/internal/soa/esb/message/format/xml/HeaderImpl.java	2007-05-26 17:53:41 UTC (rev 12162)
+++ labs/jbossesb/trunk/product/core/rosetta/src/org/jboss/internal/soa/esb/message/format/xml/HeaderImpl.java	2007-05-26 18:36:47 UTC (rev 12163)
@@ -59,6 +59,14 @@
 		_call = call;
 	}
 	
+	public String toString ()
+	{
+		if (_call != null)
+			return "header: [ "+_call.toString()+" ]";
+		else
+			return "header: [ null ]";
+	}
+	
 	public Element toXML (Element envelope) throws MarshalException
 	{
 		Document doc = envelope.getOwnerDocument();

Modified: labs/jbossesb/trunk/product/core/rosetta/src/org/jboss/internal/soa/esb/message/format/xml/MessageImpl.java
===================================================================
--- labs/jbossesb/trunk/product/core/rosetta/src/org/jboss/internal/soa/esb/message/format/xml/MessageImpl.java	2007-05-26 17:53:41 UTC (rev 12162)
+++ labs/jbossesb/trunk/product/core/rosetta/src/org/jboss/internal/soa/esb/message/format/xml/MessageImpl.java	2007-05-26 18:36:47 UTC (rev 12163)
@@ -129,6 +129,12 @@
 		return _theProperties;
 	}
 	
+	public String toString ()
+	{
+		return "message: [ JBOSS_XML ]\n[ "+_theHeader.toString()+"\n"+_theContext.toString()+"\n"+_theBody.toString()
+		+"\n"+_theFault.toString()+"\n"+_theAttachment.toString()+"\n"+_theProperties.toString()+" ]";
+	}
+	
 	// to/from XML here, rather than on individual elements
 	
 	public Document toXML (Document doc) throws MarshalException

Modified: labs/jbossesb/trunk/product/core/rosetta/src/org/jboss/internal/soa/esb/message/format/xml/PropertiesImpl.java
===================================================================
--- labs/jbossesb/trunk/product/core/rosetta/src/org/jboss/internal/soa/esb/message/format/xml/PropertiesImpl.java	2007-05-26 17:53:41 UTC (rev 12162)
+++ labs/jbossesb/trunk/product/core/rosetta/src/org/jboss/internal/soa/esb/message/format/xml/PropertiesImpl.java	2007-05-26 18:36:47 UTC (rev 12163)
@@ -193,7 +193,7 @@
 
 	public String toString()
 	{
-		return _table.toString();
+		return "properties: [ "+_table.toString()+" ]";
 	}
 
 	@Override

Modified: labs/jbossesb/trunk/product/core/rosetta/src/org/jboss/soa/esb/addressing/Call.java
===================================================================
--- labs/jbossesb/trunk/product/core/rosetta/src/org/jboss/soa/esb/addressing/Call.java	2007-05-26 17:53:41 UTC (rev 12162)
+++ labs/jbossesb/trunk/product/core/rosetta/src/org/jboss/soa/esb/addressing/Call.java	2007-05-26 18:36:47 UTC (rev 12163)
@@ -248,7 +248,7 @@
 	
 	public String toString ()
 	{
-		return "To: "+_to+" From: "+_from+" ReplyTo: "+_replyTo+" FaultTo: "+_faultTo+" Action: "+_action+" MessagdID: "+_messageID;
+		return "To: "+_to+", From: "+_from+", ReplyTo: "+_replyTo+", FaultTo: "+_faultTo+", Action: "+_action+", MessagdID: "+_messageID;
 	}
 	
 	/**

Modified: labs/jbossesb/trunk/product/core/rosetta/src/org/jboss/soa/esb/util/Util.java
===================================================================
--- labs/jbossesb/trunk/product/core/rosetta/src/org/jboss/soa/esb/util/Util.java	2007-05-26 17:53:41 UTC (rev 12162)
+++ labs/jbossesb/trunk/product/core/rosetta/src/org/jboss/soa/esb/util/Util.java	2007-05-26 18:36:47 UTC (rev 12163)
@@ -23,6 +23,7 @@
 package org.jboss.soa.esb.util;
 
 import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.PrintStream;
@@ -36,6 +37,11 @@
 import javax.xml.parsers.DocumentBuilder;
 import javax.xml.parsers.DocumentBuilderFactory;
 import javax.xml.parsers.ParserConfigurationException;
+import javax.xml.transform.OutputKeys;
+import javax.xml.transform.Transformer;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.stream.StreamResult;
+import javax.xml.transform.stream.StreamSource;
 
 import org.apache.log4j.Appender;
 import org.apache.log4j.ConsoleAppender;
@@ -247,7 +253,47 @@
 	{
 		return s_oTS.format(new java.util.Date(System.currentTimeMillis()));
 	}
+	
+	/**
+	 * Attempt to format the output.
+	 * 
+	 * @param output
+	 *            Output to be formatted.
+	 * @return Output.
+	 */
+	
+	public static String format(String output)
+	{
+		StreamSource source = new StreamSource(new ByteArrayInputStream(output
+				.getBytes()));
+		ByteArrayOutputStream outStream = new ByteArrayOutputStream();
 
+		try
+		{
+			Transformer transformer;
+
+			// There's a bug in Java 5 re this code (formatting).
+			// See http://forum.java.sun.com/thread.jspa?threadID=562510&start=0
+			// and it explains the
+			// whys of the following code.
+			transformer = factory.newTransformer();
+			transformer.setOutputProperty(OutputKeys.INDENT, "yes");
+			transformer.setOutputProperty(
+					"{http://xml.apache.org/xalan}indent-amount", "4");
+			transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION,
+					"yes");
+			transformer.transform(source, new StreamResult(outStream));
+
+			return outStream.toString();
+		}
+		catch (Exception e)
+		{
+			return output;
+		}
+	}
+
+	private static TransformerFactory factory = TransformerFactory.newInstance();
+	
 	private static final SimpleDateFormat s_oTS = new SimpleDateFormat(
 			"yyyy/MM/dd hh:mm:ss.SSS");
 

Modified: labs/jbossesb/trunk/product/core/rosetta/tests/src/org/jboss/soa/esb/message/tests/MessageUnitTest.java
===================================================================
--- labs/jbossesb/trunk/product/core/rosetta/tests/src/org/jboss/soa/esb/message/tests/MessageUnitTest.java	2007-05-26 17:53:41 UTC (rev 12162)
+++ labs/jbossesb/trunk/product/core/rosetta/tests/src/org/jboss/soa/esb/message/tests/MessageUnitTest.java	2007-05-26 18:36:47 UTC (rev 12163)
@@ -22,8 +22,11 @@
 
 package org.jboss.soa.esb.message.tests;
 
+import java.net.URI;
+
 import junit.framework.TestCase;
 
+import org.jboss.soa.esb.addressing.eprs.HTTPEpr;
 import org.jboss.soa.esb.message.Message;
 import org.jboss.soa.esb.message.format.MessageFactory;
 import org.jboss.soa.esb.message.format.MessageType;
@@ -73,4 +76,50 @@
 		assertEquals((msg.getProperties() != null), true);
 	}
 	
+	public void testSerializedMessageToString () throws Exception
+	{
+		Message msg = MessageFactory.getInstance().getMessage(MessageType.JAVA_SERIALIZED);
+		
+		msg.getHeader().getCall().setAction(new URI("urn:foo"));
+		msg.getHeader().getCall().setFrom(new HTTPEpr("http://foo.bar"));
+		
+		msg.getBody().add("foobar");
+		msg.getBody().add("qwerty", "uiop");
+		msg.getBody().setByteArray("hello world".getBytes());
+		
+		msg.getFault().setCode(new URI("urn:because"));
+		msg.getFault().setReason("something bad happened");
+		
+		msg.getAttachment().addItem("should be unnamed");
+		msg.getAttachment().put("name", "property");
+		
+		msg.getProperties().setProperty("name", "value");
+		msg.getProperties().setProperty("another name", "another value");
+		
+		System.out.println("Message is: "+msg.toString());
+	}
+	
+	public void testXMLMessageToString () throws Exception
+	{
+		Message msg = MessageFactory.getInstance().getMessage(MessageType.JBOSS_XML);
+		
+		msg.getHeader().getCall().setAction(new URI("urn:foo"));
+		msg.getHeader().getCall().setFrom(new HTTPEpr("http://foo.bar"));
+		
+		msg.getBody().add("foobar");
+		msg.getBody().add("qwerty", "uiop");
+		msg.getBody().setByteArray("hello world".getBytes());
+		
+		msg.getFault().setCode(new URI("urn:because"));
+		msg.getFault().setReason("something bad happened");
+		
+		msg.getAttachment().addItem("should be unnamed");
+		msg.getAttachment().put("name", "property");
+		
+		msg.getProperties().setProperty("name", "value");
+		msg.getProperties().setProperty("another name", "another value");
+		
+		System.out.println("Message is: "+msg.toString());
+	}
+	
 }

Modified: labs/jbossesb/trunk/product/docs/MessageActionGuide.odt
===================================================================
(Binary files differ)




More information about the jboss-svn-commits mailing list