View Javadoc

1   /*** 
2    * 
3    * Copyright 2004 Protique Ltd
4    * 
5    * Licensed under the Apache License, Version 2.0 (the "License"); 
6    * you may not use this file except in compliance with the License. 
7    * You may obtain a copy of the License at 
8    * 
9    * http://www.apache.org/licenses/LICENSE-2.0
10   * 
11   * Unless required by applicable law or agreed to in writing, software
12   * distributed under the License is distributed on an "AS IS" BASIS, 
13   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
14   * See the License for the specific language governing permissions and 
15   * limitations under the License. 
16   * 
17   **/
18  
19  package org.codehaus.activemq.service.boundedvm;
20  
21  
22  import javax.jms.DeliveryMode;
23  import javax.jms.JMSException;
24  import org.codehaus.activemq.filter.Filter;
25  import org.codehaus.activemq.message.ActiveMQMessage;
26  import org.codehaus.activemq.message.ConsumerInfo;
27  
28  /***
29   * A holder for Transient Topic consumer info and message routing
30   * 
31   * @version $Revision: 1.1 $
32   */
33  public class TransientTopicSubscription  {
34      private Filter filter;
35      private ConsumerInfo consumerInfo;
36      
37      
38      /***
39       * Construct the TransientTopicSubscription
40       * @param filter
41       * @param info
42       */
43      
44      public TransientTopicSubscription(Filter filter,ConsumerInfo info){
45          this.filter = filter;
46          this.consumerInfo = info;
47      }
48  
49      
50      /***
51       * determines if the Subscription is interested in the message
52       *
53       * @param message
54       * @return true if this Subscription will accept the message
55       * @throws JMSException
56       */
57      public boolean isTarget(ActiveMQMessage message) throws JMSException {
58          boolean result = false;
59          if (message != null) {
60              result = filter.matches(message);
61              //if we are durable, check we only send non-persistent messages
62              if (result && consumerInfo.isDurableTopic()){
63                  result = message.getJMSDeliveryMode() == DeliveryMode.NON_PERSISTENT;
64              }
65          }
66          return result;
67      }
68      /***
69       * @return Returns the consumerInfo.
70       */
71      public ConsumerInfo getConsumerInfo() {
72          return consumerInfo;
73      }
74      /***
75       * @param consumerInfo The consumerInfo to set.
76       */
77      public void setConsumerInfo(ConsumerInfo consumerInfo) {
78          this.consumerInfo = consumerInfo;
79      }
80  }