update getPropertyName handling to include [some] intercepted properties, 
fixup/enable tests accordingly


Project: http://git-wip-us.apache.org/repos/asf/qpid-jms/repo
Commit: http://git-wip-us.apache.org/repos/asf/qpid-jms/commit/756f120b
Tree: http://git-wip-us.apache.org/repos/asf/qpid-jms/tree/756f120b
Diff: http://git-wip-us.apache.org/repos/asf/qpid-jms/diff/756f120b

Branch: refs/heads/master
Commit: 756f120b93fd21fff8aa76040e47b73cd7a79219
Parents: 4d3e934
Author: Robert Gemmell <[email protected]>
Authored: Wed Oct 8 16:17:07 2014 +0100
Committer: Robert Gemmell <[email protected]>
Committed: Wed Oct 8 16:50:39 2014 +0100

----------------------------------------------------------------------
 .../org/apache/qpid/jms/message/JmsMessage.java |  7 ++--
 .../message/JmsMessagePropertyIntercepter.java  |  4 ++-
 .../jms/message/facade/JmsMessageFacade.java    |  5 +--
 .../amqp/message/AmqpJmsMessageFacade.java      |  3 ++
 .../AmqpJmsMessagePropertyIntercepter.java      |  4 ++-
 .../jms/integration/MessageIntegrationTest.java |  1 -
 .../apache/qpid/jms/message/JmsMessageTest.java | 34 ++++++++++----------
 7 files changed, 34 insertions(+), 24 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/756f120b/qpid-jms-client/src/main/java/org/apache/qpid/jms/message/JmsMessage.java
