JMSSelectorFilter.java
01 /*
02  *  Licensed to the Apache Software Foundation (ASF) under one
03  *  or more contributor license agreements.  See the NOTICE file
04  *  distributed with this work for additional information
05  *  regarding copyright ownership.  The ASF licenses this file
06  *  to you under the Apache License, Version 2.0 (the
07  *  "License"); you may not use this file except in compliance
08  *  with the License.  You may obtain a copy of the License at
09  *
10  *    http://www.apache.org/licenses/LICENSE-2.0
11  *
12  *  Unless required by applicable law or agreed to in writing,
13  *  software distributed under the License is distributed on an
14  *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15  *  KIND, either express or implied.  See the License for the
16  *  specific language governing permissions and limitations
17  *  under the License.    
18  *
19  
20  */
21 package org.apache.qpid.server.filter;
22 
23 import org.apache.log4j.Logger;
24 import org.apache.qpid.AMQException;
25 import org.apache.qpid.server.filter.jms.selector.SelectorParser;
26 import org.apache.qpid.server.queue.Filterable;
27 
28 
29 public class JMSSelectorFilter<E extends Exception> implements MessageFilter<E>
30 {
31     private final static Logger _logger = org.apache.log4j.Logger.getLogger(JMSSelectorFilter.class);
32 
33     private String _selector;
34     private BooleanExpression<E> _matcher;
35 
36     public JMSSelectorFilter(String selectorthrows AMQException
37     {
38         _selector = selector;
39         _matcher = new SelectorParser().parse(selector);
40     }
41 
42     public boolean matches(Filterable<E> messagethrows E
43     {
44         boolean match = _matcher.matches(message);
45         if(_logger.isDebugEnabled())
46         {
47             _logger.debug(message + " match(" + match + ") selector(" + System.identityHashCode(_selector"):" + _selector);
48         }
49         return match;
50     }
51 
52     public String getSelector()
53     {
54         return _selector;
55     }
56 }