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]

Reply via email to