You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by ta...@apache.org on 2016/05/10 22:39:17 UTC

qpid-jms git commit: QPIDJMS-173 remove the presettle option for consumer in TX from the policy.

Repository: qpid-jms
Updated Branches:
  refs/heads/master 0fe6b0471 -> 895b3a826


QPIDJMS-173 remove the presettle option for consumer in TX from the
policy.

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

Branch: refs/heads/master
Commit: 895b3a826c55ab91a624f0ba44086f684c70f838
Parents: 0fe6b04
Author: Timothy Bish <ta...@gmail.com>
Authored: Tue May 10 18:29:37 2016 -0400
Committer: Timothy Bish <ta...@gmail.com>
Committed: Tue May 10 18:29:37 2016 -0400

----------------------------------------------------------------------
 .../org/apache/qpid/jms/JmsPresettlePolicy.java | 27 +-----
 .../PresettledConsumerIntegrationTest.java      | 93 +++++++++++---------
 2 files changed, 56 insertions(+), 64 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/895b3a82/qpid-jms-client/src/main/java/org/apache/qpid/jms/JmsPresettlePolicy.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/main/java/org/apache/qpid/jms/JmsPresettlePolicy.java b/qpid-jms-client/src/main/java/org/apache/qpid/jms/JmsPresettlePolicy.java
