Author: marnie
Date: Fri Nov  3 03:30:34 2006
New Revision: 470759

URL: http://svn.apache.org/viewvc?view=rev&rev=470759
Log:
Added AMQQueueSessionAdaptor and AMQTopicSessionAdaptor and amended 
AMQConnection create methods to use these adaptor classes as per QPID-66.

Added:
    
incubator/qpid/trunk/qpid/java/client/src/org/apache/qpid/client/AMQQueueSessionAdaptor.java
    
incubator/qpid/trunk/qpid/java/client/src/org/apache/qpid/client/AMQTopicSessionAdaptor.java
Modified:
    
incubator/qpid/trunk/qpid/java/client/src/org/apache/qpid/client/AMQConnection.java

Modified: 
incubator/qpid/trunk/qpid/java/client/src/org/apache/qpid/client/AMQConnection.java
URL: 
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/client/src/org/apache/qpid/client/AMQConnection.java?view=diff&rev=470759&r1=470758&r2=470759
==============================================================================
--- 
incubator/qpid/trunk/qpid/java/client/src/org/apache/qpid/client/AMQConnection.java
 (original)
+++ 
incubator/qpid/trunk/qpid/java/client/src/org/apache/qpid/client/AMQConnection.java
 Fri Nov  3 03:30:34 2006
@@ -494,14 +494,30 @@
         return _failoverPolicy;
     }
 
+    /**
+     * Returns an AMQQueueSessionAdaptor which wraps an AMQSession and throws 
IllegalStateExceptions
+     * where specified in the JMS spec
+     * @param transacted
+     * @param acknowledgeMode
+     * @return QueueSession
+     * @throws JMSException
+     */
     public QueueSession createQueueSession(boolean transacted, int 
acknowledgeMode) throws JMSException
     {
-        return (QueueSession) createSession(transacted, acknowledgeMode);
+        return new AMQQueueSessionAdaptor(createSession(transacted, 
acknowledgeMode));
     }
 
+    /**
+     * Returns an AMQTopicSessionAdapter which wraps an AMQSession and throws 
IllegalStateExceptions
+     * where specified in the JMS spec
+     * @param transacted
+     * @param acknowledgeMode
+     * @return TopicSession
+     * @throws JMSException
+     */
     public TopicSession createTopicSession(boolean transacted, int 
acknowledgeMode) throws JMSException
     {
-        return (TopicSession) createSession(transacted, acknowledgeMode);
+        return new AMQTopicSessionAdaptor(createSession(transacted, 
acknowledgeMode));
     }
 
     private boolean channelLimitReached()

Added: 
incubator/qpid/trunk/qpid/java/client/src/org/apache/qpid/client/AMQQueueSessionAdaptor.java
URL: 
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/client/src/org/apache/qpid/client/AMQQueueSessionAdaptor.java?view=auto&rev=470759
==============================================================================
--- 
incubator/qpid/trunk/qpid/java/client/src/org/apache/qpid/client/AMQQueueSessionAdaptor.java
 (added)
+++ 
incubator/qpid/trunk/qpid/java/client/src/org/apache/qpid/client/AMQQueueSessionAdaptor.java
 Fri Nov  3 03:30:34 2006
