[jboss-svn-commits] JBL Code SVN: r13889 - in labs/jbossesb/trunk/product/rosetta: tests/src/org/jboss/soa/esb/message/payload and 1 other directory.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Mon Jul 30 17:57:50 EDT 2007


Author: mark.little at jboss.com
Date: 2007-07-30 17:57:50 -0400 (Mon, 30 Jul 2007)
New Revision: 13889

Modified:
   labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/message/payload/BytesMessage.java
   labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/message/payload/ControlMessage.java
   labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/message/payload/MapMessage.java
   labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/message/payload/ObjectMessage.java
   labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/message/payload/Payload.java
   labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/message/payload/TextMessage.java
   labs/jbossesb/trunk/product/rosetta/tests/src/org/jboss/soa/esb/message/payload/PayloadUnitTest.java
Log:
http://jira.jboss.com/jira/browse/JBESB-762

Modified: labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/message/payload/BytesMessage.java
===================================================================
--- labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/message/payload/BytesMessage.java	2007-07-30 21:41:27 UTC (rev 13888)
+++ labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/message/payload/BytesMessage.java	2007-07-30 21:57:50 UTC (rev 13889)
@@ -44,67 +44,85 @@
 {
     private static final long serialVersionUID = 0xdeadbeef;
     
-    public boolean readBoolean () throws IncompatibleModeException, IOException
+    public static final String ELEMENT_NAME = "org.jboss.soa.esb.message.payload.bytes";
+    
+    public boolean readBoolean () throws IncompatibleModeException, IOException, InvalidPayloadException
     {
 	if (!_readMode)
 	    throw new IncompatibleModeException();
 	
+	valid();
+	
 	return _inputStream.readBoolean();
     }
 
-    public int readInt () throws IncompatibleModeException, IOException
+    public int readInt () throws IncompatibleModeException, IOException, InvalidPayloadException
     {
 	if (!_readMode)
 	    throw new IncompatibleModeException();
 	
+	valid();
+	
 	return _inputStream.readInt();
     }
     
-    public long readLong () throws IncompatibleModeException, IOException
+    public long readLong () throws IncompatibleModeException, IOException, InvalidPayloadException
     {
 	if (!_readMode)
 	    throw new IncompatibleModeException();
 	
+	valid();
+	
 	return _inputStream.readLong();
     }
     
-    public char readChar () throws IncompatibleModeException, IOException
+    public char readChar () throws IncompatibleModeException, IOException, InvalidPayloadException
     {
 	if (!_readMode)
 	    throw new IncompatibleModeException();
 	
+	valid();
+	
 	return _inputStream.readChar();
     }
     
-    public double readDouble () throws IncompatibleModeException, IOException
+    public double readDouble () throws IncompatibleModeException, IOException, InvalidPayloadException
     {
 	if (!_readMode)
 	    throw new IncompatibleModeException();
 	
+	valid();
+	
 	return _inputStream.readDouble();
     }
     
-    public float readFloat () throws IncompatibleModeException, IOException
+    public float readFloat () throws IncompatibleModeException, IOException, InvalidPayloadException
     {
 	if (!_readMode)
 	    throw new IncompatibleModeException();
 	
+	valid();
+	
 	return _inputStream.readFloat();
     }
     
-    public short readShort () throws IncompatibleModeException, IOException
+    public short readShort () throws IncompatibleModeException, IOException, InvalidPayloadException
     {
 	if (!_readMode)
 	    throw new IncompatibleModeException();
 	
+	valid();
+	
 	return _inputStream.readShort();
     }
     
-    public String readUTFString () throws IncompatibleModeException, IOException
+    public String readUTFString () throws IncompatibleModeException, IOException, InvalidPayloadException
     {
 	if (!_readMode)
 	    throw new IncompatibleModeException();
 	
+	valid();
+	
 	return _inputStream.readUTF();
     }
     
@@ -113,6 +131,8 @@
 	if (_readMode)
 	    throw new IncompatibleModeException();
 	
+	init();
+	
 	_outputStream.writeBoolean(b);
     }
     
@@ -121,6 +141,8 @@
 	if (_readMode)
 	    throw new IncompatibleModeException();
 	
+	init();
+	
 	_outputStream.writeInt(i);
     }
     
@@ -129,6 +151,8 @@
 	if (_readMode)
 	    throw new IncompatibleModeException();
 	
+	init();
+	
 	_outputStream.writeLong(l);
     }
     
@@ -137,6 +161,8 @@
 	if (_readMode)
 	    throw new IncompatibleModeException();
 	
+	init();
+	
 	_outputStream.writeChar(c);
     }
     
@@ -145,6 +171,8 @@
 	if (_readMode)
 	    throw new IncompatibleModeException();
 	
+	init();
+	
 	_outputStream.writeDouble(d);
     }
     
@@ -153,6 +181,8 @@
 	if (_readMode)
 	    throw new IncompatibleModeException();
 	
+	init();
+	
 	_outputStream.writeFloat(f);
     }
     
@@ -161,6 +191,8 @@
 	if (_readMode)
 	    throw new IncompatibleModeException();
 	
