[hornetq-commits] JBoss hornetq SVN: r8916 - in trunk: tests/src/org/hornetq/tests/unit/jms/client and 1 other directory.

do-not-reply at jboss.org do-not-reply at jboss.org
Mon Mar 8 04:49:02 EST 2010


Author: jmesnil
Date: 2010-03-08 04:49:01 -0500 (Mon, 08 Mar 2010)
New Revision: 8916

Modified:
   trunk/src/main/org/hornetq/jms/client/HornetQStreamMessage.java
   trunk/tests/src/org/hornetq/tests/unit/jms/client/HornetQStreamMessageTest.java
Log:
fix JMS StreamMessage implementation

Modified: trunk/src/main/org/hornetq/jms/client/HornetQStreamMessage.java
===================================================================
--- trunk/src/main/org/hornetq/jms/client/HornetQStreamMessage.java	2010-03-05 09:29:14 UTC (rev 8915)
+++ trunk/src/main/org/hornetq/jms/client/HornetQStreamMessage.java	2010-03-08 09:49:01 UTC (rev 8916)
@@ -130,6 +130,7 @@
    public byte readByte() throws JMSException
    {
       checkRead();
+      int index = getBuffer().readerIndex();
       try
       {
          byte type = getBuffer().readByte();
@@ -148,6 +149,11 @@
       {
          throw new MessageEOFException("");
       }
+      catch (NumberFormatException e)
+      {
+         getBuffer().readerIndex(index);
+         throw e;
+      }
    }
 
    public short readShort() throws JMSException
@@ -493,10 +499,6 @@
 
    public void writeObject(final Object value) throws JMSException
    {
-      if (value == null)
-      {
-         throw new NullPointerException("Attempt to write a null value");
-      }
       if (value instanceof String)
       {
          writeString((String)value);
@@ -537,6 +539,10 @@
       {
          writeChar((Character)value);
       }
+      else if (value == null)
+      {
+         writeString(null);
+      }
       else
       {
          throw new MessageFormatException("Invalid object type: " + value.getClass());

Modified: trunk/tests/src/org/hornetq/tests/unit/jms/client/HornetQStreamMessageTest.java
===================================================================
--- trunk/tests/src/org/hornetq/tests/unit/jms/client/HornetQStreamMessageTest.java	2010-03-05 09:29:14 UTC (rev 8915)
+++ trunk/tests/src/org/hornetq/tests/unit/jms/client/HornetQStreamMessageTest.java	2010-03-08 09:49:01 UTC (rev 8916)
@@ -340,7 +340,24 @@
 
       Assert.assertEquals(value, message.readChar());
    }
+   
+   public void testReadCharFromNull() throws Exception
+   {
+      HornetQStreamMessage message = new HornetQStreamMessage();
 
+      message.writeString(null);
+      message.reset();
+
+      try
+      {
+         message.readChar();
+         fail();
+      }
+      catch (MessageFormatException e)
+      {
+      }
+   }
+
    public void testReadLongFromByte() throws Exception
    {
       byte value = RandomUtil.randomByte();
@@ -550,6 +567,27 @@
       Assert.assertEquals(Byte.toString(value), message.readString());
    }
 
+   public void testString() throws Exception
+   {
+      String value = RandomUtil.randomString();
+      HornetQStreamMessage message = new HornetQStreamMessage();
+
+      message.writeString(value);
+      message.reset();
+
+      try
+      {
+         message.readByte();
+         fail("must throw a NumberFormatException");
+      }
+      catch (NumberFormatException e)
+      {
+      }
+
+      // we can read the String without resetting the message
+      Assert.assertEquals(value, message.readString());
+   }
+   
    public void testReadStringFromShort() throws Exception
    {
       short value = RandomUtil.randomShort();
@@ -754,14 +792,7 @@
    {
       HornetQStreamMessage message = new HornetQStreamMessage();
 
-      try
-      {
-         message.writeObject(null);
-         Assert.fail("NullPointerException");
-      }
-      catch (NullPointerException e)
-      {
-      }
+      message.writeObject(null);
    }
 
    public void testWriteObjectWithInvalidType() throws Exception



More information about the hornetq-commits mailing list