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 <[email protected]>
Authored: Tue May 10 18:29:37 2016 -0400
Committer: Timothy Bish <[email protected]>
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: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to