You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by ra...@apache.org on 2006/12/06 16:56:04 UTC

svn commit: r483129 - /incubator/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/

Author: rajith
Date: Wed Dec  6 07:56:03 2006
New Revision: 483129

URL: http://svn.apache.org/viewvc?view=rev&rev=483129
Log:
This is a fix for QPID-159. These implementations now throw the correct exceptions as required by the spec

Modified:
    incubator/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/BasicMessageConsumer.java
    incubator/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/BasicMessageProducer.java
    incubator/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/QueueReceiverAdaptor.java
    incubator/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/QueueSenderAdapter.java
    incubator/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/TopicPublisherAdapter.java
    incubator/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/TopicSubscriberAdaptor.java

Modified: incubator/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/BasicMessageConsumer.java
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/BasicMessageConsumer.java?view=diff&rev=483129&r1=483128&r2=483129
==============================================================================
--- incubator/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/BasicMessageConsumer.java (original)
+++ incubator/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/BasicMessageConsumer.java Wed Dec  6 07:56:03 2006
@@ -159,11 +159,13 @@
 
     public String getMessageSelector() throws JMSException
     {
+    	checkPreConditions();
         return _messageSelector;
     }
 
     public MessageListener getMessageListener() throws JMSException
     {
+    	checkPreConditions();
         return (MessageListener) _messageListener.get();
     }
 
