001 /**
002 *
003 * Copyright 2004 Protique Ltd
004 * Copyright 2005 Hiram Chirino
005 *
006 * Licensed under the Apache License, Version 2.0 (the "License");
007 * you may not use this file except in compliance with the License.
008 * You may obtain a copy of the License at
009 *
010 * http://www.apache.org/licenses/LICENSE-2.0
011 *
012 * Unless required by applicable law or agreed to in writing, software
013 * distributed under the License is distributed on an "AS IS" BASIS,
014 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
015 * See the License for the specific language governing permissions and
016 * limitations under the License.
017 *
018 **/
019
020 package org.activemq.service.boundedvm;
021
022
023 import javax.jms.JMSException;
024
025 import org.activemq.broker.BrokerClient;
026 import org.activemq.broker.BrokerConnector;
027 import org.activemq.filter.Filter;
028 import org.activemq.message.ActiveMQDestination;
029 import org.activemq.message.ActiveMQMessage;
030 import org.activemq.message.BrokerInfo;
031 import org.activemq.message.ConsumerInfo;
032
033 /**
034 * A holder for Durable consumer info and message routing
035 *
036 * @version $Revision: 1.1.1.1 $
037 */
038 public abstract class DurableSubscription {
039 protected Filter filter;
040 protected ConsumerInfo consumerInfo;
041 protected BrokerClient client;
042 protected String brokerName;
043 protected String clusterName;
044
045 /**
046 * Construct the DurableSubscription
047 * @param filter
048 * @param info
049 */
050 public DurableSubscription(Filter filter, ConsumerInfo info, BrokerClient client) {
051 this.filter = filter;
052 this.consumerInfo = info;
053 this.client = client;
054 if (client != null) {
055 BrokerConnector connector = client.getBrokerConnector();
056 if (connector != null) {
057 BrokerInfo bi = connector.getBrokerInfo();
058 if (bi != null) {
059 this.brokerName = bi.getBrokerName();
060 this.clusterName = bi.getClusterName();
061 }
062 }
063 }
064 }
065
066
067 /**
068 * determines if the Subscription is interested in the message
069 *
070 * @param message
071 * @return true if this Subscription will accept the message
072 * @throws JMSException
073 */
074 public abstract boolean isTarget(ActiveMQMessage message) throws JMSException;
075
076 /**
077 * @return Returns the consumerInfo.
078 */
079 public ConsumerInfo getConsumerInfo() {
080 return consumerInfo;
081 }
082 /**
083 * @param consumerInfo The consumerInfo to set.
084 */
085 public void setConsumerInfo(ConsumerInfo consumerInfo) {
086 this.consumerInfo = consumerInfo;
087 }
088 /**
089 * @return Returns the filter.
090 */
091 public Filter getFilter() {
092 return filter;
093 }
094 /**
095 * @param filter The filter to set.
096 */
097 public void setFilter(Filter filter) {
098 this.filter = filter;
099 }
100
101 /**
102 * close the subscription
103 */
104 public void close(){
105 }
106
107 /**
108 * @return Returns the destination.
109 */
110 public ActiveMQDestination getDestination() {
111 return consumerInfo.getDestination();
112 }
113
114 /**
115 * @return true if this subscription is for a non-broker consumer
116 */
117 public boolean isLocalSubscription() {
118 boolean localSubscription = true;
119 if (client != null) {
120 localSubscription = !(client.isClusteredConnection() || client.isBrokerConnection());
121 }
122 return localSubscription;
123 }
124 }