[jboss-cvs] JBoss Messaging SVN: r8425 - in branches/Branch_1_4: tests/src/org/jboss/test/messaging/jms and 1 other directory.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Mon Aug 22 23:08:55 EDT 2011


Author: gaohoward
Date: 2011-08-22 23:08:54 -0400 (Mon, 22 Aug 2011)
New Revision: 8425

Modified:
   branches/Branch_1_4/src/main/org/jboss/jms/message/MessageProxy.java
   branches/Branch_1_4/tests/src/org/jboss/test/messaging/jms/AcknowledgementTest.java
Log:
JBMESSAGING-1886


Modified: branches/Branch_1_4/src/main/org/jboss/jms/message/MessageProxy.java
===================================================================
--- branches/Branch_1_4/src/main/org/jboss/jms/message/MessageProxy.java	2011-08-23 02:20:06 UTC (rev 8424)
+++ branches/Branch_1_4/src/main/org/jboss/jms/message/MessageProxy.java	2011-08-23 03:08:54 UTC (rev 8425)
@@ -298,6 +298,10 @@
 
    public void clearProperties() throws JMSException
    {
+      if (delegate != null)
+      {
+         delegate.messageChanged(message.getMessageID());
+      }
       headerChange();
       message.clearProperties();
       propertiesReadOnly = false;

Modified: branches/Branch_1_4/tests/src/org/jboss/test/messaging/jms/AcknowledgementTest.java
===================================================================
--- branches/Branch_1_4/tests/src/org/jboss/test/messaging/jms/AcknowledgementTest.java	2011-08-23 02:20:06 UTC (rev 8424)
+++ branches/Branch_1_4/tests/src/org/jboss/test/messaging/jms/AcknowledgementTest.java	2011-08-23 03:08:54 UTC (rev 8425)
@@ -579,6 +579,231 @@
          }
       }
    }	