----------------------------------------------------------------------
diff --git 
a/qpid-jms-client/src/main/java/org/apache/qpid/jms/message/JmsMessage.java 
b/qpid-jms-client/src/main/java/org/apache/qpid/jms/message/JmsMessage.java
index ce82520..1a2450e 100644
--- a/qpid-jms-client/src/main/java/org/apache/qpid/jms/message/JmsMessage.java
+++ b/qpid-jms-client/src/main/java/org/apache/qpid/jms/message/JmsMessage.java
@@ -286,7 +286,10 @@ public class JmsMessage implements javax.jms.Message {
 
     @Override
     public Enumeration<?> getPropertyNames() throws JMSException {
-        return Collections.enumeration(facade.getPropertyNames());
+        Set<String> result = facade.getPropertyNames();
+        result.addAll(JmsMessagePropertyIntercepter.getPropertyNames(facade, 
true));
+
+        return Collections.enumeration(result);
     }
 
     /**
@@ -297,7 +300,7 @@ public class JmsMessage implements javax.jms.Message {
      * @throws JMSException
      */
     public Enumeration<?> getAllPropertyNames() throws JMSException {
-        Set<String> result = new 
HashSet<String>(facade.getProperties().keySet());
+        Set<String> result = new HashSet<String>(facade.getPropertyNames());
         result.addAll(JmsMessagePropertyIntercepter.getAllPropertyNames());
         return Collections.enumeration(result);
     }

http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/756f120b/qpid-jms-client/src/main/java/org/apache/qpid/jms/message/JmsMessagePropertyIntercepter.java
----------------------------------------------------------------------
diff --git 
a/qpid-jms-client/src/main/java/org/apache/qpid/jms/message/JmsMessagePropertyIntercepter.java
 
b/qpid-jms-client/src/main/java/org/apache/qpid/jms/message/JmsMessagePropertyIntercepter.java
index b650204..617e47a 100644
--- 
a/qpid-jms-client/src/main/java/org/apache/qpid/jms/message/JmsMessagePropertyIntercepter.java
+++ 
b/qpid-jms-client/src/main/java/org/apache/qpid/jms/message/JmsMessagePropertyIntercepter.java
@@ -516,7 +516,9 @@ public class JmsMessagePropertyIntercepter {
     /**
      * For each of the currently configured message property intercepter 
instance a
      * string key value is inserted into an Set and returned if the property 
has a
-     * value and is available for a read operation.
+     * value and is available for a read operation. The Set returned may be
+     * manipulated by the receiver without impacting the facade, and an empty 
set
+     * will be returned if there are no matching properties.
      *
      * @param message
      *        the JmsMessageFacade instance to read from

http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/756f120b/qpid-jms-client/src/main/java/org/apache/qpid/jms/message/facade/JmsMessageFacade.java
----------------------------------------------------------------------
diff --git 
a/qpid-jms-client/src/main/java/org/apache/qpid/jms/message/facade/JmsMessageFacade.java
 
b/qpid-jms-client/src/main/java/org/apache/qpid/jms/message/facade/JmsMessageFacade.java
index c879d5d..db64900 100644
--- 
a/qpid-jms-client/src/main/java/org/apache/qpid/jms/message/facade/JmsMessageFacade.java
+++ 
b/qpid-jms-client/src/main/java/org/apache/qpid/jms/message/facade/JmsMessageFacade.java
@@ -48,8 +48,9 @@ public interface JmsMessageFacade {
     public Map<String, Object> getProperties() throws JMSException;
 
     /**
-     * Returns the property names for this Message instance, including any 
relevant to
-     * values managed through the facade such as group sequence.
+     * Returns the property names for this Message instance. The Set returned 
may be
+     * manipulated by the receiver without impacting the facade, and an empty 
set
+     * will be returned if there are no matching properties.
      *
      * @return a set containing the property names of this Message
      *

http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/756f120b/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsMessageFacade.java
----------------------------------------------------------------------
diff --git 
a/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsMessageFacade.java
 
b/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsMessageFacade.java
index ffaa165..21067b3 100644
--- 
a/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsMessageFacade.java
+++ 
b/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsMessageFacade.java
@@ -169,6 +169,8 @@ public class AmqpJmsMessageFacade implements 
JmsMessageFacade {
 
     /**
      * Returns a set of all the property names that have been set in this 
message.
+     * The Set returned may be manipulated by the receiver without impacting 
the facade,
+     * and an empty set will be returned if there are no matching properties.
      *
      * @return a set of property names in the message or an empty set if none 
are set.
      */
@@ -253,6 +255,7 @@ public class AmqpJmsMessageFacade implements 
JmsMessageFacade {
     @Override
     public void clearProperties() {
         clearAllApplicationProperties();
+        //TODO: should we clear some/all of those intercepted by 
AmqpJmsMessagePropertyIntercepter?
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/756f120b/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsMessagePropertyIntercepter.java
----------------------------------------------------------------------
diff --git 
a/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsMessagePropertyIntercepter.java
 
b/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsMessagePropertyIntercepter.java
index 530904f..0fd2d39 100644
--- 
a/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsMessagePropertyIntercepter.java
+++ 
b/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsMessagePropertyIntercepter.java
@@ -248,7 +248,9 @@ public class AmqpJmsMessagePropertyIntercepter {
     /**
      * For each of the currently configured message property intercepter 
instance a
      * string key value is inserted into an Set and returned if the property 
has a
-     * value and is available for a read operation.
+     * value and is available for a read operation. The Set returned may be
+     * manipulated by the receiver without impacting the facade, and an empty 
set
+     * will be returned if there are no matching properties.
      *
      * @return a Set<String> containing the names of all intercepted 
properties with a value.
      */

http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/756f120b/qpid-jms-client/src/test/java/org/apache/qpid/jms/integration/MessageIntegrationTest.java
----------------------------------------------------------------------
diff --git 
a/qpid-jms-client/src/test/java/org/apache/qpid/jms/integration/MessageIntegrationTest.java
 
b/qpid-jms-client/src/test/java/org/apache/qpid/jms/integration/MessageIntegrationTest.java
index bc12995..f46a6d0 100644
--- 
a/qpid-jms-client/src/test/java/org/apache/qpid/jms/integration/MessageIntegrationTest.java
+++ 
b/qpid-jms-client/src/test/java/org/apache/qpid/jms/integration/MessageIntegrationTest.java
@@ -865,7 +865,6 @@ public class MessageIntegrationTest extends QpidJmsTestCase
      * fields of the AMQP properties section set, that the expected JMSX or 
JMS_AMQP properties
      * are present, and the expected values are returned when retrieved from 
the JMS message.
      */
-    @Ignore //TODO: currently failing on propertyNames handling
     @Test(timeout = 2000)
     public void testReceivedMessageWithGroupRelatedPropertiesSet() throws 
Exception {
         try (TestAmqpPeer testPeer = new 
TestAmqpPeer(IntegrationTestFixture.PORT);) {

http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/756f120b/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/JmsMessageTest.java
----------------------------------------------------------------------
diff --git 
a/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/JmsMessageTest.java 
b/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/JmsMessageTest.java
index a049148..3b68fb8 100644
--- 
a/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/JmsMessageTest.java
+++ 
b/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/JmsMessageTest.java
@@ -372,25 +372,25 @@ public class JmsMessageTest {
     @SuppressWarnings("rawtypes")
     public void testGetPropertyNames() throws JMSException {
         JmsMessage msg = factory.createMessage();
-        String name1 = "floatProperty";
-        msg.setFloatProperty(name1, 1.3f);
-        String name2 = "JMSXDeliveryCount";
-        msg.setIntProperty(name2, 1);
-        String name3 = "JMSRedelivered";
-        msg.setBooleanProperty(name3, false);
-        boolean found1 = false;
-        boolean found2 = false;
-        boolean found3 = false;
+        String propName = "floatProperty";
+        msg.setFloatProperty(propName, 1.3f);
+        String jmsxName = "JMSXDeliveryCount";
+        msg.setIntProperty(jmsxName, 1);
+        String headerName = "JMSRedelivered";
+        msg.setBooleanProperty(headerName, false);
+        boolean propNameFound = false;
+        boolean jmsxNameFound = false;
+        boolean headerNameFound1 = false;
         for (Enumeration iter = msg.getPropertyNames(); 
iter.hasMoreElements();) {
             Object element = iter.nextElement();
-            found1 |= element.equals(name1);
-            found2 |= element.equals(name2);
-            found3 |= element.equals(name3);
-        }
-        assertTrue("prop name1 found", found1);
-        // spec compliance, only non JMS (and JMSX) props returned
-        assertFalse("prop name2 not found", found2);
-        assertFalse("prop name4 not found", found3);
+            propNameFound |= element.equals(propName);
+            jmsxNameFound |= element.equals(jmsxName);
+            headerNameFound1 |= element.equals(headerName);
+        }
+        assertTrue("prop name not found", propNameFound);
+        assertTrue("jmsx prop name not found", jmsxNameFound);
+        // spec compliance, only non-'JMS header' props returned
+        assertFalse("header name should not have been found", 
headerNameFound1);
     }
 
     @Test


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to