jstrachan    2002/11/07 11:13:48

  Modified:    messenger/src/java/org/apache/commons/messenger
                        MessengerSupport.java
  Log:
  Added support for setting the default delivery mode on a Messenger. 
  
  This allows you to specify in a Messenger.xml something like
  
  <messenger name="myQueueConnection" persistentDeliver="false">
        ...
  
  to by default enable or disable persistent message delivery. This delivery mode is 
then defaulted on any MessageProducer.
  You can override this delivery mode later if required on a per MessageProducer 
basis, but at least this mechanism provides a simple defaulting mechanism on a per 
Messenger basis
  
  Revision  Changes    Path
  1.32      +45 -5     
jakarta-commons-sandbox/messenger/src/java/org/apache/commons/messenger/MessengerSupport.java
  
  Index: MessengerSupport.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-commons-sandbox/messenger/src/java/org/apache/commons/messenger/MessengerSupport.java,v
  retrieving revision 1.31
  retrieving revision 1.32
  diff -u -r1.31 -r1.32
  --- MessengerSupport.java     6 Sep 2002 11:53:00 -0000       1.31
  +++ MessengerSupport.java     7 Nov 2002 19:13:47 -0000       1.32
  @@ -17,6 +17,7 @@
   import javax.jms.Connection;
   import javax.jms.ConnectionConsumer;
   import javax.jms.ConnectionFactory;
  +import javax.jms.DeliveryMode;
   import javax.jms.Destination;
   import javax.jms.JMSException;
   import javax.jms.MapMessage;
  @@ -63,7 +64,10 @@
       
       /** are topic subscribers durable? */
       private boolean durable;
  -    
  +
  +     /** the delivery mode used by default when sending messages */
  +     private int deliveryMode = Message.DEFAULT_DELIVERY_MODE;
  +         
       /** the durable name used for durable topic based subscriptions */
       private String durableName;
       
  @@ -856,6 +860,34 @@
           this.cacheProducers = cacheProducers;
       }
   
  +     /**
  +      * Returns the delivery mode used on messages sent via this Messenger
  +      * @return int
  +      */
  +     public int getDeliveryMode() {
  +             return deliveryMode;
  +     }
  +
  +     /**
  +      * Sets the delivery mode used on messages sent via this Messenger
  +      * @param deliveryMode The deliveryMode to set
  +      */
  +     public void setDeliveryMode(int deliveryMode) {
  +             this.deliveryMode = deliveryMode;
  +     }
  +
  +    
  +    /**
  +     * Sets whether message delivery should be persistent or not
  +     * 
     * @param persistentDelivery
     */
  +    public void setPersistentDelivery(boolean persistentDelivery) {
  +     if (persistentDelivery) {
  +             setDeliveryMode(DeliveryMode.PERSISTENT);
  +     }
  +     else {
  +             setDeliveryMode(DeliveryMode.NON_PERSISTENT);
  +     }
  +    }
       
       // Implementation methods
       //-------------------------------------------------------------------------
  @@ -917,14 +949,22 @@
           Session session,
           Destination destination)
           throws JMSException {
  +             
  +        MessageProducer answer = null;
           if (isTopic(session)) {
               TopicSession topicSession = (TopicSession) session;
  -            return topicSession.createPublisher((Topic) destination);
  +            answer = topicSession.createPublisher((Topic) destination);
           }
           else {
               QueueSession queueSession = (QueueSession) session;
  -            return queueSession.createSender((Queue) destination);
  +            answer = queueSession.createSender((Queue) destination);
  +        }
  +        
  +        // configure the MessageProducer
  +        if (deliveryMode != Message.DEFAULT_DELIVERY_MODE) {
  +             answer.setDeliveryMode(deliveryMode);
           }
  +        return answer;
       }
       
       /**
  
  
  

--
To unsubscribe, e-mail:   <mailto:commons-dev-unsubscribe@;jakarta.apache.org>
For additional commands, e-mail: <mailto:commons-dev-help@;jakarta.apache.org>

Reply via email to