+	init();
+	
 	_outputStream.writeShort(s);
     }
     
@@ -169,6 +201,8 @@
 	if (_readMode)
 	    throw new IncompatibleModeException();
 	
+	init();
+	
 	_outputStream.writeUTF(s);
     }
     
@@ -241,6 +275,18 @@
 	}
     }
     
+    public static final boolean isBytesMessage (Body payload)
+    {
+	try
+	{
+	    return (payload.get(ELEMENT_NAME) != null);
+	}
+	catch (Exception ex)
+	{
+	    return false;
+	}
+    }
+    
     BytesMessage (Body payload) throws IOException
     {
 	_payload = payload;
@@ -251,6 +297,18 @@
 	    writeMode();
     }
 	
+    private final void init ()
+    {
+	if (_payload.get(ELEMENT_NAME) == null)
+	    _payload.add(ELEMENT_NAME, true);
+    }
+    
+    private final void valid () throws InvalidPayloadException
+    {
+	if (_payload.get(ELEMENT_NAME) == null)
+	    throw new InvalidPayloadException();
+    }
+    
     private Body _payload;
     
     private boolean _readMode;

Modified: labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/message/payload/ControlMessage.java
===================================================================
--- labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/message/payload/ControlMessage.java	2007-07-30 21:41:27 UTC (rev 13888)
+++ labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/message/payload/ControlMessage.java	2007-07-30 21:57:50 UTC (rev 13889)
@@ -61,7 +61,12 @@
     {
 	try
 	{
-	    return (Serializable) _payload.get(ELEMENT_NAME);
+	    Object ret = _payload.get(ELEMENT_NAME);
+	    
+	    if (ret == null)
+		throw new InvalidPayloadException();
+	    
+	    return (Serializable) ret;
 	}
 	catch (ClassCastException ex)
 	{
@@ -71,6 +76,18 @@
 	}
     }
 
