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]
