[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