[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