@@ -179,7 +181,7 @@
 
     public void setMessageListener(MessageListener messageListener) throws JMSException
     {
-        checkNotClosed();
+    	checkPreConditions();
 
         //if the current listener is non-null and the session is not stopped, then
         //it is an error to call this method.
@@ -277,7 +279,7 @@
 
     public Message receive(long l) throws JMSException
     {
-        checkNotClosed();
+    	checkPreConditions();
 
         acquireReceiving();
 
@@ -311,7 +313,7 @@
 
     public Message receiveNoWait() throws JMSException
     {
-        checkNotClosed();
+    	checkPreConditions();
 
         acquireReceiving();
 
@@ -520,7 +522,7 @@
      */
     private void deregisterConsumer()
     {
-        _session.deregisterConsumer(_consumerTag);
+    	_session.deregisterConsumer(_consumerTag);
     }
 
     public String getConsumerTag()
@@ -529,7 +531,20 @@
     }
 
     public void setConsumerTag(String consumerTag)
-    {
+    {    	
         _consumerTag = consumerTag;
     }
+
+	public AMQSession getSession() {
+		return _session;
+	}
+	
+	private void checkPreConditions() throws JMSException{
+    	
+		this.checkNotClosed();
+		
+		if(_session == null || _session.isClosed()){
+			throw new UnsupportedOperationException("Invalid Session");
+		}
+	}
 }

Modified: incubator/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/BasicMessageProducer.java
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/BasicMessageProducer.java?view=diff&rev=483129&r1=483128&r2=483129
==============================================================================
--- incubator/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/BasicMessageProducer.java (original)
+++ incubator/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/BasicMessageProducer.java Wed Dec  6 07:56:03 2006
@@ -143,6 +143,7 @@
 
     public void setDisableMessageID(boolean b) throws JMSException
     {
+    	checkPreConditions();
         checkNotClosed();
         // IGNORED
     }
@@ -156,7 +157,7 @@
 
     public void setDisableMessageTimestamp(boolean b) throws JMSException
     {
-        checkNotClosed();
+    	checkPreConditions();
         _disableTimestamps = b;
     }
 
@@ -168,7 +169,7 @@
 
     public void setDeliveryMode(int i) throws JMSException
     {
-        checkNotClosed();
+    	checkPreConditions();
         if (i != DeliveryMode.NON_PERSISTENT && i != DeliveryMode.PERSISTENT)
         {
             throw new JMSException("DeliveryMode must be either NON_PERSISTENT or PERSISTENT. Value of " + i +
@@ -185,7 +186,7 @@
 
     public void setPriority(int i) throws JMSException
     {
-        checkNotClosed();
+    	checkPreConditions();
         if (i < 0 || i > 9)
         {
             throw new IllegalArgumentException("Priority of " + i + " is illegal. Value must be in range 0 to 9");
@@ -201,7 +202,7 @@
 
     public void setTimeToLive(long l) throws JMSException
     {
-        checkNotClosed();
+    	checkPreConditions();
         if (l < 0)
         {
             throw new IllegalArgumentException("Time to live must be non-negative - supplied value was " + l);
@@ -229,6 +230,7 @@
 
     public void send(Message message) throws JMSException
     {
+    	checkPreConditions();
         synchronized (_connection.getFailoverMutex())
         {
             sendImpl(_destination, (AbstractJMSMessage) message, _deliveryMode, _messagePriority, _timeToLive,
@@ -238,6 +240,7 @@
 
     public void send(Message message, int deliveryMode) throws JMSException
     {
+    	checkPreConditions();
         synchronized (_connection.getFailoverMutex())
         {
             sendImpl(_destination, (AbstractJMSMessage) message, deliveryMode, _messagePriority, _timeToLive,
@@ -247,6 +250,7 @@
 
     public void send(Message message, int deliveryMode, boolean immediate) throws JMSException
     {
+    	checkPreConditions();
         synchronized (_connection.getFailoverMutex())
         {
             sendImpl(_destination, (AbstractJMSMessage) message, deliveryMode, _messagePriority, _timeToLive,
@@ -257,6 +261,7 @@
     public void send(Message message, int deliveryMode, int priority,
                      long timeToLive) throws JMSException
     {
+    	checkPreConditions();
         synchronized (_connection.getFailoverMutex())
         {
             sendImpl(_destination, (AbstractJMSMessage)message, deliveryMode, priority, timeToLive, _mandatory,
@@ -266,7 +271,7 @@
 
     public void send(Destination destination, Message message) throws JMSException
     {
-        checkNotClosed();
+    	checkPreConditions();
         synchronized (_connection.getFailoverMutex())
         {
             validateDestination(destination);
@@ -279,7 +284,7 @@
                      int priority, long timeToLive)
             throws JMSException
     {
-        checkNotClosed();
+    	checkPreConditions();
         synchronized (_connection.getFailoverMutex())
         {
             validateDestination(destination);
@@ -292,7 +297,7 @@
                      int priority, long timeToLive, boolean mandatory)
             throws JMSException
     {
-        checkNotClosed();
+        checkPreConditions();
         synchronized (_connection.getFailoverMutex())
         {
             validateDestination(destination);
@@ -305,7 +310,7 @@
                      int priority, long timeToLive, boolean mandatory, boolean immediate)
             throws JMSException
     {
-        checkNotClosed();
+    	checkPreConditions();
         synchronized (_connection.getFailoverMutex())
         {
             validateDestination(destination);
@@ -319,7 +324,7 @@
                      boolean immediate, boolean waitUntilSent)
             throws JMSException
     {
-        checkNotClosed();
+    	checkPreConditions();
         synchronized (_connection.getFailoverMutex())
         {
             validateDestination(destination);
@@ -334,7 +339,7 @@
         {
             throw new JMSException("Unsupported destination class: " +
                                    (destination != null ? destination.getClass() : null));
-        }
+        }        
         declareDestination((AMQDestination)destination);
     }
 
@@ -481,4 +486,20 @@
         checkNotClosed();
         _encoding = encoding;
     }
+    
+	private void checkPreConditions() throws IllegalStateException, JMSException {
+		checkNotClosed();
+		
+		if(_destination == null){
+			throw new UnsupportedOperationException("Destination is null");
+		}
+		
+		if(_session == null || _session.isClosed()){
+			throw new UnsupportedOperationException("Invalid Session");
+		}
+	}
+
+	public AMQSession getSession() {
+		return _session;
+	}
 }

Modified: incubator/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/QueueReceiverAdaptor.java
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/QueueReceiverAdaptor.java?view=diff&rev=483129&r1=483128&r2=483129
==============================================================================
--- incubator/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/QueueReceiverAdaptor.java (original)
+++ incubator/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/QueueReceiverAdaptor.java Wed Dec  6 07:56:03 2006
@@ -39,31 +39,37 @@
 
     public String getMessageSelector() throws JMSException
     {
+    	checkPreConditions();
         return _consumer.getMessageSelector();
     }
 
     public MessageListener getMessageListener() throws JMSException
     {
+    	checkPreConditions();
         return _consumer.getMessageListener();
     }
 
     public void setMessageListener(MessageListener messageListener) throws JMSException
     {
+    	checkPreConditions();
        _consumer.setMessageListener(messageListener);
     }
 
     public Message receive() throws JMSException
     {
+    	checkPreConditions();
         return _consumer.receive();
     }
 
     public Message receive(long l) throws JMSException
     {
+    	checkPreConditions();
         return _consumer.receive(l);
     }
 
     public Message receiveNoWait() throws JMSException
     {
+    	checkPreConditions();
         return _consumer.receiveNoWait();
     }
 
@@ -79,8 +85,26 @@
      */
     public Queue getQueue() throws JMSException
     {
+    	checkPreConditions();
        return _queue;
     }
 
+    private void checkPreConditions() throws javax.jms.IllegalStateException {
+    	BasicMessageConsumer msgConsumer = (BasicMessageConsumer)_consumer;
+    	
+    	if (msgConsumer.isClosed() ){
+			throw new javax.jms.IllegalStateException("Consumer is closed");
+		}
+		
+		if(_queue == null){
+			throw new UnsupportedOperationException("Queue is null");
+		}
+		
+		AMQSession session = msgConsumer.getSession();
+		
+		if(session == null || session.isClosed()){
+			throw new UnsupportedOperationException("Invalid Session");
+		}
+	}
 
 }

Modified: incubator/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/QueueSenderAdapter.java
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/QueueSenderAdapter.java?view=diff&rev=483129&r1=483128&r2=483129
==============================================================================
--- incubator/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/QueueSenderAdapter.java (original)
+++ incubator/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/QueueSenderAdapter.java Wed Dec  6 07:56:03 2006
@@ -1,6 +1,7 @@
 package org.apache.qpid.client;
 
 import javax.jms.Destination;
+import javax.jms.IllegalStateException;
 import javax.jms.JMSException;
 import javax.jms.Message;
 import javax.jms.MessageProducer;
@@ -11,6 +12,7 @@
 
 	private MessageProducer delegate;
 	private Queue queue;
+	private boolean closed = false;
 	
 	public QueueSenderAdapter(MessageProducer msgProducer, Queue queue){
 		delegate = msgProducer;
@@ -18,31 +20,35 @@
 	}
 	
 	public Queue getQueue() throws JMSException {
+		checkPreConditions();
 		return queue;
 	}
 
 	public void send(Message msg) throws JMSException {
+		checkPreConditions();
 		delegate.send(msg);
 	}
 
 	public void send(Queue queue, Message msg) throws JMSException {
+		checkPreConditions();
 		delegate.send(queue, msg);
 	}
 
 	public void publish(Message msg, int deliveryMode, int priority, long timeToLive)
 	throws JMSException {
-		
+		checkPreConditions();
 		delegate.send(msg, deliveryMode,priority,timeToLive);
 	}
 
 	public void send(Queue queue,Message msg, int deliveryMode, int priority, long timeToLive)
 			throws JMSException {
-		
+		checkPreConditions();
 		delegate.send(queue,msg, deliveryMode,priority,timeToLive);
 	}
 	
 	public void close() throws JMSException {
 		delegate.close();
+		closed = true;
 	}
 
 	public int getDeliveryMode() throws JMSException {
@@ -70,35 +76,59 @@
 	}
 
 	public void send(Destination dest, Message msg) throws JMSException {
+		checkPreConditions();
 		delegate.send(dest,msg);
 	}
 
 	public void send(Message msg, int deliveryMode, int priority, long timeToLive)
 			throws JMSException {
+		checkPreConditions();
 		delegate.send(msg, deliveryMode,priority,timeToLive);
 	}
 
 	public void send(Destination dest, Message msg, int deliveryMode, int priority, long timeToLive) throws JMSException {
+		checkPreConditions();
 		delegate.send(dest,msg, deliveryMode,priority,timeToLive);
 	}
 
 	public void setDeliveryMode(int deliveryMode) throws JMSException {
+		checkPreConditions();
 		delegate.setDeliveryMode(deliveryMode);
 	}
 
 	public void setDisableMessageID(boolean disableMessageID) throws JMSException {
+		checkPreConditions();
 		delegate.setDisableMessageID(disableMessageID);
 	}
 
 	public void setDisableMessageTimestamp(boolean disableMessageTimestamp) throws JMSException {
+		checkPreConditions();
 		delegate.setDisableMessageTimestamp(disableMessageTimestamp);
 	}
 
 	public void setPriority(int priority) throws JMSException {
+		checkPreConditions();
 		delegate.setPriority(priority);
 	}
 
 	public void setTimeToLive(long timeToLive) throws JMSException {
+		checkPreConditions();
 		delegate.setTimeToLive(timeToLive);
+	}
+	
+	private void checkPreConditions() throws IllegalStateException, IllegalStateException {
+		if (closed){
+			throw new javax.jms.IllegalStateException("Publisher is closed");
+		}
+		
+		if(queue == null){
+			throw new UnsupportedOperationException("Queue is null");
+		}
+		
+		AMQSession session = ((BasicMessageProducer)delegate).getSession();
+		
+		if(session == null || session.isClosed()){
+			throw new UnsupportedOperationException("Invalid Session");
+		}
 	}
 }

Modified: incubator/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/TopicPublisherAdapter.java
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/TopicPublisherAdapter.java?view=diff&rev=483129&r1=483128&r2=483129
==============================================================================
--- incubator/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/TopicPublisherAdapter.java (original)
+++ incubator/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/TopicPublisherAdapter.java Wed Dec  6 07:56:03 2006
@@ -1,6 +1,7 @@
 package org.apache.qpid.client;
 
 import javax.jms.Destination;
+import javax.jms.IllegalStateException;
 import javax.jms.JMSException;
 import javax.jms.Message;
 import javax.jms.MessageProducer;
@@ -11,6 +12,7 @@
 
 	private MessageProducer delegate;
 	private Topic topic;
+	private boolean closed = false;
 	
 	public TopicPublisherAdapter(MessageProducer msgProducer, Topic topic){
 		delegate = msgProducer;
@@ -18,29 +20,35 @@
 	}
 	
 	public Topic getTopic() throws JMSException {
+		checkPreConditions();
 		return topic;
 	}
 
 	public void publish(Message msg) throws JMSException {
+		checkPreConditions();
 		delegate.send(msg);
 	}
 
 	public void publish(Topic topic, Message msg) throws JMSException {
+		checkPreConditions();
 		delegate.send(topic,msg);
 	}
 
 	public void publish(Message msg, int deliveryMode, int priority, long timeToLive)
 			throws JMSException {
+		checkPreConditions();
 		delegate.send(msg, deliveryMode,priority,timeToLive);
 	}
 
 	public void publish(Topic topic, Message msg, int deliveryMode, int priority, long timeToLive)
 			throws JMSException {
+		checkPreConditions();
 		delegate.send(topic,msg, deliveryMode,priority,timeToLive);
 	}
 
 	public void close() throws JMSException {
 		delegate.close();
+		closed = true;
 	}
 
 	public int getDeliveryMode() throws JMSException {
@@ -68,40 +76,63 @@
 	}
 
 	public void send(Message msg) throws JMSException {
+		checkPreConditions();
 		delegate.send(msg);
 	}
 
 	public void send(Destination dest, Message msg) throws JMSException {
+		checkPreConditions();
 		delegate.send(dest,msg);
 	}
 
 	public void send(Message msg, int deliveryMode, int priority, long timeToLive)
 			throws JMSException {
+		checkPreConditions();
 		delegate.send(msg, deliveryMode,priority,timeToLive);
 	}
 
 	public void send(Destination dest, Message msg, int deliveryMode, int priority, long timeToLive) throws JMSException {
+		checkPreConditions();
 		delegate.send(dest,msg, deliveryMode,priority,timeToLive);
 	}
-
+	
 	public void setDeliveryMode(int deliveryMode) throws JMSException {
+		checkPreConditions();
 		delegate.setDeliveryMode(deliveryMode);
 	}
 
 	public void setDisableMessageID(boolean disableMessageID) throws JMSException {
+		checkPreConditions();
 		delegate.setDisableMessageID(disableMessageID);
 	}
 
 	public void setDisableMessageTimestamp(boolean disableMessageTimestamp) throws JMSException {
+		checkPreConditions();
 		delegate.setDisableMessageTimestamp(disableMessageTimestamp);
 	}
 
 	public void setPriority(int priority) throws JMSException {
+		checkPreConditions();
 		delegate.setPriority(priority);
 	}
 
 	public void setTimeToLive(long timeToLive) throws JMSException {
+		checkPreConditions();
 		delegate.setTimeToLive(timeToLive);
 	}
 
+	private void checkPreConditions() throws IllegalStateException, IllegalStateException {
+		if (closed){
+			throw new javax.jms.IllegalStateException("Publisher is closed");
+		}
+		
+		if(topic == null){
+			throw new UnsupportedOperationException("Topic is null");
+		}
+		
+		AMQSession session = ((BasicMessageProducer)delegate).getSession();
+		if(session == null || session.isClosed()){
+			throw new UnsupportedOperationException("Invalid Session");
+		}
+	}
 }

Modified: incubator/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/TopicSubscriberAdaptor.java
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/TopicSubscriberAdaptor.java?view=diff&rev=483129&r1=483128&r2=483129
==============================================================================
--- incubator/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/TopicSubscriberAdaptor.java (original)
+++ incubator/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/TopicSubscriberAdaptor.java Wed Dec  6 07:56:03 2006
@@ -20,6 +20,7 @@
  */
 package org.apache.qpid.client;
 
+import javax.jms.IllegalStateException;
 import javax.jms.JMSException;
 import javax.jms.Message;
 import javax.jms.MessageConsumer;
@@ -43,37 +44,45 @@
         _consumer = consumer;
         _noLocal = noLocal;
     }
+    
     TopicSubscriberAdaptor(Topic topic, BasicMessageConsumer consumer)
     {
         this(topic, consumer, consumer.isNoLocal());
     }
+    
     public Topic getTopic() throws JMSException
     {
+    	checkPreConditions();
         return _topic;
     }
 
     public boolean getNoLocal() throws JMSException
     {
+    	checkPreConditions();
         return _noLocal;
     }
 
     public String getMessageSelector() throws JMSException
     {
+    	checkPreConditions();
         return _consumer.getMessageSelector();
     }
 
     public MessageListener getMessageListener() throws JMSException
     {
+    	checkPreConditions();
         return _consumer.getMessageListener();
     }
 
     public void setMessageListener(MessageListener messageListener) throws JMSException
     {
+    	checkPreConditions();
         _consumer.setMessageListener(messageListener);
     }
 
     public Message receive() throws JMSException
     {
+    	checkPreConditions();
         return _consumer.receive();
     }
 
@@ -84,6 +93,7 @@
 
     public Message receiveNoWait() throws JMSException
     {
+    	checkPreConditions();
         return _consumer.receiveNoWait();
     }
 
@@ -91,4 +101,22 @@
     {
         _consumer.close();
     }
+    
+    private void checkPreConditions() throws javax.jms.IllegalStateException{
+    	BasicMessageConsumer msgConsumer = (BasicMessageConsumer)_consumer;
+    	
+    	if (msgConsumer.isClosed() ){
+			throw new javax.jms.IllegalStateException("Consumer is closed");
+		}
+		
+		if(_topic == null){
+			throw new UnsupportedOperationException("Topic is null");
+		}
+		
+		AMQSession session = msgConsumer.getSession();
+		
+		if(session == null || session.isClosed()){
+			throw new UnsupportedOperationException("Invalid Session");
+		}
+	}
 }