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]