+
+	//JBMESSAGING-1886
+   public void testMessagePropertiesClearedBeforeRecover() throws Exception
+   {
+      Connection conn = null;
+      
+      try
+      {     
+         conn = cf.createConnection();
+   
+         Session producerSess = conn.createSession(false, Session.CLIENT_ACKNOWLEDGE);
+         MessageProducer producer = producerSess.createProducer(queue1);
+   
+         Session consumerSess = conn.createSession(false, Session.CLIENT_ACKNOWLEDGE);
+         MessageConsumer consumer = consumerSess.createConsumer(queue1);
+         conn.start();
+   
+         final int NUM_MESSAGES = 10;
+   
+         //1 Send some text messages
+         for (int i = 0; i < NUM_MESSAGES; i++)
+         {
+            TextMessage m = producerSess.createTextMessage("text-message-to-recover");
+            m.setBooleanProperty("text_message", true);
+            producer.send(m);
+         }
+   
+         log.trace("Sent text messages");
+   
+         for (int i = 0; i < NUM_MESSAGES; i++)
+         {
+            TextMessage m = (TextMessage)consumer.receive(2000);
+            Boolean value = m.getBooleanProperty("text_message");
+            assertTrue(value);
+            m.clearProperties();
+            value = m.getBooleanProperty("text_message");
+            //equals Boolean.valueOf((String)null);
+            assertFalse(value);
+         }
+   
+         consumerSess.recover();
+   
+         log.trace("Session recover called");
+
+         TextMessage tm = null;
+         for(int i = 0; i < NUM_MESSAGES; i++)
+         {
+            tm = (TextMessage)consumer.receive();
+            Boolean value = tm.getBooleanProperty("text_message");
+            assertTrue(value);
+         }
+         
+         tm.acknowledge();
+         
+         //2 Send some byte messages
+         for (int i = 0; i < NUM_MESSAGES; i++)
+         {
+            BytesMessage m = producerSess.createBytesMessage();
+            m.writeBytes(new byte[] {1, 2, 3});
+            m.setByteProperty("byte_property", (byte)3);
+            producer.send(m);
+         }
+   
+         log.trace("Sent byte messages");
+   
+         for (int i = 0; i < NUM_MESSAGES; i++)
+         {
+            BytesMessage m = (BytesMessage)consumer.receive(2000);
+            m.clearProperties();
+         }
+   
+         consumerSess.recover();
+   
+         log.trace("Session recover called");
+
+         BytesMessage bm = null;
+         for(int i = 0; i < NUM_MESSAGES; i++)
+         {
+            byte[] buffer = new byte[3];
+            bm = (BytesMessage)consumer.receive();
+            
+            byte prop = bm.getByteProperty("byte_property");
+            assertEquals(3, prop);
+            
+            assertEquals(3, bm.getBodyLength());
+            
+            bm.readBytes(buffer);
+            
+            //make sure the buffer is {1,2,3}
+            assertEquals(1, buffer[0]);
+            assertEquals(2, buffer[1]);
+            assertEquals(3, buffer[2]);
+         }
+         
+         bm.acknowledge();
+         
+         //3 Send some Map messages
+         for (int i = 0; i < NUM_MESSAGES; i++)
+         {
+            MapMessage m = producerSess.createMapMessage();
+            m.setString("map-message", "hello-world");
+            m.setDoubleProperty("double_property", new Double(25));
+            producer.send(m);
+         }
+   
+         log.trace("Sent map messages");
+   
+         for (int i = 0; i < NUM_MESSAGES; i++)
+         {
+            MapMessage m = (MapMessage)consumer.receive(2000);
+            
+            //this time clear both.
+            m.clearBody();
+            m.clearProperties();
+         }
+   
+         consumerSess.recover();
+   
+         log.trace("Session recover called");
+
+         MapMessage mm = null;
+         for(int i = 0; i < NUM_MESSAGES; i++)
+         {
+            mm = (MapMessage)consumer.receive();
+            
+            String value = mm.getString("map-message");
+            
+            assertEquals("hello-world", value);
+            
+            Double db = mm.getDoubleProperty("double_property");
+            assertEquals(new Double(25), db);
+         }
+         
+         mm.acknowledge();
+         
+         //4 Send some Object messages
+         for (int i = 0; i < NUM_MESSAGES; i++)
+         {
+            ObjectMessage m = producerSess.createObjectMessage(new String("object-message"));
+            m.setObjectProperty("object_property", new String("abcdef"));
+            producer.send(m);
+         }
+   
+         log.trace("Sent object messages");
+   
+         for (int i = 0; i < NUM_MESSAGES; i++)
+         {
+            ObjectMessage m = (ObjectMessage)consumer.receive(2000);
+            m.clearProperties();
+         }
+   
+         consumerSess.recover();
+   
+         log.trace("Session recover called");
+
+         ObjectMessage om = null;
+         for(int i = 0; i < NUM_MESSAGES; i++)
+         {
+            om = (ObjectMessage)consumer.receive();
+            
+            String value = (String)om.getObject();
+            
+            assertEquals("object-message", value);
+            
+            String prop = (String)om.getObjectProperty("object_property");
+            
+            assertEquals("abcdef", prop);
+         }
+         
+         om.acknowledge();
+
+         //5 Send some Stream messages
+         for (int i = 0; i < NUM_MESSAGES; i++)
+         {
+            StreamMessage m = producerSess.createStreamMessage();
+            m.writeString("stream-message");
+            m.setFloatProperty("float_property", 1.05f);
+            m.setIntProperty("int_property", 100);
+            producer.send(m);
+         }
+   
+         log.trace("Sent stream messages");
+   
+         for (int i = 0; i < NUM_MESSAGES; i++)
+         {
+            StreamMessage m = (StreamMessage)consumer.receive(2000);
+            String v = m.readString();
+            assertEquals("stream-message", v);
+            m.clearProperties();
+         }
+   
+         consumerSess.recover();
+   
+         log.trace("Session recover called");
+
+         StreamMessage sm = null;
+         for(int i = 0; i < NUM_MESSAGES; i++)
+         {
+            sm = (StreamMessage)consumer.receive();
+            
+            String value = sm.readString();
+            
+            assertEquals("stream-message", value);
+            
+            float prop = sm.getFloatProperty("float_property");
+            int prop2 = sm.getIntProperty("int_property");
+            
+            assertEquals(1.05f, prop);
+            assertEquals(100, prop2);
+         }
+         
+         sm.acknowledge();
+         
+         checkEmpty(queue1);
+   
+         conn.close();
+      }
+      finally
+      {
+         if (conn != null)
+         {
+            conn.close();
+         }
+      }
+   }  
 	
 	/**
 	 * Send some messages, acknowledge them individually and verify they are not resent after



More information about the jboss-cvs-commits mailing list