From 9cc98732e6ab3c8e175fe40e5de3b4ab5e49d4ff Mon Sep 17 00:00:00 2001 From: Robert Davies Date: Wed, 9 Sep 2009 13:15:15 +0000 Subject: [PATCH] fix for https://issues.apache.org/activemq/browse/AMQ-910 git-svn-id: https://svn.apache.org/repos/asf/activemq/trunk@812941 13f79535-47bb-0310-9956-ffa450edef68 --- .../activemq/ra/ActiveMQActivationSpec.java | 2 +- .../ra/ActiveMQConnectionRequestInfo.java | 4 +- .../ra/ActiveMQConnectionSupport.java | 2 +- .../activemq/ra/MessageActivationSpec.java | 2 +- .../ra/UnsubscribeResubscribeTest.java | 77 +++++++++++++++++++ 5 files changed, 82 insertions(+), 5 deletions(-) create mode 100644 activemq-ra/src/test/java/org/apache/activemq/ra/UnsubscribeResubscribeTest.java diff --git a/activemq-ra/src/main/java/org/apache/activemq/ra/ActiveMQActivationSpec.java b/activemq-ra/src/main/java/org/apache/activemq/ra/ActiveMQActivationSpec.java index 68bacd934a..48b0c6e275 100644 --- a/activemq-ra/src/main/java/org/apache/activemq/ra/ActiveMQActivationSpec.java +++ b/activemq-ra/src/main/java/org/apache/activemq/ra/ActiveMQActivationSpec.java @@ -587,7 +587,7 @@ public class ActiveMQActivationSpec implements MessageActivationSpec, Serializab } } - public short getBackOffMultiplier() { + public double getBackOffMultiplier() { if (redeliveryPolicy == null) { return 0; } diff --git a/activemq-ra/src/main/java/org/apache/activemq/ra/ActiveMQConnectionRequestInfo.java b/activemq-ra/src/main/java/org/apache/activemq/ra/ActiveMQConnectionRequestInfo.java index eee323960a..41dacca61f 100755 --- a/activemq-ra/src/main/java/org/apache/activemq/ra/ActiveMQConnectionRequestInfo.java +++ b/activemq-ra/src/main/java/org/apache/activemq/ra/ActiveMQConnectionRequestInfo.java @@ -197,8 +197,8 @@ public class ActiveMQConnectionRequestInfo implements ConnectionRequestInfo, Ser return useInboundSession != null && useInboundSession.booleanValue(); } - public Short getRedeliveryBackOffMultiplier() { - return Short.valueOf(redeliveryPolicy().getBackOffMultiplier()); + public Double getRedeliveryBackOffMultiplier() { + return Double.valueOf(redeliveryPolicy().getBackOffMultiplier()); } public Long getInitialRedeliveryDelay() { diff --git a/activemq-ra/src/main/java/org/apache/activemq/ra/ActiveMQConnectionSupport.java b/activemq-ra/src/main/java/org/apache/activemq/ra/ActiveMQConnectionSupport.java index 0d99dcccc4..f71eebc188 100644 --- a/activemq-ra/src/main/java/org/apache/activemq/ra/ActiveMQConnectionSupport.java +++ b/activemq-ra/src/main/java/org/apache/activemq/ra/ActiveMQConnectionSupport.java @@ -306,7 +306,7 @@ public class ActiveMQConnectionSupport { /** * @return redelivery backoff multiplier */ - public Short getRedeliveryBackOffMultiplier() { + public Double getRedeliveryBackOffMultiplier() { return info.getRedeliveryBackOffMultiplier(); } diff --git a/activemq-ra/src/main/java/org/apache/activemq/ra/MessageActivationSpec.java b/activemq-ra/src/main/java/org/apache/activemq/ra/MessageActivationSpec.java index af49070538..2f8063bd8a 100755 --- a/activemq-ra/src/main/java/org/apache/activemq/ra/MessageActivationSpec.java +++ b/activemq-ra/src/main/java/org/apache/activemq/ra/MessageActivationSpec.java @@ -115,7 +115,7 @@ public interface MessageActivationSpec extends ActivationSpec { String getMaxMessagesPerBatch(); - short getBackOffMultiplier(); + double getBackOffMultiplier(); long getInitialRedeliveryDelay(); diff --git a/activemq-ra/src/test/java/org/apache/activemq/ra/UnsubscribeResubscribeTest.java b/activemq-ra/src/test/java/org/apache/activemq/ra/UnsubscribeResubscribeTest.java new file mode 100644 index 0000000000..6180e05e7b --- /dev/null +++ b/activemq-ra/src/test/java/org/apache/activemq/ra/UnsubscribeResubscribeTest.java @@ -0,0 +1,77 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.activemq.ra; + +import javax.jms.ConnectionFactory; +import javax.jms.JMSException; +import javax.jms.Message; +import javax.jms.MessageProducer; +import javax.jms.Session; +import javax.jms.Topic; +import javax.jms.TopicSubscriber; +import javax.resource.ResourceException; +import javax.transaction.xa.XAException; + +import junit.framework.TestCase; +import org.apache.activemq.ActiveMQConnectionFactory; + +/** + * @version $Revision$ + */ +public class UnsubscribeResubscribeTest extends TestCase { + + private static final String DEFAULT_HOST = "vm://localhost"; + + private ConnectionManagerAdapter connectionManager = new ConnectionManagerAdapter(); + private ActiveMQManagedConnectionFactory managedConnectionFactory; + private ConnectionFactory connectionFactory; + private ManagedConnectionProxy connection; + private ActiveMQManagedConnection managedConnection; + + /** + * @see junit.framework.TestCase#setUp() + */ + protected void setUp() throws Exception { + + managedConnectionFactory = new ActiveMQManagedConnectionFactory(); + managedConnectionFactory.setServerUrl(DEFAULT_HOST); + managedConnectionFactory.setUserName(ActiveMQConnectionFactory.DEFAULT_USER); + managedConnectionFactory.setPassword(ActiveMQConnectionFactory.DEFAULT_PASSWORD); + managedConnectionFactory.setClientid("clientId"); + + } + + private void getConnection() throws ResourceException, JMSException { + connectionFactory = (ConnectionFactory)managedConnectionFactory.createConnectionFactory(connectionManager); + connection = (ManagedConnectionProxy)connectionFactory.createConnection(); + managedConnection = connection.getManagedConnection(); + } + + public void testUnsubscribeResubscribe() throws ResourceException, JMSException, XAException { + getConnection(); + Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); + Topic topic = session.createTopic("topic"); + TopicSubscriber sub = session.createDurableSubscriber(topic, "sub"); + Message message = session.createTextMessage("text message"); + MessageProducer producer = session.createProducer(topic); + producer.send(message); + sub.close(); + session.unsubscribe("sub"); + sub = session.createDurableSubscriber(topic, "sub"); + } + +} \ No newline at end of file