+    public static final boolean isControlMessage (Body payload)
+    {
+	try
+	{
+	    return (payload.get(ELEMENT_NAME) != null);
+	}
+	catch (Exception ex)
+	{
+	    return false;
+	}
+    }
+    
     ControlMessage (Body payload)
     {
 	_payload = payload;

Modified: labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/message/payload/MapMessage.java
===================================================================
--- labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/message/payload/MapMessage.java	2007-07-30 21:41:27 UTC (rev 13888)
+++ labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/message/payload/MapMessage.java	2007-07-30 21:57:50 UTC (rev 13889)
@@ -32,7 +32,7 @@
  */
 
 /**
- * Tthe Message payload contains a Map of serializable Objects that can be
+ * The Message payload contains a Map of serializable Objects that can be
  * inserted and retrieved as a Map.
  */
 
@@ -40,11 +40,15 @@
 {
     private static final long serialVersionUID = 0xdeadbeef;
 
+    public static final String ELEMENT_NAME = "org.jboss.soa.esb.message.payload.map";
+    
     public void setMap (Map<String, Serializable> map)
     {
 	if (map == null)
 	    throw new IllegalArgumentException();
 
+	_payload.add(ELEMENT_NAME, map.size());
+	
 	Set<String> keys = map.keySet();
 	Iterator<String> iter = keys.iterator();
 
@@ -59,6 +63,9 @@
 
     public Map<String, Serializable> getMap () throws InvalidPayloadException
     {
+	if (_payload.get(ELEMENT_NAME) == null)
+	    throw new InvalidPayloadException();
+	
 	HashMap<String, Serializable> map = new HashMap<String, Serializable>();
 	String[] names = _payload.getNames();
 	
@@ -79,6 +86,18 @@
 	return map;
     }
     
+    public static final boolean isMapMessage (Body payload)
+    {
+	try
+	{
+	    return (payload.get(ELEMENT_NAME) != null);
+	}
+	catch (Exception ex)
+	{
+	    return false;
+	}
+    }
+    
     MapMessage (Body payload)
     {
 	_payload = payload;

Modified: labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/message/payload/ObjectMessage.java
===================================================================
--- labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/message/payload/ObjectMessage.java	2007-07-30 21:41:27 UTC (rev 13888)
+++ labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/message/payload/ObjectMessage.java	2007-07-30 21:57:50 UTC (rev 13889)
@@ -61,7 +61,12 @@
     {
 	try
 	{
-	    return (Serializable) _payload.get(ELEMENT_NAME);
+	    Object ret = _payload.get(ELEMENT_NAME);
+	    
+	    if (ret == null)
+		throw new InvalidPayloadException();
+	    
+	    return (Serializable) ret;
 	}
 	catch (ClassCastException ex)
 	{
@@ -70,6 +75,18 @@
 	    throw new InvalidPayloadException(ex);
 	}
     }
+    
+    public static final boolean isObjectMessage (Body payload)
+    {
+	try
+	{
+	    return (payload.get(ELEMENT_NAME) != null);
+	}
+	catch (Exception ex)
+	{
+	    return false;
+	}
+    }
 
     ObjectMessage (Body payload)
     {

Modified: labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/message/payload/Payload.java
===================================================================
--- labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/message/payload/Payload.java	2007-07-30 21:41:27 UTC (rev 13888)
+++ labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/message/payload/Payload.java	2007-07-30 21:57:50 UTC (rev 13889)
@@ -35,7 +35,54 @@
 public class Payload
 {
 
+    public static final Object getPayload (Message msg)
+    {
+	if ((msg == null) || (msg.getBody() == null))
+	    return null;
+	
+	if (ControlMessage.isControlMessage(msg.getBody()))
+	    return getAsControlMessage(msg);
+	
+	if (MapMessage.isMapMessage(msg.getBody()))
+	    return getAsMapMessage(msg);
+	
+	if (ObjectMessage.isObjectMessage(msg.getBody()))
+	    return getAsObjectMessage(msg);
+	
+	if (TextMessage.isTextMessage(msg.getBody()))
+	    return getAsTextMessage(msg);
+	
+	if (BytesMessage.isBytesMessage(msg.getBody()))
+	{
+	    try
+	    {
+		return getAsBytesMessage(msg, true);
+	    }
+	    catch (Exception ex)
+	    {
+		ex.printStackTrace();
+	    }
+	}
+	
+	return null;
+    }
+    
     /**
+     * View and manipulate the payload as a Control.
+     * 
+     * @param msg the message.
+     * @return the Control view.
+     */
+    
+    public static final ControlMessage getAsControlMessage (Message msg)
+    {
+	if ((msg == null) || (msg.getBody() == null))
+	    return null;
+	else
+	    return new ControlMessage(msg.getBody());
+    }
+
+    /**
      * View and manipulate the payload as an Object map.
      * 
      * @param msg the message.

Modified: labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/message/payload/TextMessage.java
===================================================================
--- labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/message/payload/TextMessage.java	2007-07-30 21:41:27 UTC (rev 13888)
+++ labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/message/payload/TextMessage.java	2007-07-30 21:57:50 UTC (rev 13889)
@@ -59,13 +59,30 @@
     {
 	try
 	{
-	    return (String) _payload.get(ELEMENT_NAME);
+	    Object ret = _payload.get(ELEMENT_NAME);
+	    
+	    if (ret == null)
+		throw new InvalidPayloadException();
+	    
+	    return (String) ret;
 	}
 	catch (ClassCastException ex)
 	{
 	    throw new InvalidPayloadException(ex);
 	}
     }
+    
+    public static final boolean isTextMessage (Body payload)
+    {
+	try
+	{
+	    return (payload.get(ELEMENT_NAME) != null);
+	}
+	catch (Exception ex)
+	{
+	    return false;
+	}
+    }
 
     TextMessage (Body payload)
     {

Modified: labs/jbossesb/trunk/product/rosetta/tests/src/org/jboss/soa/esb/message/payload/PayloadUnitTest.java
===================================================================
--- labs/jbossesb/trunk/product/rosetta/tests/src/org/jboss/soa/esb/message/payload/PayloadUnitTest.java	2007-07-30 21:41:27 UTC (rev 13888)
+++ labs/jbossesb/trunk/product/rosetta/tests/src/org/jboss/soa/esb/message/payload/PayloadUnitTest.java	2007-07-30 21:57:50 UTC (rev 13889)
@@ -119,4 +119,59 @@
 	assertEquals(mapMessage.readShort(), (short) 10);
 	assertEquals(mapMessage.readBoolean(), true);
     }
+    
+    public void testBytesMessageAsControl () throws Exception
+    {
+	Message msg = MessageFactory.getInstance().getMessage();
+
+	assertEquals((msg != null), true);
+	
+	BytesMessage mapMessage = Payload.getAsBytesMessage(msg, true);
+	
+	try
+	{
+	    mapMessage.writeBoolean(true);
+	    
+	    fail();
+	}
+	catch (IncompatibleModeException ex)
+	{
+	}
+	
+	mapMessage.writeMode();
+	
+	mapMessage.writeInt(12345);
+	mapMessage.writeUTFString("hello world");
+	mapMessage.writeShort((short) 10);
+	mapMessage.writeBoolean(true);
+	
+	mapMessage.readMode();
+	
+	assertEquals(mapMessage.readInt(), 12345);
+	assertEquals(mapMessage.readUTFString(), "hello world");
+	assertEquals(mapMessage.readShort(), (short) 10);
+	assertEquals(mapMessage.readBoolean(), true);
+	
+	assertTrue(BytesMessage.isBytesMessage(msg.getBody()));
+	assertFalse(ControlMessage.isControlMessage(msg.getBody()));
+	
+	try
+	{
+	    BytesMessage payload = (BytesMessage) Payload.getPayload(msg);
+	}
+	catch (ClassCastException ex)
+	{
+	    fail();
+	}
+	
+	try
+	{
+	    ControlMessage payload = (ControlMessage) Payload.getPayload(msg);
+	    
+	    fail();
+	}
+	catch (ClassCastException ex)
+	{
+	}
+    }
 }




More information about the jboss-svn-commits mailing list