@@ -0,0 +1,176 @@
+/*
+ *
+ * Copyright (c) 2006 The Apache Software Foundation
+ *
+ * Licensed 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.client;
+
+import javax.jms.*;
+import javax.jms.IllegalStateException;
+import java.io.Serializable;
+
+/**
+ * Need this adaptor class to conform to JMS spec and throw 
IllegalStateException
+ * from createDurableSubscriber, unsubscribe, createTopic & 
createTemporaryTopic
+ */
+public class AMQQueueSessionAdaptor implements QueueSession
+{
+    //holds a session for delegation
+    protected final AMQSession _session;
+
+    /**
+     * Construct an adaptor with a session to wrap
+     * @param session
+     */
+    public AMQQueueSessionAdaptor(Session session)
+    {
+        _session = (AMQSession) session;
+    }
+
+    public TemporaryQueue createTemporaryQueue() throws JMSException {
+        return _session.createTemporaryQueue();
+    }
+
+    public Queue createQueue(String string) throws JMSException {
+        return _session.createQueue(string);
+    }
+
+    public QueueReceiver createReceiver(Queue queue) throws JMSException {
+        return _session.createReceiver(queue);
+    }
+
+    public QueueReceiver createReceiver(Queue queue, String string) throws 
JMSException {
+        return _session.createReceiver(queue, string);
+    }
+
+    public QueueSender createSender(Queue queue) throws JMSException {
+        return _session.createSender(queue);
+    }
+
+    public QueueBrowser createBrowser(Queue queue) throws JMSException {
+        return _session.createBrowser(queue);
+    }
+
+    public QueueBrowser createBrowser(Queue queue, String string) throws 
JMSException {
+        return _session.createBrowser(queue, string);
+    }
+
+    public BytesMessage createBytesMessage() throws JMSException {
+        return _session.createBytesMessage();
+    }
+
+    public MapMessage createMapMessage() throws JMSException {
+        return _session.createMapMessage();
+    }
+
+    public Message createMessage() throws JMSException {
+        return _session.createMessage();
+    }
+
+    public ObjectMessage createObjectMessage() throws JMSException {
+        return _session.createObjectMessage();
+    }
+
+    public ObjectMessage createObjectMessage(Serializable serializable) throws 
JMSException {
+        return _session.createObjectMessage(serializable);
+    }
+
+    public StreamMessage createStreamMessage() throws JMSException {
+        return _session.createStreamMessage();
+    }
+
+    public TextMessage createTextMessage() throws JMSException {
+        return _session.createTextMessage();
+    }
+
+    public TextMessage createTextMessage(String string) throws JMSException {
+        return _session.createTextMessage(string);
+    }
+
+    public boolean getTransacted() throws JMSException {
+        return _session.getTransacted();
+    }
+
+    public int getAcknowledgeMode() throws JMSException {
+       return _session.getAcknowledgeMode();
+    }
+
+    public void commit() throws JMSException {
+        _session.commit();
+    }
+
+    public void rollback() throws JMSException {
+        _session.rollback();
+    }
+
+    public void close() throws JMSException {
+        _session.close();
+    }
+
+    public void recover() throws JMSException {
+        _session.recover();
+    }
+
+    public MessageListener getMessageListener() throws JMSException {
+       return _session.getMessageListener();
+    }
+
+    public void setMessageListener(MessageListener messageListener) throws 
JMSException {
+        _session.setMessageListener(messageListener);
+    }
+
+    public void run() {
+        _session.run();
+    }
+
+    public MessageProducer createProducer(Destination destination) throws 
JMSException {
+        return _session.createProducer(destination);
+    }
+
+    public MessageConsumer createConsumer(Destination destination) throws 
JMSException {
+        return _session.createConsumer(destination);
+    }
+
+    public MessageConsumer createConsumer(Destination destination, String 
string) throws JMSException {
+        return _session.createConsumer(destination,string);
+    }
+
+    public MessageConsumer createConsumer(Destination destination, String 
string, boolean b) throws JMSException {
+        return _session.createConsumer(destination,string,b);
+    }
+
+    //The following methods cannot be called from a QueueSession as per JMS 
spec
+
+    public Topic createTopic(String string) throws JMSException {
+        throw new IllegalStateException("Cannot call createTopic from 
QueueSession");
+    }
+
+    public TopicSubscriber createDurableSubscriber(Topic topic, String string) 
throws JMSException {
+        throw new IllegalStateException("Cannot call createDurableSubscriber 
from QueueSession");
+    }
+
+    public TopicSubscriber createDurableSubscriber(Topic topic, String string, 
String string1, boolean b) throws JMSException {
+         throw new IllegalStateException("Cannot call createDurableSubscriber 
from QueueSession");
+    }
+
+    public TemporaryTopic createTemporaryTopic() throws JMSException {
+        throw new IllegalStateException("Cannot call createTemporaryTopic from 
QueueSession");
+    }
+
+    public void unsubscribe(String string) throws JMSException {
+        throw new IllegalStateException("Cannot call unsubscribe from 
QueueSession");
+    }
+
+}

Added: 
incubator/qpid/trunk/qpid/java/client/src/org/apache/qpid/client/AMQTopicSessionAdaptor.java
URL: 
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/client/src/org/apache/qpid/client/AMQTopicSessionAdaptor.java?view=auto&rev=470759
==============================================================================
--- 
incubator/qpid/trunk/qpid/java/client/src/org/apache/qpid/client/AMQTopicSessionAdaptor.java
 (added)
+++ 
incubator/qpid/trunk/qpid/java/client/src/org/apache/qpid/client/AMQTopicSessionAdaptor.java
 Fri Nov  3 03:30:34 2006
@@ -0,0 +1,166 @@
+/*
+ *
+ * Copyright (c) 2006 The Apache Software Foundation
+ *
+ * Licensed 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.client;
+
+import javax.jms.*;
+import javax.jms.IllegalStateException;
+import java.io.Serializable;
+
+public class AMQTopicSessionAdaptor implements TopicSession
+{
+    protected final AMQSession _session;
+
+    public AMQTopicSessionAdaptor(Session session)
+    {
+        _session = (AMQSession) session;
+    }
+
+    public Topic createTopic(String string) throws JMSException {
+        return _session.createTopic(string);
+    }
+
+    public TopicSubscriber createSubscriber(Topic topic) throws JMSException {
+        return _session.createSubscriber(topic);
+    }
+
+    public TopicSubscriber createSubscriber(Topic topic, String string, 
boolean b) throws JMSException {
+        return _session.createSubscriber(topic, string, b);
+    }
+
+    public TopicSubscriber createDurableSubscriber(Topic topic, String string) 
throws JMSException {
+        return _session.createDurableSubscriber(topic, string);
+    }
+
+    public TopicSubscriber createDurableSubscriber(Topic topic, String string, 
String string1, boolean b) throws JMSException {
+        return _session.createDurableSubscriber(topic, string, string1, b);
+    }
+
+    public TopicPublisher createPublisher(Topic topic) throws JMSException {
+        return _session.createPublisher(topic);
+    }
+
+    public TemporaryTopic createTemporaryTopic() throws JMSException {
+        return _session.createTemporaryTopic();
+    }
+
+    public void unsubscribe(String string) throws JMSException {
+        _session.unsubscribe(string);
+    }
+
+    public BytesMessage createBytesMessage() throws JMSException {
+        return _session.createBytesMessage();
+    }
+
+    public MapMessage createMapMessage() throws JMSException {
+        return _session.createMapMessage();
+    }
+
+    public Message createMessage() throws JMSException {
+        return _session.createMessage();
+    }
+
+    public ObjectMessage createObjectMessage() throws JMSException {
+        return _session.createObjectMessage();
+    }
+
+    public ObjectMessage createObjectMessage(Serializable serializable) throws 
JMSException {
+        return _session.createObjectMessage();
+    }
+
+    public StreamMessage createStreamMessage() throws JMSException {
+        return _session.createStreamMessage();
+    }
+
+    public TextMessage createTextMessage() throws JMSException {
+        return _session.createTextMessage();
+    }
+
+    public TextMessage createTextMessage(String string) throws JMSException {
+        return _session.createTextMessage();
+    }
+
+    public boolean getTransacted() throws JMSException {
+        return _session.getTransacted();
+    }
+
+    public int getAcknowledgeMode() throws JMSException {
+        return _session.getAcknowledgeMode();
+    }
+
+    public void commit() throws JMSException {
+        _session.commit();
+    }
+
+    public void rollback() throws JMSException {
+        _session.rollback();
+    }
+
+    public void close() throws JMSException {
+        _session.close();
+    }
+
+    public void recover() throws JMSException {
+        _session.recover();
+    }
+
+    public MessageListener getMessageListener() throws JMSException {
+        return _session.getMessageListener();
+    }
+
+    public void setMessageListener(MessageListener messageListener) throws 
JMSException {
+        _session.setMessageListener(messageListener);
+    }
+
+    public void run() {
+        _session.run();
+    }
+
+    public MessageProducer createProducer(Destination destination) throws 
JMSException {
+        return _session.createProducer(destination);
+    }
+
+    public MessageConsumer createConsumer(Destination destination) throws 
JMSException {
+        return _session.createConsumer(destination);
+    }
+
+    public MessageConsumer createConsumer(Destination destination, String 
string) throws JMSException {
+        return _session.createConsumer(destination, string);
+    }
+
+    public MessageConsumer createConsumer(Destination destination, String 
string, boolean b) throws JMSException {
+        return _session.createConsumer(destination, string, b);
+    }
+
+    //The following methods cannot be called from a TopicSession as per JMS 
spec
+    public Queue createQueue(String string) throws JMSException {
+        throw new IllegalStateException("Cannot call createQueue from 
TopicSession");
+    }
+
+    public QueueBrowser createBrowser(Queue queue) throws JMSException {
+        throw new IllegalStateException("Cannot call createBrowser from 
TopicSession");
+    }
+
+    public QueueBrowser createBrowser(Queue queue, String string) throws 
JMSException {
+        throw new IllegalStateException("Cannot call createBrowser from 
TopicSession");
+    }
+
+    public TemporaryQueue createTemporaryQueue() throws JMSException {
+        throw new IllegalStateException("Cannot call createTemporaryQueue from 
TopicSession");
+    }
+
+}


Reply via email to