index bf15ef0..30ab9ea 100644
--- a/qpid-jms-client/src/main/java/org/apache/qpid/jms/JmsPresettlePolicy.java
+++ b/qpid-jms-client/src/main/java/org/apache/qpid/jms/JmsPresettlePolicy.java
@@ -32,7 +32,6 @@ public class JmsPresettlePolicy {
     private boolean presettleConsumers;
     private boolean presettleTopicConsumers;
     private boolean presettleQueueConsumers;
-    private boolean presettleTransactedConsumers;
 
     public JmsPresettlePolicy() {
     }
@@ -46,7 +45,6 @@ public class JmsPresettlePolicy {
         this.presettleConsumers = source.presettleConsumers;
         this.presettleTopicConsumers = source.presettleTopicConsumers;
         this.presettleQueueConsumers = source.presettleQueueConsumers;
-        this.presettleTransactedConsumers = source.presettleTransactedConsumers;
     }
 
     public JmsPresettlePolicy copy() {
@@ -232,25 +230,6 @@ public class JmsPresettlePolicy {
     }
 
     /**
-     * @return the presettleTransactedConsumers setting for this policy.
-     */
-    public boolean isPresettleTransactedConsumers() {
-        return presettleTransactedConsumers;
-    }
-
-    /**
-     * The presettle consumers inside a transaction value to apply.  When true all the
-     * MessageConsumer created in a transacted Session  will indicate that presettled
-     * messages are requested.
-     *
-     * @param presettleTransactedConsumers
-     *      the presettleTransactedConsumers value to apply to this policy.
-     */
-    public void setPresettleTransactedConsumers(boolean presettleTransactedConsumers) {
-        this.presettleTransactedConsumers = presettleTransactedConsumers;
-    }
-
-    /**
      * Determines when a consumer will be created with the settlement mode set to presettled.
      * <p>
      * Called when the a consumer is being created to determine whether the consumer will
@@ -266,9 +245,9 @@ public class JmsPresettlePolicy {
      */
     public boolean isConsumerPresttled(JmsDestination destination, JmsSession session) {
 
-        if (presettleAll || presettleConsumers) {
-            return true;
-        } else if (session.isTransacted() && presettleTransactedConsumers) {
+        if (session.isTransacted()) {
+            return false;
+        } else if (presettleAll || presettleConsumers) {
             return true;
         } else if (destination != null && destination.isQueue() && presettleQueueConsumers) {
             return true;

http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/895b3a82/qpid-jms-client/src/test/java/org/apache/qpid/jms/integration/PresettledConsumerIntegrationTest.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/integration/PresettledConsumerIntegrationTest.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/integration/PresettledConsumerIntegrationTest.java
index 6603320..469d30b 100644
--- a/qpid-jms-client/src/test/java/org/apache/qpid/jms/integration/PresettledConsumerIntegrationTest.java
+++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/integration/PresettledConsumerIntegrationTest.java
@@ -17,6 +17,7 @@
 package org.apache.qpid.jms.integration;
 
 import static org.hamcrest.Matchers.arrayContaining;
+import static org.hamcrest.Matchers.equalTo;
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.fail;
 
@@ -32,7 +33,9 @@ import javax.jms.Topic;
 import org.apache.qpid.jms.test.QpidJmsTestCase;
 import org.apache.qpid.jms.test.testpeer.TestAmqpPeer;
 import org.apache.qpid.jms.test.testpeer.describedtypes.sections.AmqpValueDescribedType;
+import org.apache.qpid.jms.test.testpeer.matchers.AcceptedMatcher;
 import org.apache.qpid.jms.test.testpeer.matchers.CoordinatorMatcher;
+import org.apache.qpid.jms.test.testpeer.matchers.TransactionalStateMatcher;
 import org.apache.qpid.proton.amqp.Binary;
 import org.apache.qpid.proton.amqp.DescribedType;
 import org.apache.qpid.proton.amqp.transaction.TxnCapability;
@@ -149,80 +152,80 @@ public class PresettledConsumerIntegrationTest extends QpidJmsTestCase {
         doTestConsumerWithPresettleOptions(presettleConfig, false, true, true, TemporaryQueue.class);
     }
 
-    //----- Test the jms.presettlePolicy.presettleTransactedConsumers option -//
+    //----- Test the presettled consumer still settles if needed -------------//
 
     @Test(timeout = 20000)
-    public void testPresettleTransactedConsumersConfigurationAppliedToTopic() throws Exception {
-        String presettleConfig = "?jms.presettlePolicy.presettleTransactedConsumers=true";
-        doTestConsumerWithPresettleOptions(presettleConfig, true, true, true, Topic.class);
+    public void testPresettledTopicConsumerSettlesWhenNeeded() throws Exception {
+        String presettleConfig = "?jms.presettlePolicy.presettleAll=true";
+        doTestConsumerWithPresettleOptions(presettleConfig, false, true, false, Topic.class);
     }
 
     @Test(timeout = 20000)
-    public void testPresettledTransactedConsumersConfigurationAppliedToQueue() throws Exception {
-        String presettleConfig = "?jms.presettlePolicy.presettleTransactedConsumers=true";
-        doTestConsumerWithPresettleOptions(presettleConfig, true, true, true, Queue.class);
+    public void testPresettledQueueConsumerSettlesWhenNeeded() throws Exception {
+        String presettleConfig = "?jms.presettlePolicy.presettleAll=true";
+        doTestConsumerWithPresettleOptions(presettleConfig, false, true, false, Queue.class);
     }
 
     @Test(timeout = 20000)
-    public void testPresettledTransactedConsumersConfigurationAppliedToTempTopic() throws Exception {
-        String presettleConfig = "?jms.presettlePolicy.presettleTransactedConsumers=true";
-        doTestConsumerWithPresettleOptions(presettleConfig, true, true, true, TemporaryTopic.class);
+    public void testPresettledTempTopicConsumerSettlesWhenNeeded() throws Exception {
+        String presettleConfig = "?jms.presettlePolicy.presettleAll=true";
+        doTestConsumerWithPresettleOptions(presettleConfig, false, true, false, TemporaryTopic.class);
     }
 
     @Test(timeout = 20000)
-    public void testPresettledTransactedConsumersConfigurationAppliedToTempQueue() throws Exception {
-        String presettleConfig = "?jms.presettlePolicy.presettleTransactedConsumers=true";
-        doTestConsumerWithPresettleOptions(presettleConfig, true, true, true, TemporaryQueue.class);
+    public void testPresettledTempQueueConsumerSettlesWhenNeeded() throws Exception {
+        String presettleConfig = "?jms.presettlePolicy.presettleAll=true";
+        doTestConsumerWithPresettleOptions(presettleConfig, false, true, false, TemporaryQueue.class);
     }
 
+    //----- Test that transacted consumers always send unsettled -------------//
+
     @Test(timeout = 20000)
-    public void testPresettleTransactedConsumersConfigurationAppliedToTopicNoTX() throws Exception {
-        String presettleConfig = "?jms.presettlePolicy.presettleTransactedConsumers=true";
-        doTestConsumerWithPresettleOptions(presettleConfig, false, false, false, Topic.class);
+    public void testTransactedTopicConsumerNotSettledPresettleAll() throws Exception {
+        String presettleConfig = "?jms.presettlePolicy.presettleAll=true";
+        doTestConsumerWithPresettleOptions(presettleConfig, true, false, false, Topic.class);
     }
 
     @Test(timeout = 20000)
-    public void testPresettledTransactedConsumersConfigurationAppliedToQueueNoTX() throws Exception {
-        String presettleConfig = "?jms.presettlePolicy.presettleTransactedConsumers=true";
-        doTestConsumerWithPresettleOptions(presettleConfig, false, false, false, Queue.class);
+    public void testTransactedQueueConsumerNotSettledPresettleAll() throws Exception {
+        String presettleConfig = "?jms.presettlePolicy.presettleAll=true";
+        doTestConsumerWithPresettleOptions(presettleConfig, true, false, false, Queue.class);
     }
 
     @Test(timeout = 20000)
-    public void testPresettledTransactedConsumersConfigurationAppliedToTempTopicNoTX() throws Exception {
-        String presettleConfig = "?jms.presettlePolicy.presettleTransactedConsumers=true";
-        doTestConsumerWithPresettleOptions(presettleConfig, false, false, false, TemporaryTopic.class);
+    public void testTransactedTempTopicConsumerNotSettledPresettleAll() throws Exception {
+        String presettleConfig = "?jms.presettlePolicy.presettleAll=true";
+        doTestConsumerWithPresettleOptions(presettleConfig, true, false, false, TemporaryTopic.class);
     }
 
     @Test(timeout = 20000)
-    public void testPresettledTransactedConsumersConfigurationAppliedToTempQueueNoTX() throws Exception {
-        String presettleConfig = "?jms.presettlePolicy.presettleTransactedConsumers=true";
-        doTestConsumerWithPresettleOptions(presettleConfig, false, false, false, TemporaryQueue.class);
+    public void testTransactedTempQueueConsumerNotSettledPresettleAll() throws Exception {
+        String presettleConfig = "?jms.presettlePolicy.presettleAll=true";
+        doTestConsumerWithPresettleOptions(presettleConfig, true, false, false, TemporaryQueue.class);
     }
 
-    //----- Test the presettled consumer still settles if needed -------------//
-
     @Test(timeout = 20000)
-    public void testPresettledTopicConsumerSettlesWhenNeeded() throws Exception {
-        String presettleConfig = "?jms.presettlePolicy.presettleAll=true";
-        doTestConsumerWithPresettleOptions(presettleConfig, false, true, false, Topic.class);
+    public void testTransactedTopicConsumerNotSettledPresettleTopicConsumers() throws Exception {
+        String presettleConfig = "?jms.presettlePolicy.presettleTopicConsumers=true";
+        doTestConsumerWithPresettleOptions(presettleConfig, true, false, false, Topic.class);
     }
 
     @Test(timeout = 20000)
-    public void testPresettledQueueConsumerSettlesWhenNeeded() throws Exception {
-        String presettleConfig = "?jms.presettlePolicy.presettleAll=true";
-        doTestConsumerWithPresettleOptions(presettleConfig, false, true, false, Queue.class);
+    public void testTransactedQueueConsumerNotSettledPresettleQueueConsumers() throws Exception {
+        String presettleConfig = "?jms.presettlePolicy.presettleQueueConsumers=true";
+        doTestConsumerWithPresettleOptions(presettleConfig, true, false, false, Queue.class);
     }
 
     @Test(timeout = 20000)
-    public void testPresettledTempTopicConsumerSettlesWhenNeeded() throws Exception {
-        String presettleConfig = "?jms.presettlePolicy.presettleAll=true";
-        doTestConsumerWithPresettleOptions(presettleConfig, false, true, false, TemporaryTopic.class);
+    public void testTransactedTempTopicConsumerNotSettledPresettleTopicConsumers() throws Exception {
+        String presettleConfig = "?jms.presettlePolicy.presettleTopicConsumers=true";
+        doTestConsumerWithPresettleOptions(presettleConfig, true, false, false, TemporaryTopic.class);
     }
 
     @Test(timeout = 20000)
-    public void testPresettledTempQueueConsumerSettlesWhenNeeded() throws Exception {
-        String presettleConfig = "?jms.presettlePolicy.presettleAll=true";
-        doTestConsumerWithPresettleOptions(presettleConfig, false, true, false, TemporaryQueue.class);
+    public void testTransactedTempQueueConsumerNotSettledPresettleQueueConsumers() throws Exception {
+        String presettleConfig = "?jms.presettlePolicy.presettleQueueConsumers=true";
+        doTestConsumerWithPresettleOptions(presettleConfig, true, false, false, TemporaryQueue.class);
     }
 
     //----- Test Method implementation ---------------------------------------//
@@ -282,7 +285,17 @@ public class PresettledConsumerIntegrationTest extends QpidJmsTestCase {
             // Send a settled transfer, client should not send any dispositions
             testPeer.expectLinkFlowRespondWithTransfer(null, null, null, null, amqpValueNullContent, transferSettled);
             if (!transferSettled) {
-                testPeer.expectDispositionThatIsAcceptedAndSettled();
+                if (!transacted) {
+                    testPeer.expectDispositionThatIsAcceptedAndSettled();
+                } else {
+                    // Then expect an *settled* TransactionalState disposition for each message
+                    // once received by the consumer
+                    TransactionalStateMatcher stateMatcher = new TransactionalStateMatcher();
+                    stateMatcher.withTxnId(equalTo(txnId));
+                    stateMatcher.withOutcome(new AcceptedMatcher());
+
+                    testPeer.expectDisposition(true, stateMatcher);
+                }
             }
 
             MessageConsumer consumer = session.createConsumer(destination);


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