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.2 $
32   */
33  public class TransientTopicSubscription  extends TransientSubscription{
34     
35      
36      /***
37       * Construct the TransientTopicSubscription
38       * @param filter
39       * @param info
40       */
41      
42      public TransientTopicSubscription(Filter filter,ConsumerInfo info){
43          super(filter,info);
44      }
45  
46      
47      /***
48       * determines if the Subscription is interested in the message
49       *
50       * @param message
51       * @return true if this Subscription will accept the message
52       * @throws JMSException
53       */
54      public boolean isTarget(ActiveMQMessage message) throws JMSException {
55          boolean result = false;
56          if (message != null) {
57              result = filter.matches(message);
58              //if we are durable, check we only send non-persistent messages
59              if (result && consumerInfo.isDurableTopic()){
60                  result = message.getJMSDeliveryMode() == DeliveryMode.NON_PERSISTENT;
61              }
62          }
63          return result;
64      }
65  }