KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > activemq > filter > XMLBeansXPathEvaluator


1 /**
2  *
3  * Licensed to the Apache Software Foundation (ASF) under one or more
4  * contributor license agreements. See the NOTICE file distributed with
5  * this work for additional information regarding copyright ownership.
6  * The ASF licenses this file to You under the Apache License, Version 2.0
7  * (the "License"); you may not use this file except in compliance with
8  * the License. You may obtain a copy of the License at
9  *
10  * http://www.apache.org/licenses/LICENSE-2.0
11  *
12  * Unless required by applicable law or agreed to in writing, software
13  * distributed under the License is distributed on an "AS IS" BASIS,
14  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15  * See the License for the specific language governing permissions and
16  * limitations under the License.
17  */

18
19 package org.apache.activemq.filter;
20
21 import javax.jms.BytesMessage JavaDoc;
22 import javax.jms.JMSException JavaDoc;
23 import javax.jms.TextMessage JavaDoc;
24
25 import org.apache.activemq.command.Message;
26 import org.apache.activemq.util.ByteArrayInputStream;
27 import org.apache.xmlbeans.XmlObject;
28
29 public class XMLBeansXPathEvaluator implements XPathExpression.XPathEvaluator {
30
31     private final String JavaDoc xpath;
32
33     public XMLBeansXPathEvaluator(String JavaDoc xpath) {
34         this.xpath = xpath;
35     }
36     
37     public boolean evaluate(Message JavaDoc message) throws JMSException JavaDoc {
38         if( message instanceof TextMessage JavaDoc ) {
39             String JavaDoc text = ((TextMessage JavaDoc)message).getText();
40             try {
41                 XmlObject object = XmlObject.Factory.parse(text);
42                 XmlObject[] objects = object.selectPath(xpath);
43                 return object!=null && objects.length>0;
44             } catch (Throwable JavaDoc e) {
45                 return false;
46             }
47             
48         } else if ( message instanceof BytesMessage JavaDoc ) {
49             BytesMessage JavaDoc bm = (BytesMessage JavaDoc) message;
50             byte data[] = new byte[(int) bm.getBodyLength()];
51             bm.readBytes(data);
52             try {
53                 XmlObject object = XmlObject.Factory.parse(new ByteArrayInputStream(data));
54                 XmlObject[] objects = object.selectPath(xpath);
55                 return object!=null && objects.length>0;
56             } catch (Throwable JavaDoc e) {
57                 return false;
58             }
59         }
60         return false;
61     }
62 }
63
Popular Tags