001 /**
002 * Licensed to the Apache Software Foundation (ASF) under one or more
003 * contributor license agreements. See the NOTICE file distributed with
004 * this work for additional information regarding copyright ownership.
005 * The ASF licenses this file to You under the Apache License, Version 2.0
006 * (the "License"); you may not use this file except in compliance with
007 * the License. You may obtain a copy of the License at
008 *
009 * http://www.apache.org/licenses/LICENSE-2.0
010 *
011 * Unless required by applicable law or agreed to in writing, software
012 * distributed under the License is distributed on an "AS IS" BASIS,
013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014 * See the License for the specific language governing permissions and
015 * limitations under the License.
016 */
017 package org.apache.activemq.broker;
018
019 import java.net.URI;
020 import java.util.Map;
021 import java.util.Set;
022 import org.apache.activemq.broker.region.Destination;
023 import org.apache.activemq.broker.region.MessageReference;
024 import org.apache.activemq.broker.region.Subscription;
025 import org.apache.activemq.command.ActiveMQDestination;
026 import org.apache.activemq.command.BrokerId;
027 import org.apache.activemq.command.BrokerInfo;
028 import org.apache.activemq.command.ConnectionInfo;
029 import org.apache.activemq.command.ConsumerInfo;
030 import org.apache.activemq.command.DestinationInfo;
031 import org.apache.activemq.command.Message;
032 import org.apache.activemq.command.MessageAck;
033 import org.apache.activemq.command.MessageDispatch;
034 import org.apache.activemq.command.MessageDispatchNotification;
035 import org.apache.activemq.command.MessagePull;
036 import org.apache.activemq.command.ProducerInfo;
037 import org.apache.activemq.command.RemoveSubscriptionInfo;
038 import org.apache.activemq.command.Response;
039 import org.apache.activemq.command.SessionInfo;
040 import org.apache.activemq.command.TransactionId;
041 import org.apache.activemq.kaha.Store;
042 import org.apache.activemq.usage.Usage;
043
044 /**
045 * Allows you to intercept broker operation so that features such as security
046 * can be implemented as a pluggable filter.
047 *
048 * @version $Revision: 1.10 $
049 */
050 public class BrokerFilter implements Broker {
051
052 protected final Broker next;
053
054 public BrokerFilter(Broker next) {
055 this.next = next;
056 }
057
058 public Broker getAdaptor(Class type) {
059 if (type.isInstance(this)) {
060 return this;
061 }
062 return next.getAdaptor(type);
063 }
064
065 public Map<ActiveMQDestination, Destination> getDestinationMap() {
066 return next.getDestinationMap();
067 }
068
069 public Set <Destination>getDestinations(ActiveMQDestination destination) {
070 return next.getDestinations(destination);
071 }
072
073 public void acknowledge(ConsumerBrokerExchange consumerExchange, MessageAck ack) throws Exception {
074 next.acknowledge(consumerExchange, ack);
075 }
076
077 public Response messagePull(ConnectionContext context, MessagePull pull) throws Exception {
078 return next.messagePull(context, pull);
079 }
080
081 public void addConnection(ConnectionContext context, ConnectionInfo info) throws Exception {
082 next.addConnection(context, info);
083 }
084
085 public Subscription addConsumer(ConnectionContext context, ConsumerInfo info) throws Exception {
086 return next.addConsumer(context, info);
087 }
088
089 public void addProducer(ConnectionContext context, ProducerInfo info) throws Exception {
090 next.addProducer(context, info);
091 }
092
093 public void commitTransaction(ConnectionContext context, TransactionId xid, boolean onePhase) throws Exception {
094 next.commitTransaction(context, xid, onePhase);
095 }
096
097 public void removeSubscription(ConnectionContext context, RemoveSubscriptionInfo info) throws Exception {
098 next.removeSubscription(context, info);
099 }
100
101 public TransactionId[] getPreparedTransactions(ConnectionContext context) throws Exception {
102 return next.getPreparedTransactions(context);
103 }
104
105 public int prepareTransaction(ConnectionContext context, TransactionId xid) throws Exception {
106 return next.prepareTransaction(context, xid);
107 }
108
109 public void removeConnection(ConnectionContext context, ConnectionInfo info, Throwable error) throws Exception {
110 next.removeConnection(context, info, error);
111 }
112
113 public void removeConsumer(ConnectionContext context, ConsumerInfo info) throws Exception {
114 next.removeConsumer(context, info);
115 }
116
117 public void removeProducer(ConnectionContext context, ProducerInfo info) throws Exception {
118 next.removeProducer(context, info);
119 }
120
121 public void rollbackTransaction(ConnectionContext context, TransactionId xid) throws Exception {
122 next.rollbackTransaction(context, xid);
123 }
124
125 public void send(ProducerBrokerExchange producerExchange, Message messageSend) throws Exception {
126 next.send(producerExchange, messageSend);
127 }
128
129 public void beginTransaction(ConnectionContext context, TransactionId xid) throws Exception {
130 next.beginTransaction(context, xid);
131 }
132
133 public void forgetTransaction(ConnectionContext context, TransactionId transactionId) throws Exception {
134 next.forgetTransaction(context, transactionId);
135 }
136
137 public Connection[] getClients() throws Exception {
138 return next.getClients();
139 }
140
141 public Destination addDestination(ConnectionContext context, ActiveMQDestination destination) throws Exception {
142 return next.addDestination(context, destination);
143 }
144
145 public void removeDestination(ConnectionContext context, ActiveMQDestination destination, long timeout) throws Exception {
146 next.removeDestination(context, destination, timeout);
147 }
148
149 public ActiveMQDestination[] getDestinations() throws Exception {
150 return next.getDestinations();
151 }
152
153 public void start() throws Exception {
154 next.start();
155 }
156
157 public void stop() throws Exception {
158 next.stop();
159 }
160
161 public void addSession(ConnectionContext context, SessionInfo info) throws Exception {
162 next.addSession(context, info);
163 }
164
165 public void removeSession(ConnectionContext context, SessionInfo info) throws Exception {
166 next.removeSession(context, info);
167 }
168
169 public BrokerId getBrokerId() {
170 return next.getBrokerId();
171 }
172
173 public String getBrokerName() {
174 return next.getBrokerName();
175 }
176
177 public void gc() {
178 next.gc();
179 }
180
181 public void addBroker(Connection connection, BrokerInfo info) {
182 next.addBroker(connection, info);
183 }
184
185 public void removeBroker(Connection connection, BrokerInfo info) {
186 next.removeBroker(connection, info);
187 }
188
189 public BrokerInfo[] getPeerBrokerInfos() {
190 return next.getPeerBrokerInfos();
191 }
192
193 public void preProcessDispatch(MessageDispatch messageDispatch) {
194 next.preProcessDispatch(messageDispatch);
195 }
196
197 public void postProcessDispatch(MessageDispatch messageDispatch) {
198 next.postProcessDispatch(messageDispatch);
199 }
200
201 public void processDispatchNotification(MessageDispatchNotification messageDispatchNotification) throws Exception {
202 next.processDispatchNotification(messageDispatchNotification);
203 }
204
205 public boolean isStopped() {
206 return next.isStopped();
207 }
208
209 public Set<ActiveMQDestination> getDurableDestinations() {
210 return next.getDurableDestinations();
211 }
212
213 public void addDestinationInfo(ConnectionContext context, DestinationInfo info) throws Exception {
214 next.addDestinationInfo(context, info);
215 }
216
217 public void removeDestinationInfo(ConnectionContext context, DestinationInfo info) throws Exception {
218 next.removeDestinationInfo(context, info);
219 }
220
221 public boolean isFaultTolerantConfiguration() {
222 return next.isFaultTolerantConfiguration();
223 }
224
225 public ConnectionContext getAdminConnectionContext() {
226 return next.getAdminConnectionContext();
227 }
228
229 public void setAdminConnectionContext(ConnectionContext adminConnectionContext) {
230 next.setAdminConnectionContext(adminConnectionContext);
231 }
232
233 public Store getTempDataStore() {
234 return next.getTempDataStore();
235 }
236
237 public URI getVmConnectorURI() {
238 return next.getVmConnectorURI();
239 }
240
241 public void brokerServiceStarted() {
242 next.brokerServiceStarted();
243 }
244
245 public BrokerService getBrokerService() {
246 return next.getBrokerService();
247 }
248
249 public boolean isExpired(MessageReference messageReference) {
250 return next.isExpired(messageReference);
251 }
252
253 public void messageExpired(ConnectionContext context, MessageReference message) {
254 next.messageExpired(context, message);
255 }
256
257 public void sendToDeadLetterQueue(ConnectionContext context, MessageReference messageReference) {
258 next.sendToDeadLetterQueue(context, messageReference);
259 }
260
261 public Broker getRoot() {
262 return next.getRoot();
263 }
264
265 public long getBrokerSequenceId() {
266 return next.getBrokerSequenceId();
267 }
268
269
270 public void fastProducer(ConnectionContext context,ProducerInfo producerInfo) {
271 next.fastProducer(context, producerInfo);
272 }
273
274 public void isFull(ConnectionContext context,Destination destination, Usage usage) {
275 next.isFull(context,destination, usage);
276 }
277
278 public void messageConsumed(ConnectionContext context,MessageReference messageReference) {
279 next.messageConsumed(context, messageReference);
280 }
281
282 public void messageDelivered(ConnectionContext context,MessageReference messageReference) {
283 next.messageDelivered(context, messageReference);
284 }
285
286 public void messageDiscarded(ConnectionContext context,MessageReference messageReference) {
287 next.messageDiscarded(context, messageReference);
288 }
289
290 public void slowConsumer(ConnectionContext context, Destination destination,Subscription subs) {
291 next.slowConsumer(context, destination,subs);
292 }
293
294 public void nowMasterBroker() {
295 next.nowMasterBroker();
296 }
297 }