add common parent for temporary destination objects to simplify handling
Project: http://git-wip-us.apache.org/repos/asf/qpid-jms/repo Commit: http://git-wip-us.apache.org/repos/asf/qpid-jms/commit/184acd20 Tree: http://git-wip-us.apache.org/repos/asf/qpid-jms/tree/184acd20 Diff: http://git-wip-us.apache.org/repos/asf/qpid-jms/diff/184acd20 Branch: refs/heads/master Commit: 184acd20e3410cf9f17aa04a29143d064c92c8f0 Parents: 7335e55 Author: Robert Gemmell <[email protected]> Authored: Tue Jan 13 11:54:21 2015 +0000 Committer: Robert Gemmell <[email protected]> Committed: Tue Jan 13 16:02:08 2015 +0000 ---------------------------------------------------------------------- .../java/org/apache/qpid/jms/JmsConnection.java | 8 +-- .../org/apache/qpid/jms/JmsDestination.java | 31 +--------- .../org/apache/qpid/jms/JmsMessageConsumer.java | 2 +- .../qpid/jms/JmsTemporaryDestination.java | 61 ++++++++++++++++++++ .../org/apache/qpid/jms/JmsTemporaryQueue.java | 4 +- .../org/apache/qpid/jms/JmsTemporaryTopic.java | 6 +- .../jms/meta/JmsDefaultResourceVisitor.java | 4 +- .../apache/qpid/jms/meta/JmsResourceVistor.java | 4 +- .../qpid/jms/provider/amqp/AmqpConnection.java | 3 +- .../qpid/jms/provider/amqp/AmqpProvider.java | 6 +- .../provider/amqp/AmqpTemporaryDestination.java | 5 +- .../jms/meta/JmsDefaultResourceVisitorTest.java | 4 +- 12 files changed, 86 insertions(+), 52 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/184acd20/qpid-jms-client/src/main/java/org/apache/qpid/jms/JmsConnection.java ---------------------------------------------------------------------- diff --git a/qpid-jms-client/src/main/java/org/apache/qpid/jms/JmsConnection.java b/qpid-jms-client/src/main/java/org/apache/qpid/jms/JmsConnection.java index 042712e..b2f5c76 100644 --- a/qpid-jms-client/src/main/java/org/apache/qpid/jms/JmsConnection.java +++ b/qpid-jms-client/src/main/java/org/apache/qpid/jms/JmsConnection.java @@ -106,8 +106,8 @@ public class JmsConnection implements Connection, TopicConnection, QueueConnecti private Provider provider; private final Set<JmsConnectionListener> connectionListeners = new CopyOnWriteArraySet<JmsConnectionListener>(); - private final Map<JmsDestination, JmsDestination> tempDestinations = - new ConcurrentHashMap<JmsDestination, JmsDestination>(); + private final Map<JmsTemporaryDestination, JmsTemporaryDestination> tempDestinations = + new ConcurrentHashMap<JmsTemporaryDestination, JmsTemporaryDestination>(); private final AtomicLong sessionIdGenerator = new AtomicLong(); private final AtomicLong tempDestIdGenerator = new AtomicLong(); private final AtomicLong transactionIdGenerator = new AtomicLong(); @@ -558,7 +558,7 @@ public class JmsConnection implements Connection, TopicConnection, QueueConnecti return topic; } - protected void deleteDestination(JmsDestination destination) throws JMSException { + protected void deleteDestination(JmsTemporaryDestination destination) throws JMSException { checkClosedOrFailed(); connect(); @@ -1030,7 +1030,7 @@ public class JmsConnection implements Connection, TopicConnection, QueueConnecti provider.create(connectionInfo, request); request.sync(); - for (JmsDestination tempDestination : tempDestinations.values()) { + for (JmsTemporaryDestination tempDestination : tempDestinations.values()) { createResource(tempDestination); } http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/184acd20/qpid-jms-client/src/main/java/org/apache/qpid/jms/JmsDestination.java ---------------------------------------------------------------------- diff --git a/qpid-jms-client/src/main/java/org/apache/qpid/jms/JmsDestination.java b/qpid-jms-client/src/main/java/org/apache/qpid/jms/JmsDestination.java index 4874402..4471267 100644 --- a/qpid-jms-client/src/main/java/org/apache/qpid/jms/JmsDestination.java +++ b/qpid-jms-client/src/main/java/org/apache/qpid/jms/JmsDestination.java @@ -22,16 +22,12 @@ import java.io.ObjectInput; import java.io.ObjectOutput; import java.util.Map; -import javax.jms.JMSException; - import org.apache.qpid.jms.jndi.JNDIStorable; -import org.apache.qpid.jms.meta.JmsResource; -import org.apache.qpid.jms.meta.JmsResourceVistor; /** * Jms Destination */ -public abstract class JmsDestination extends JNDIStorable implements JmsResource, Externalizable, javax.jms.Destination, Comparable<JmsDestination> { +public abstract class JmsDestination extends JNDIStorable implements Externalizable, javax.jms.Destination, Comparable<JmsDestination> { protected transient String name; protected transient boolean topic; @@ -178,29 +174,4 @@ public abstract class JmsDestination extends JNDIStorable implements JmsResource this.topic = in.readBoolean(); this.temporary = in.readBoolean(); } - - void setConnection(JmsConnection connection) { - this.connection = connection; - } - - JmsConnection getConnection() { - return this.connection; - } - - /** - * Attempts to delete the destination if there is an assigned Connection object. - * - * @throws JMSException if an error occurs or the provider doesn't support - * delete of destinations from the client. - */ - protected void tryDelete() throws JMSException { - if (connection != null) { - connection.deleteDestination(this); - } - } - - @Override - public void visit(JmsResourceVistor visitor) throws Exception { - visitor.processDestination(this); - } } http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/184acd20/qpid-jms-client/src/main/java/org/apache/qpid/jms/JmsMessageConsumer.java ---------------------------------------------------------------------- diff --git a/qpid-jms-client/src/main/java/org/apache/qpid/jms/JmsMessageConsumer.java b/qpid-jms-client/src/main/java/org/apache/qpid/jms/JmsMessageConsumer.java index bdc2e6c..d56dfe6 100644 --- a/qpid-jms-client/src/main/java/org/apache/qpid/jms/JmsMessageConsumer.java +++ b/qpid-jms-client/src/main/java/org/apache/qpid/jms/JmsMessageConsumer.java @@ -70,7 +70,7 @@ public class JmsMessageConsumer implements MessageConsumer, JmsMessageAvailableC * @throws JMSException */ protected JmsMessageConsumer(JmsConsumerId consumerId, JmsSession session, JmsDestination destination, - String selector, boolean noLocal) throws JMSException { + String selector, boolean noLocal) throws JMSException { this(consumerId, session, destination, null, selector, noLocal); } http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/184acd20/qpid-jms-client/src/main/java/org/apache/qpid/jms/JmsTemporaryDestination.java ---------------------------------------------------------------------- diff --git a/qpid-jms-client/src/main/java/org/apache/qpid/jms/JmsTemporaryDestination.java b/qpid-jms-client/src/main/java/org/apache/qpid/jms/JmsTemporaryDestination.java new file mode 100644 index 0000000..9e3234d --- /dev/null +++ b/qpid-jms-client/src/main/java/org/apache/qpid/jms/JmsTemporaryDestination.java @@ -0,0 +1,61 @@ +/** + * 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.qpid.jms; + +import javax.jms.JMSException; + +import org.apache.qpid.jms.meta.JmsResource; +import org.apache.qpid.jms.meta.JmsResourceVistor; + +/** + * Temporary Destination Object + */ +public abstract class JmsTemporaryDestination extends JmsDestination implements JmsResource { + + public JmsTemporaryDestination() { + this(null, false); + } + + public JmsTemporaryDestination(String name, boolean topic) { + super(name, topic, true); + } + + void setConnection(JmsConnection connection) { + this.connection = connection; + } + + JmsConnection getConnection() { + return this.connection; + } + + /** + * Attempts to delete the destination if there is an assigned Connection object. + * + * @throws JMSException if an error occurs or the provider doesn't support + * delete of destinations from the client. + */ + protected void tryDelete() throws JMSException { + if (connection != null) { + connection.deleteDestination(this); + } + } + + @Override + public void visit(JmsResourceVistor visitor) throws Exception { + visitor.processDestination(this); + } +} http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/184acd20/qpid-jms-client/src/main/java/org/apache/qpid/jms/JmsTemporaryQueue.java ---------------------------------------------------------------------- diff --git a/qpid-jms-client/src/main/java/org/apache/qpid/jms/JmsTemporaryQueue.java b/qpid-jms-client/src/main/java/org/apache/qpid/jms/JmsTemporaryQueue.java index cff489b..856794f 100644 --- a/qpid-jms-client/src/main/java/org/apache/qpid/jms/JmsTemporaryQueue.java +++ b/qpid-jms-client/src/main/java/org/apache/qpid/jms/JmsTemporaryQueue.java @@ -22,14 +22,14 @@ import javax.jms.TemporaryQueue; /** * Temporary Queue Object */ -public class JmsTemporaryQueue extends JmsDestination implements TemporaryQueue { +public class JmsTemporaryQueue extends JmsTemporaryDestination implements TemporaryQueue { public JmsTemporaryQueue() { this(null); } public JmsTemporaryQueue(String name) { - super(name, false, true); + super(name, false); } @Override http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/184acd20/qpid-jms-client/src/main/java/org/apache/qpid/jms/JmsTemporaryTopic.java ---------------------------------------------------------------------- diff --git a/qpid-jms-client/src/main/java/org/apache/qpid/jms/JmsTemporaryTopic.java b/qpid-jms-client/src/main/java/org/apache/qpid/jms/JmsTemporaryTopic.java index 46dfed3..aeb39e2 100644 --- a/qpid-jms-client/src/main/java/org/apache/qpid/jms/JmsTemporaryTopic.java +++ b/qpid-jms-client/src/main/java/org/apache/qpid/jms/JmsTemporaryTopic.java @@ -22,14 +22,14 @@ import javax.jms.TemporaryTopic; /** * Temporary Topic Object */ -public class JmsTemporaryTopic extends JmsDestination implements TemporaryTopic { +public class JmsTemporaryTopic extends JmsTemporaryDestination implements TemporaryTopic { public JmsTemporaryTopic() { - super(null, true, true); + this(null); } public JmsTemporaryTopic(String name) { - super(name, true, true); + super(name, true); } @Override http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/184acd20/qpid-jms-client/src/main/java/org/apache/qpid/jms/meta/JmsDefaultResourceVisitor.java ---------------------------------------------------------------------- diff --git a/qpid-jms-client/src/main/java/org/apache/qpid/jms/meta/JmsDefaultResourceVisitor.java b/qpid-jms-client/src/main/java/org/apache/qpid/jms/meta/JmsDefaultResourceVisitor.java index ba2d3dc..fb18abb 100644 --- a/qpid-jms-client/src/main/java/org/apache/qpid/jms/meta/JmsDefaultResourceVisitor.java +++ b/qpid-jms-client/src/main/java/org/apache/qpid/jms/meta/JmsDefaultResourceVisitor.java @@ -16,7 +16,7 @@ */ package org.apache.qpid.jms.meta; -import org.apache.qpid.jms.JmsDestination; +import org.apache.qpid.jms.JmsTemporaryDestination; /** * Default Visitor implementation that does nothing in each method to @@ -42,7 +42,7 @@ public class JmsDefaultResourceVisitor implements JmsResourceVistor{ } @Override - public void processDestination(JmsDestination destination) throws Exception { + public void processDestination(JmsTemporaryDestination destination) throws Exception { } @Override http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/184acd20/qpid-jms-client/src/main/java/org/apache/qpid/jms/meta/JmsResourceVistor.java ---------------------------------------------------------------------- diff --git a/qpid-jms-client/src/main/java/org/apache/qpid/jms/meta/JmsResourceVistor.java b/qpid-jms-client/src/main/java/org/apache/qpid/jms/meta/JmsResourceVistor.java index 1e963d9..cbf48c2 100644 --- a/qpid-jms-client/src/main/java/org/apache/qpid/jms/meta/JmsResourceVistor.java +++ b/qpid-jms-client/src/main/java/org/apache/qpid/jms/meta/JmsResourceVistor.java @@ -16,7 +16,7 @@ */ package org.apache.qpid.jms.meta; -import org.apache.qpid.jms.JmsDestination; +import org.apache.qpid.jms.JmsTemporaryDestination; /** * Visitor interface to make processing JmsResources simpler. @@ -33,6 +33,6 @@ public interface JmsResourceVistor { void processTransactionInfo(JmsTransactionInfo transactionInfo) throws Exception; - void processDestination(JmsDestination destination) throws Exception; + void processDestination(JmsTemporaryDestination destination) throws Exception; } http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/184acd20/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/AmqpConnection.java ---------------------------------------------------------------------- diff --git a/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/AmqpConnection.java b/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/AmqpConnection.java index b03b58e..2f7bf05 100644 --- a/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/AmqpConnection.java +++ b/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/AmqpConnection.java @@ -25,6 +25,7 @@ import javax.jms.JMSSecurityException; import javax.jms.Session; import org.apache.qpid.jms.JmsDestination; +import org.apache.qpid.jms.JmsTemporaryDestination; import org.apache.qpid.jms.meta.JmsConnectionInfo; import org.apache.qpid.jms.meta.JmsSessionId; import org.apache.qpid.jms.meta.JmsSessionInfo; @@ -92,7 +93,7 @@ public class AmqpConnection extends AmqpAbstractResource<JmsConnectionInfo, Conn return session; } - public AmqpTemporaryDestination createTemporaryDestination(JmsDestination destination) { + public AmqpTemporaryDestination createTemporaryDestination(JmsTemporaryDestination destination) { AmqpTemporaryDestination temporary = new AmqpTemporaryDestination(connectionSession, destination); return temporary; } http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/184acd20/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/AmqpProvider.java ---------------------------------------------------------------------- diff --git a/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/AmqpProvider.java b/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/AmqpProvider.java index e68bc6e..d455842 100644 --- a/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/AmqpProvider.java +++ b/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/AmqpProvider.java @@ -26,7 +26,7 @@ import java.util.concurrent.TimeUnit; import javax.jms.JMSException; -import org.apache.qpid.jms.JmsDestination; +import org.apache.qpid.jms.JmsTemporaryDestination; import org.apache.qpid.jms.message.JmsInboundMessageDispatch; import org.apache.qpid.jms.message.JmsMessageFactory; import org.apache.qpid.jms.message.JmsOutboundMessageDispatch; @@ -255,7 +255,7 @@ public class AmqpProvider extends AbstractProvider implements TransportListener } @Override - public void processDestination(JmsDestination destination) throws Exception { + public void processDestination(JmsTemporaryDestination destination) throws Exception { if (destination.isTemporary()) { AmqpTemporaryDestination temporary = connection.createTemporaryDestination(destination); temporary.open(request); @@ -375,7 +375,7 @@ public class AmqpProvider extends AbstractProvider implements TransportListener } @Override - public void processDestination(JmsDestination destination) throws Exception { + public void processDestination(JmsTemporaryDestination destination) throws Exception { // TODO - Delete remote temporary Topic or Queue request.onSuccess(); } http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/184acd20/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/AmqpTemporaryDestination.java ---------------------------------------------------------------------- diff --git a/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/AmqpTemporaryDestination.java b/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/AmqpTemporaryDestination.java index 5ab5607..7a14e0e 100644 --- a/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/AmqpTemporaryDestination.java +++ b/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/AmqpTemporaryDestination.java @@ -20,6 +20,7 @@ import java.util.HashMap; import java.util.Map; import org.apache.qpid.jms.JmsDestination; +import org.apache.qpid.jms.JmsTemporaryDestination; import org.apache.qpid.jms.provider.amqp.message.AmqpDestinationHelper; import org.apache.qpid.proton.amqp.Symbol; import org.apache.qpid.proton.amqp.messaging.DeleteOnClose; @@ -46,7 +47,7 @@ import org.slf4j.LoggerFactory; * the broker in the case where the user does not have authorization to access temporary * destinations. */ -public class AmqpTemporaryDestination extends AmqpAbstractResource<JmsDestination, Sender> { +public class AmqpTemporaryDestination extends AmqpAbstractResource<JmsTemporaryDestination, Sender> { public static final Symbol DYNAMIC_NODE_LIFETIME_POLICY = Symbol.valueOf("lifetime-policy"); private static final String TEMP_QUEUE_CREATOR = "temp-queue-creator:"; @@ -57,7 +58,7 @@ public class AmqpTemporaryDestination extends AmqpAbstractResource<JmsDestinatio private final AmqpConnection connection; private final AmqpSession session; - public AmqpTemporaryDestination(AmqpSession session, JmsDestination destination) { + public AmqpTemporaryDestination(AmqpSession session, JmsTemporaryDestination destination) { super(destination); this.session = session; this.connection = session.getConnection(); http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/184acd20/qpid-jms-client/src/test/java/org/apache/qpid/jms/meta/JmsDefaultResourceVisitorTest.java ---------------------------------------------------------------------- diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/meta/JmsDefaultResourceVisitorTest.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/meta/JmsDefaultResourceVisitorTest.java index 4a32654..792f057 100644 --- a/qpid-jms-client/src/test/java/org/apache/qpid/jms/meta/JmsDefaultResourceVisitorTest.java +++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/meta/JmsDefaultResourceVisitorTest.java @@ -16,7 +16,7 @@ */ package org.apache.qpid.jms.meta; -import org.apache.qpid.jms.JmsTopic; +import org.apache.qpid.jms.JmsTemporaryTopic; import org.apache.qpid.jms.util.IdGenerator; import org.junit.Before; import org.junit.Test; @@ -50,7 +50,7 @@ public class JmsDefaultResourceVisitorTest { visitor.processSessionInfo(new JmsSessionInfo(sessionId)); visitor.processConsumerInfo(new JmsConsumerInfo(consumerId)); visitor.processProducerInfo(new JmsProducerInfo(producerId)); - visitor.processDestination(new JmsTopic("Test")); + visitor.processDestination(new JmsTemporaryTopic("Test")); visitor.processTransactionInfo(new JmsTransactionInfo(sessionId, transactionId)); } } --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
