You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by ro...@apache.org on 2014/10/08 17:51:27 UTC

[1/2] git commit: allow retrieving the intercepted property names without inclusing the standard JMS header names

Repository: qpid-jms
Updated Branches:
  refs/heads/master e6fe539fb -> 756f120b9


allow retrieving the intercepted property names without inclusing the standard JMS header names


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

Branch: refs/heads/master
Commit: 4d3e934586055b21fa82e783f3cfbb825771727c
Parents: e6fe539
Author: Robert Gemmell <ro...@apache.org>
Authored: Wed Oct 8 15:01:18 2014 +0100
Committer: Robert Gemmell <ro...@apache.org>
Committed: Wed Oct 8 16:50:38 2014 +0100

----------------------------------------------------------------------
 .../message/JmsMessagePropertyIntercepter.java  |  23 ++-
 .../JmsMessagePropertyIntercepterTest.java      | 184 ++++++++++++++++---
 2 files changed, 177 insertions(+), 30 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/4d3e9345/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 ec52f1f..b650204 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
@@ -53,6 +53,7 @@ public class JmsMessagePropertyIntercepter {
 
     private static final Map<String, PropertyIntercepter> PROPERTY_INTERCEPTERS =
         new HashMap<String, PropertyIntercepter>();
+    private static final Set<String> STANDARD_HEADERS = new HashSet<String>();
 
     /**
      * Interface for a Property intercepter object used to write JMS style
@@ -100,6 +101,17 @@ public class JmsMessagePropertyIntercepter {
     }
 
     static {
+        STANDARD_HEADERS.add(JMS_MESSAGEID);
+        STANDARD_HEADERS.add(JMS_TIMESTAMP);
+        STANDARD_HEADERS.add(JMS_CORRELATIONID);
+        STANDARD_HEADERS.add(JMS_REPLYTO);
+        STANDARD_HEADERS.add(JMS_DESTINATION);
+        STANDARD_HEADERS.add(JMS_DELIVERY_MODE);
+        STANDARD_HEADERS.add(JMS_REDELIVERED);
+        STANDARD_HEADERS.add(JMS_TYPE);
+        STANDARD_HEADERS.add(JMS_EXPIRATION);
+        STANDARD_HEADERS.add(JMS_PRIORITY);
+
         PROPERTY_INTERCEPTERS.put(JMSX_DELIVERY_COUNT, new PropertyIntercepter() {
             @Override
             public void setProperty(JmsMessageFacade message, Object value) throws JMSException {
@@ -506,11 +518,20 @@ public class JmsMessagePropertyIntercepter {
      * string key value is inserted into an Set and returned if the property has a
      * value and is available for a read operation.
      *
+     * @param message
+     *        the JmsMessageFacade instance to read from
+     * @param excludeStandardJMSHeaders
+     *        whether the standard JMS header names should be excluded from the returned set
+     *
      * @return a Set<String> containing the names of all intercepted properties with a value.
      */
-    public static Set<String> getPropertyNames(JmsMessageFacade message) {
+    public static Set<String> getPropertyNames(JmsMessageFacade message, boolean excludeStandardJMSHeaders) {
         Set<String> names = new HashSet<String>();
         for (Entry<String, PropertyIntercepter> entry : PROPERTY_INTERCEPTERS.entrySet()) {
+            if (excludeStandardJMSHeaders && STANDARD_HEADERS.contains(entry.getKey())) {
+                continue;
+            }
+
             if (entry.getValue().propertyExists(message)) {
                 names.add(entry.getKey());
             }

http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/4d3e9345/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/JmsMessagePropertyIntercepterTest.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/JmsMessagePropertyIntercepterTest.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/JmsMessagePropertyIntercepterTest.java
index 96ade98..e67f42d 100644
--- a/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/JmsMessagePropertyIntercepterTest.java
+++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/JmsMessagePropertyIntercepterTest.java
@@ -46,7 +46,7 @@ import org.mockito.Mockito;
 
 public class JmsMessagePropertyIntercepterTest {
 
-    //---------- JMSReplyTo --------------------------------------------------//
+    //---------- JMSDestination --------------------------------------------------//
 
     @Test
     public void testJMSDestinationInGetAllPropertyNames() throws JMSException {
@@ -78,16 +78,29 @@ public class JmsMessagePropertyIntercepterTest {
 
     @Test
     public void testJMSDestinationInGetPropertyNamesWhenSet() throws JMSException {
+        doJMSDestinationInGetPropertyNamesWhenSetTestImpl(false);
+    }
+
+    @Test
+    public void testJMSDestinationInGetPropertyNamesWhenSetAndExcludingStandardJMSHeaders() throws JMSException {
+        doJMSDestinationInGetPropertyNamesWhenSetTestImpl(true);
+    }
+
+    private void doJMSDestinationInGetPropertyNamesWhenSetTestImpl(boolean excludeStandardJmsHeaders) {
         JmsMessageFacade message = Mockito.mock(JmsMessageFacade.class);
         JmsDestination queue = new JmsQueue("TestDestination");
         Mockito.when(message.getDestination()).thenReturn(queue);
-        assertTrue(JmsMessagePropertyIntercepter.getPropertyNames(message).contains(JMS_DESTINATION));
+        if (excludeStandardJmsHeaders) {
+            assertFalse(JmsMessagePropertyIntercepter.getPropertyNames(message, true).contains(JMS_DESTINATION));
+        } else {
+            assertTrue(JmsMessagePropertyIntercepter.getPropertyNames(message, false).contains(JMS_DESTINATION));
+        }
     }
 
     @Test
     public void testJMSDestinationNotInGetPropertyNamesWhenNotSet() throws JMSException {
         JmsMessageFacade message = Mockito.mock(JmsMessageFacade.class);
-        assertFalse(JmsMessagePropertyIntercepter.getPropertyNames(message).contains(JMS_DESTINATION));
+        assertFalse(JmsMessagePropertyIntercepter.getPropertyNames(message, false).contains(JMS_DESTINATION));
     }
 
     //---------- JMSReplyTo --------------------------------------------------//
@@ -122,16 +135,29 @@ public class JmsMessagePropertyIntercepterTest {
 
     @Test
     public void testJMSReplyToInGetPropertyNamesWhenSet() throws JMSException {
+        doJMSReplyToInGetPropertyNamesWhenSetTestImpl(false);
+    }
+
+    @Test
+    public void testJMSReplyToNotInGetPropertyNamesWhenSetAndExcludingStandardJMSHeaders() throws JMSException {
+        doJMSReplyToInGetPropertyNamesWhenSetTestImpl(true);
+    }
+
+    private void doJMSReplyToInGetPropertyNamesWhenSetTestImpl(boolean excludeStandardJmsHeaders) {
         JmsMessageFacade message = Mockito.mock(JmsMessageFacade.class);
         JmsDestination queue = new JmsQueue("TestDestination");
         Mockito.when(message.getReplyTo()).thenReturn(queue);
-        assertTrue(JmsMessagePropertyIntercepter.getPropertyNames(message).contains(JMS_REPLYTO));
+        if (excludeStandardJmsHeaders) {
+            assertFalse(JmsMessagePropertyIntercepter.getPropertyNames(message, true).contains(JMS_REPLYTO));
+        } else {
+            assertTrue(JmsMessagePropertyIntercepter.getPropertyNames(message, false).contains(JMS_REPLYTO));
+        }
     }
 
     @Test
     public void testJMSReplyToNotInGetPropertyNamesWhenNotSet() throws JMSException {
         JmsMessageFacade message = Mockito.mock(JmsMessageFacade.class);
-        assertFalse(JmsMessagePropertyIntercepter.getPropertyNames(message).contains(JMS_REPLYTO));
+        assertFalse(JmsMessagePropertyIntercepter.getPropertyNames(message, false).contains(JMS_REPLYTO));
     }
 
     //---------- JMSType -----------------------------------------------------//
@@ -164,15 +190,28 @@ public class JmsMessagePropertyIntercepterTest {
 
     @Test
     public void testJMSTypeInGetPropertyNamesWhenSet() throws JMSException {
+        doJMSTypeInGetPropertyNamesWhenSetTestImpl(false);
+    }
+
+    @Test
+    public void testJMSTypeNotInGetPropertyNamesWhenSetAndExcludingStandardJMSHeaders() throws JMSException {
+        doJMSTypeInGetPropertyNamesWhenSetTestImpl(true);
+    }
+
+    private void doJMSTypeInGetPropertyNamesWhenSetTestImpl(boolean excludeStandardJmsHeaders) {
         JmsMessageFacade message = Mockito.mock(JmsMessageFacade.class);
         Mockito.when(message.getType()).thenReturn("SomeType");
-        assertTrue(JmsMessagePropertyIntercepter.getPropertyNames(message).contains(JMS_TYPE));
+        if (excludeStandardJmsHeaders) {
+            assertFalse(JmsMessagePropertyIntercepter.getPropertyNames(message, true).contains(JMS_TYPE));
+        } else {
+            assertTrue(JmsMessagePropertyIntercepter.getPropertyNames(message, false).contains(JMS_TYPE));
+        }
     }
 
     @Test
     public void testJMSTypeNotInGetPropertyNamesWhenNotSet() throws JMSException {
         JmsMessageFacade message = Mockito.mock(JmsMessageFacade.class);
-        assertFalse(JmsMessagePropertyIntercepter.getPropertyNames(message).contains(JMS_TYPE));
+        assertFalse(JmsMessagePropertyIntercepter.getPropertyNames(message, false).contains(JMS_TYPE));
     }
 
     //---------- JMSDeliveryMode ---------------------------------------------//
@@ -230,14 +269,21 @@ public class JmsMessagePropertyIntercepterTest {
     public void testJMSDeliveryModeInGetPropertyNamesWhenPersistent() throws JMSException {
         JmsMessageFacade message = Mockito.mock(JmsMessageFacade.class);
         Mockito.when(message.isPersistent()).thenReturn(true);
-        assertTrue(JmsMessagePropertyIntercepter.getPropertyNames(message).contains(JMS_DELIVERY_MODE));
+        assertTrue(JmsMessagePropertyIntercepter.getPropertyNames(message, false).contains(JMS_DELIVERY_MODE));
     }
 
     @Test
     public void testJMSDeliveryModeInGetPropertyNamesWhenNotPersistent() throws JMSException {
         JmsMessageFacade message = Mockito.mock(JmsMessageFacade.class);
         Mockito.when(message.isPersistent()).thenReturn(false);
-        assertTrue(JmsMessagePropertyIntercepter.getPropertyNames(message).contains(JMS_DELIVERY_MODE));
+        assertTrue(JmsMessagePropertyIntercepter.getPropertyNames(message, false).contains(JMS_DELIVERY_MODE));
+    }
+
+    @Test
+    public void testJMSDeliveryModeNotInGetPropertyNamesWhenExcludingStandardJMSHeaders() throws JMSException {
+        JmsMessageFacade message = Mockito.mock(JmsMessageFacade.class);
+        Mockito.when(message.isPersistent()).thenReturn(true);
+        assertFalse(JmsMessagePropertyIntercepter.getPropertyNames(message, true).contains(JMS_DELIVERY_MODE));
     }
 
     //---------- JMSPriority ---------------------------------------------//
@@ -273,14 +319,21 @@ public class JmsMessagePropertyIntercepterTest {
     public void testJMSPriorityInGetPropertyNamesWhenDefault() throws JMSException {
         JmsMessageFacade message = Mockito.mock(JmsMessageFacade.class);
         Mockito.when(message.getPriority()).thenReturn(Message.DEFAULT_PRIORITY);
-        assertTrue(JmsMessagePropertyIntercepter.getPropertyNames(message).contains(JMS_PRIORITY));
+        assertTrue(JmsMessagePropertyIntercepter.getPropertyNames(message, false).contains(JMS_PRIORITY));
     }
 
     @Test
     public void testJMSPriorityInGetPropertyNamesWhenNotDefault() throws JMSException {
         JmsMessageFacade message = Mockito.mock(JmsMessageFacade.class);
         Mockito.when(message.getPriority()).thenReturn(1);
-        assertTrue(JmsMessagePropertyIntercepter.getPropertyNames(message).contains(JMS_PRIORITY));
+        assertTrue(JmsMessagePropertyIntercepter.getPropertyNames(message, false).contains(JMS_PRIORITY));
+    }
+
+    @Test
+    public void testJMSPriorityNotInGetPropertyNamesWhenExcludingStandardJMSHeaders() throws JMSException {
+        JmsMessageFacade message = Mockito.mock(JmsMessageFacade.class);
+        Mockito.when(message.getPriority()).thenReturn(1);
+        assertFalse(JmsMessagePropertyIntercepter.getPropertyNames(message, true).contains(JMS_PRIORITY));
     }
 
     //---------- JMSMessageID ---------------------------------------------//
@@ -313,15 +366,28 @@ public class JmsMessagePropertyIntercepterTest {
 
     @Test
     public void testJMSMessageIDInGetPropertyNamesWhenSet() throws JMSException {
+        doJMSMessageIDInGetPropertyNamesWhenSetTestImpl(false);
+    }
+
+    @Test
+    public void testJMSMessageIDNotInGetPropertyNamesWhenSetAndExcludingStandardJMSHeaders() throws JMSException {
+        doJMSMessageIDInGetPropertyNamesWhenSetTestImpl(true);
+    }
+
+    private void doJMSMessageIDInGetPropertyNamesWhenSetTestImpl(boolean excludeStandardJmsHeaders) {
         JmsMessageFacade message = Mockito.mock(JmsMessageFacade.class);
         Mockito.when(message.getMessageId()).thenReturn("MESSAGE_ID");
-        assertTrue(JmsMessagePropertyIntercepter.getPropertyNames(message).contains(JMS_MESSAGEID));
+        if (excludeStandardJmsHeaders) {
+            assertFalse(JmsMessagePropertyIntercepter.getPropertyNames(message, true).contains(JMS_MESSAGEID));
+        } else {
+            assertTrue(JmsMessagePropertyIntercepter.getPropertyNames(message, false).contains(JMS_MESSAGEID));
+        }
     }
 
     @Test
     public void testJMSMessageIDNotInGetPropertyNamesWhenNotSet() throws JMSException {
         JmsMessageFacade message = Mockito.mock(JmsMessageFacade.class);
-        assertFalse(JmsMessagePropertyIntercepter.getPropertyNames(message).contains(JMS_MESSAGEID));
+        assertFalse(JmsMessagePropertyIntercepter.getPropertyNames(message, false).contains(JMS_MESSAGEID));
     }
 
     //---------- JMSTimestamp ---------------------------------------------//
@@ -355,15 +421,28 @@ public class JmsMessagePropertyIntercepterTest {
 
     @Test
     public void testJMSTimeStampInGetPropertyNamesWhenSet() throws JMSException {
+        doJMSTimeStampInGetPropertyNamesWhenSetTestImpl(false);
+    }
+
+    @Test
+    public void testJMSTimeStampNotInGetPropertyNamesWhenSetAndExcludingStandardJMSHeaders() throws JMSException {
+        doJMSTimeStampInGetPropertyNamesWhenSetTestImpl(true);
+    }
+
+    private void doJMSTimeStampInGetPropertyNamesWhenSetTestImpl(boolean excludeStandardJmsHeaders) {
         JmsMessageFacade message = Mockito.mock(JmsMessageFacade.class);
         Mockito.when(message.getTimestamp()).thenReturn(900L);
-        assertTrue(JmsMessagePropertyIntercepter.getPropertyNames(message).contains(JMS_TIMESTAMP));
+        if (excludeStandardJmsHeaders) {
+            assertFalse(JmsMessagePropertyIntercepter.getPropertyNames(message, true).contains(JMS_TIMESTAMP));
+        } else {
+            assertTrue(JmsMessagePropertyIntercepter.getPropertyNames(message, false).contains(JMS_TIMESTAMP));
+        }
     }
 
     @Test
     public void testJMSTimeStampNotInGetPropertyNamesWhenNotSet() throws JMSException {
         JmsMessageFacade message = Mockito.mock(JmsMessageFacade.class);
-        assertFalse(JmsMessagePropertyIntercepter.getPropertyNames(message).contains(JMS_TIMESTAMP));
+        assertFalse(JmsMessagePropertyIntercepter.getPropertyNames(message, false).contains(JMS_TIMESTAMP));
     }
 
     //---------- JMSCorrelationID ---------------------------------------------//
@@ -396,15 +475,28 @@ public class JmsMessagePropertyIntercepterTest {
 
     @Test
     public void testJMSCorrelationIDInGetPropertyNamesWhenSet() throws JMSException {
+        doJMSCorrelationIDInGetPropertyNamesWhenSetTestImpl(false);
+    }
+
+    @Test
+    public void testJMSCorrelationIDNotInGetPropertyNamesWhenSetAndExcludingStandardJMSHeaders() throws JMSException {
+        doJMSCorrelationIDInGetPropertyNamesWhenSetTestImpl(true);
+    }
+
+    private void doJMSCorrelationIDInGetPropertyNamesWhenSetTestImpl(boolean excludeStandardJmsHeaders) {
         JmsMessageFacade message = Mockito.mock(JmsMessageFacade.class);
         Mockito.when(message.getCorrelationId()).thenReturn("MESSAGE_ID");
-        assertTrue(JmsMessagePropertyIntercepter.getPropertyNames(message).contains(JMS_CORRELATIONID));
+        if (excludeStandardJmsHeaders) {
+            assertFalse(JmsMessagePropertyIntercepter.getPropertyNames(message, true).contains(JMS_CORRELATIONID));
+        } else {
+            assertTrue(JmsMessagePropertyIntercepter.getPropertyNames(message, false).contains(JMS_CORRELATIONID));
+        }
     }
 
     @Test
     public void testJMSCorrelationIDNotInGetPropertyNamesWhenNotSet() throws JMSException {
         JmsMessageFacade message = Mockito.mock(JmsMessageFacade.class);
-        assertFalse(JmsMessagePropertyIntercepter.getPropertyNames(message).contains(JMS_CORRELATIONID));
+        assertFalse(JmsMessagePropertyIntercepter.getPropertyNames(message, false).contains(JMS_CORRELATIONID));
     }
 
     //---------- JMSExpiration ---------------------------------------------//
@@ -438,15 +530,28 @@ public class JmsMessagePropertyIntercepterTest {
 
     @Test
     public void testJMSExpirationInGetPropertyNamesWhenSet() throws JMSException {
+        doJMSExpirationInGetPropertyNamesWhenSetTestImpl(false);
+    }
+
+    @Test
+    public void testJMSExpirationNotInGetPropertyNamesWhenSetAndExcludingStandardJMSHeaders() throws JMSException {
+        doJMSExpirationInGetPropertyNamesWhenSetTestImpl(true);
+    }
+
+    private void doJMSExpirationInGetPropertyNamesWhenSetTestImpl(boolean excludeStandardJmsHeaders) {
         JmsMessageFacade message = Mockito.mock(JmsMessageFacade.class);
         Mockito.when(message.getExpiration()).thenReturn(900L);
-        assertTrue(JmsMessagePropertyIntercepter.getPropertyNames(message).contains(JMS_EXPIRATION));
+        if (excludeStandardJmsHeaders) {
+            assertFalse(JmsMessagePropertyIntercepter.getPropertyNames(message, true).contains(JMS_EXPIRATION));
+        } else {
+            assertTrue(JmsMessagePropertyIntercepter.getPropertyNames(message, false).contains(JMS_EXPIRATION));
+        }
     }
 
     @Test
     public void testJMSExpirationNotInGetPropertyNamesWhenNotSet() throws JMSException {
         JmsMessageFacade message = Mockito.mock(JmsMessageFacade.class);
-        assertFalse(JmsMessagePropertyIntercepter.getPropertyNames(message).contains(JMS_EXPIRATION));
+        assertFalse(JmsMessagePropertyIntercepter.getPropertyNames(message, false).contains(JMS_EXPIRATION));
     }
 
     //---------- JMSRedelivered ---------------------------------------------//
@@ -488,16 +593,29 @@ public class JmsMessagePropertyIntercepterTest {
 
     @Test
     public void testJMSRedeliveredInGetPropertyNamesWhenSet() throws JMSException {
+        doJMSRedeliveredInGetPropertyNamesWhenSetTestImpl(false);
+    }
+
+    @Test
+    public void testJMSRedeliveredNotInGetPropertyNamesWhenSetAndExcludingStandardJMSHeaders() throws JMSException {
+        doJMSRedeliveredInGetPropertyNamesWhenSetTestImpl(true);
+    }
+
+    private void doJMSRedeliveredInGetPropertyNamesWhenSetTestImpl(boolean excludeStandardJmsHeaders) {
         JmsMessageFacade message = Mockito.mock(JmsMessageFacade.class);
         Mockito.when(message.isRedelivered()).thenReturn(true);
-        assertTrue(JmsMessagePropertyIntercepter.getPropertyNames(message).contains(JMS_REDELIVERED));
+        if (excludeStandardJmsHeaders) {
+            assertFalse(JmsMessagePropertyIntercepter.getPropertyNames(message, true).contains(JMS_REDELIVERED));
+        } else {
+            assertTrue(JmsMessagePropertyIntercepter.getPropertyNames(message, false).contains(JMS_REDELIVERED));
+        }
     }
 
     @Test
     public void testJMSRedeliveredNotInGetPropertyNamesWhenNotSet() throws JMSException {
         JmsMessageFacade message = Mockito.mock(JmsMessageFacade.class);
         Mockito.when(message.isRedelivered()).thenReturn(false);
-        assertFalse(JmsMessagePropertyIntercepter.getPropertyNames(message).contains(JMS_REDELIVERED));
+        assertFalse(JmsMessagePropertyIntercepter.getPropertyNames(message, false).contains(JMS_REDELIVERED));
     }
 
     //---------- JMSXGroupID ---------------------------------------------//
@@ -532,13 +650,15 @@ public class JmsMessagePropertyIntercepterTest {
     public void testJMSXGroupIDInGetPropertyNamesWhenSet() throws JMSException {
         JmsMessageFacade message = Mockito.mock(JmsMessageFacade.class);
         Mockito.when(message.getGroupId()).thenReturn("GROUP_ID");
-        assertTrue(JmsMessagePropertyIntercepter.getPropertyNames(message).contains(JMSX_GROUPID));
+        assertTrue(JmsMessagePropertyIntercepter.getPropertyNames(message, false).contains(JMSX_GROUPID));
+        assertTrue(JMSX_GROUPID + " is not a header and should be included",
+                  JmsMessagePropertyIntercepter.getPropertyNames(message, true).contains(JMSX_GROUPID));
     }
 
     @Test
     public void testJMSXGroupIDNotInGetPropertyNamesWhenNotSet() throws JMSException {
         JmsMessageFacade message = Mockito.mock(JmsMessageFacade.class);
-        assertFalse(JmsMessagePropertyIntercepter.getPropertyNames(message).contains(JMSX_GROUPID));
+        assertFalse(JmsMessagePropertyIntercepter.getPropertyNames(message, false).contains(JMSX_GROUPID));
     }
 
     //---------- JMSXGroupSeq ---------------------------------------------//
@@ -573,13 +693,15 @@ public class JmsMessagePropertyIntercepterTest {
     public void testJMSXGroupSeqInGetPropertyNamesWhenSet() throws JMSException {
         JmsMessageFacade message = Mockito.mock(JmsMessageFacade.class);
         Mockito.when(message.getGroupSequence()).thenReturn(1);
-        assertTrue(JmsMessagePropertyIntercepter.getPropertyNames(message).contains(JMSX_GROUPSEQ));
+        assertTrue(JmsMessagePropertyIntercepter.getPropertyNames(message, false).contains(JMSX_GROUPSEQ));
+        assertTrue(JMSX_GROUPSEQ + " is not a header and should be included",
+                   JmsMessagePropertyIntercepter.getPropertyNames(message, true).contains(JMSX_GROUPSEQ));
     }
 
     @Test
     public void testJMSXGroupSeqNotInGetPropertyNamesWhenNotSet() throws JMSException {
         JmsMessageFacade message = Mockito.mock(JmsMessageFacade.class);
-        assertFalse(JmsMessagePropertyIntercepter.getPropertyNames(message).contains(JMSX_GROUPSEQ));
+        assertFalse(JmsMessagePropertyIntercepter.getPropertyNames(message, false).contains(JMSX_GROUPSEQ));
     }
 
     //---------- JMSXDeliveryCount ---------------------------------------------//
@@ -614,13 +736,15 @@ public class JmsMessagePropertyIntercepterTest {
     public void testJMSXDeliveryCountInGetPropertyNamesWhenSet() throws JMSException {
         JmsMessageFacade message = Mockito.mock(JmsMessageFacade.class);
         Mockito.when(message.getDeliveryCount()).thenReturn(2);
-        assertTrue(JmsMessagePropertyIntercepter.getPropertyNames(message).contains(JMSX_DELIVERY_COUNT));
+        assertTrue(JmsMessagePropertyIntercepter.getPropertyNames(message, false).contains(JMSX_DELIVERY_COUNT));
+        assertTrue(JMSX_DELIVERY_COUNT + " is not a header and should be included",
+                   JmsMessagePropertyIntercepter.getPropertyNames(message, true).contains(JMSX_DELIVERY_COUNT));
     }
 
     @Test
     public void testJMSXDeliveryCountInGetPropertyNamesWhenNotSet() throws JMSException {
         JmsMessageFacade message = Mockito.mock(JmsMessageFacade.class);
-        assertTrue(JmsMessagePropertyIntercepter.getPropertyNames(message).contains(JMSX_DELIVERY_COUNT));
+        assertTrue(JmsMessagePropertyIntercepter.getPropertyNames(message, false).contains(JMSX_DELIVERY_COUNT));
     }
 
     //---------- JMSXUserID ---------------------------------------------//
@@ -655,12 +779,14 @@ public class JmsMessagePropertyIntercepterTest {
     public void testJMSXUserIdCountInGetPropertyNamesWhenSet() throws JMSException {
         JmsMessageFacade message = Mockito.mock(JmsMessageFacade.class);
         Mockito.when(message.getUserId()).thenReturn("Administrator");
-        assertTrue(JmsMessagePropertyIntercepter.getPropertyNames(message).contains(JMSX_USERID));
+        assertTrue(JmsMessagePropertyIntercepter.getPropertyNames(message, false).contains(JMSX_USERID));
+        assertTrue(JMSX_USERID + " is not a header and should be included",
+                   JmsMessagePropertyIntercepter.getPropertyNames(message, true).contains(JMSX_USERID));
     }
 
     @Test
     public void testJMSXUserIdNotInGetPropertyNamesWhenNotSet() throws JMSException {
         JmsMessageFacade message = Mockito.mock(JmsMessageFacade.class);
-        assertFalse(JmsMessagePropertyIntercepter.getPropertyNames(message).contains(JMSX_USERID));
+        assertFalse(JmsMessagePropertyIntercepter.getPropertyNames(message, false).contains(JMSX_USERID));
     }
 }


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org


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

Posted by ro...@apache.org.
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 <ro...@apache.org>
Authored: Wed Oct 8 16:17:07 2014 +0100
Committer: Robert Gemmell <ro...@apache.org>
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: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org