You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by ro...@apache.org on 2015/03/03 12:58:20 UTC

[2/3] qpid-jms git commit: remove xquery and xpath expressions we arent using, drop xalan build dependency

remove xquery and xpath expressions we arent using, drop xalan build dependency


Project: http://git-wip-us.apache.org/repos/asf/qpid-jms/repo
Commit: http://git-wip-us.apache.org/repos/asf/qpid-jms/commit/8633f4f7
Tree: http://git-wip-us.apache.org/repos/asf/qpid-jms/tree/8633f4f7
Diff: http://git-wip-us.apache.org/repos/asf/qpid-jms/diff/8633f4f7

Branch: refs/heads/master
Commit: 8633f4f7e8c33152fa95e3e2ef8b1dbb0e504f17
Parents: 8540359
Author: Robert Gemmell <ro...@apache.org>
Authored: Tue Mar 3 11:40:03 2015 +0000
Committer: Robert Gemmell <ro...@apache.org>
Committed: Tue Mar 3 11:47:33 2015 +0000

----------------------------------------------------------------------
 qpid-jms-client/pom.xml                         |   9 --
 .../jms/selector/filter/UnaryExpression.java    |   8 --
 .../jms/selector/filter/XPathExpression.java    |  78 -------------
 .../jms/selector/filter/XQueryExpression.java   |  50 --------
 .../selector/filter/XalanXPathEvaluator.java    | 115 -------------------
 qpid-jms-client/src/main/javacc/StrictParser.jj |  12 --
 .../qpid/jms/selector/SelectorParserTest.java   |   7 --
 .../apache/qpid/jms/selector/SelectorTest.java  |  41 -------
 8 files changed, 320 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/8633f4f7/qpid-jms-client/pom.xml
----------------------------------------------------------------------
diff --git a/qpid-jms-client/pom.xml b/qpid-jms-client/pom.xml
index d2c4813..39e2c39 100644
--- a/qpid-jms-client/pom.xml
+++ b/qpid-jms-client/pom.xml
@@ -72,15 +72,6 @@
       <artifactId>hamcrest-all</artifactId>
       <scope>test</scope>
     </dependency>
-
-    <!-- =================================== -->
-    <!-- Build Dependencies                  -->
-    <!-- =================================== -->
-    <dependency>
-      <groupId>xalan</groupId>
-      <artifactId>xalan</artifactId>
-      <optional>true</optional>
-    </dependency>
   </dependencies>
 
   <build>

http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/8633f4f7/qpid-jms-client/src/main/java/org/apache/qpid/jms/selector/filter/UnaryExpression.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/main/java/org/apache/qpid/jms/selector/filter/UnaryExpression.java b/qpid-jms-client/src/main/java/org/apache/qpid/jms/selector/filter/UnaryExpression.java
index 1233447..854a659 100755
--- a/qpid-jms-client/src/main/java/org/apache/qpid/jms/selector/filter/UnaryExpression.java
+++ b/qpid-jms-client/src/main/java/org/apache/qpid/jms/selector/filter/UnaryExpression.java
@@ -151,14 +151,6 @@ public abstract class UnaryExpression implements Expression {
         };
     }
 
-    public static BooleanExpression createXPath(final String xpath) {
-        return new XPathExpression(xpath);
-    }
-
-    public static BooleanExpression createXQuery(final String xpath) {
-        return new XQueryExpression(xpath);
-    }
-
     public static BooleanExpression createBooleanCast(Expression left) {
         return new BooleanUnaryExpression(left) {
             @Override

http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/8633f4f7/qpid-jms-client/src/main/java/org/apache/qpid/jms/selector/filter/XPathExpression.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/main/java/org/apache/qpid/jms/selector/filter/XPathExpression.java b/qpid-jms-client/src/main/java/org/apache/qpid/jms/selector/filter/XPathExpression.java
deleted file mode 100755
index ebfc38f..0000000
--- a/qpid-jms-client/src/main/java/org/apache/qpid/jms/selector/filter/XPathExpression.java
+++ /dev/null
@@ -1,78 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.qpid.jms.selector.filter;
-
-/**
- * Used to evaluate an XPath Expression in a JMS selector.
- */
-public final class XPathExpression implements BooleanExpression {
-
-    public static XPathEvaluatorFactory XPATH_EVALUATOR_FACTORY = null;
-    static {
-        // Install the xalan xpath evaluator if it available.
-        new XalanXPathEvaluator("//root").evaluate("<root></root>");
-        try {
-            XPATH_EVALUATOR_FACTORY = new XPathExpression.XPathEvaluatorFactory() {
-                @Override
-                public XPathExpression.XPathEvaluator create(String xpath) {
-                    return new XalanXPathEvaluator(xpath);
-                }
-            };
-        } catch(Throwable e) {
-        }
-    }
-
-    private final String xpath;
-    private final XPathEvaluator evaluator;
-
-    public static interface XPathEvaluatorFactory {
-        XPathEvaluator create(String xpath);
-    }
-
-    public static interface XPathEvaluator {
-        boolean evaluate(Filterable message) throws FilterException;
-    }
-
-    XPathExpression(String xpath) {
-        if( XPATH_EVALUATOR_FACTORY == null ) {
-            throw new IllegalArgumentException("XPATH support not enabled.");
-        }
-        this.xpath = xpath;
-        this.evaluator = XPATH_EVALUATOR_FACTORY.create(xpath);
-    }
-
-    @Override
-    public Object evaluate(Filterable message) throws FilterException {
-        return evaluator.evaluate(message) ? Boolean.TRUE : Boolean.FALSE;
-    }
-
-    @Override
-    public String toString() {
-        return "XPATH " + ConstantExpression.encodeString(xpath);
-    }
-
-    /**
-     * @param message
-     * @return true if the expression evaluates to Boolean.TRUE.
-     * @throws FilterException
-     */
-    @Override
-    public boolean matches(Filterable message) throws FilterException {
-        Object object = evaluate(message);
-        return object != null && object == Boolean.TRUE;
-    }
-}

http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/8633f4f7/qpid-jms-client/src/main/java/org/apache/qpid/jms/selector/filter/XQueryExpression.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/main/java/org/apache/qpid/jms/selector/filter/XQueryExpression.java b/qpid-jms-client/src/main/java/org/apache/qpid/jms/selector/filter/XQueryExpression.java
deleted file mode 100755
index 00d091c..0000000
--- a/qpid-jms-client/src/main/java/org/apache/qpid/jms/selector/filter/XQueryExpression.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.qpid.jms.selector.filter;
-
-/**
- * Used to evaluate an XQuery Expression in a JMS selector.
- */
-public final class XQueryExpression implements BooleanExpression {
-    private final String xpath;
-
-    XQueryExpression(String xpath) {
-        super();
-        this.xpath = xpath;
-    }
-
-    @Override
-    public Object evaluate(Filterable message) throws FilterException {
-        return Boolean.FALSE;
-    }
-
-    @Override
-    public String toString() {
-        return "XQUERY " + ConstantExpression.encodeString(xpath);
-    }
-
-    /**
-     * @param message
-     * @return true if the expression evaluates to Boolean.TRUE.
-     * @throws FilterException
-     */
-    @Override
-    public boolean matches(Filterable message) throws FilterException {
-        Object object = evaluate(message);
-        return object != null && object == Boolean.TRUE;
-    }
-}

http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/8633f4f7/qpid-jms-client/src/main/java/org/apache/qpid/jms/selector/filter/XalanXPathEvaluator.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/main/java/org/apache/qpid/jms/selector/filter/XalanXPathEvaluator.java b/qpid-jms-client/src/main/java/org/apache/qpid/jms/selector/filter/XalanXPathEvaluator.java
deleted file mode 100644
index 13ad667..0000000
--- a/qpid-jms-client/src/main/java/org/apache/qpid/jms/selector/filter/XalanXPathEvaluator.java
+++ /dev/null
@@ -1,115 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.qpid.jms.selector.filter;
-
-import java.io.StringReader;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-import java.util.Properties;
-
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.ParserConfigurationException;
-
-import org.apache.xpath.CachedXPathAPI;
-import org.apache.xpath.objects.XObject;
-import org.w3c.dom.Document;
-import org.w3c.dom.traversal.NodeIterator;
-import org.xml.sax.InputSource;
-
-public class XalanXPathEvaluator implements XPathExpression.XPathEvaluator {
-    public static final String DOCUMENT_BUILDER_FACTORY_FEATURE = "org.apache.activemq.apollo.documentBuilderFactory.feature";
-    private final String xpath;
-
-    public XalanXPathEvaluator(String xpath) {
-        this.xpath = xpath;
-    }
-
-    @Override
-    public boolean evaluate(Filterable m) throws FilterException {
-        String stringBody = m.getBodyAs(String.class);
-        if (stringBody!=null) {
-            return evaluate(stringBody);
-        }
-        return false;
-    }
-
-    protected boolean evaluate(String text) {
-        return evaluate(new InputSource(new StringReader(text)));
-    }
-
-    protected boolean evaluate(InputSource inputSource) {
-        try {
-            DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
-            factory.setFeature("http://xml.org/sax/features/external-general-entities", false);
-            factory.setFeature("http://xml.org/sax/features/external-parameter-entities", false);
-            factory.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true);
-            setupFeatures(factory);
-            factory.setNamespaceAware(true);
-            factory.setIgnoringElementContentWhitespace(true);
-            factory.setIgnoringComments(true);
-            DocumentBuilder dbuilder = factory.newDocumentBuilder();
-            Document doc = dbuilder.parse(inputSource);
-
-            // An XPath expression could return a true or false value instead of a node.
-            // eval() is a better way to determine the boolean value of the exp.
-            // For compliance with legacy behavior where selecting an empty node returns true,
-            // selectNodeIterator is attempted in case of a failure.
-
-            CachedXPathAPI cachedXPathAPI = new CachedXPathAPI();
-            XObject result = cachedXPathAPI.eval(doc, xpath);
-            if (result.bool()) {
-                return true;
-            } else {
-                NodeIterator iterator = cachedXPathAPI.selectNodeIterator(doc, xpath);
-                return (iterator.nextNode() != null);
-            }
-        } catch (Throwable e) {
-            return false;
-        }
-    }
-
-    protected void setupFeatures(DocumentBuilderFactory factory) {
-        Properties properties = System.getProperties();
-        List<String> features = new ArrayList<String>();
-        for (Map.Entry<Object, Object> prop : properties.entrySet()) {
-            String key = (String) prop.getKey();
-            if (key.startsWith(DOCUMENT_BUILDER_FACTORY_FEATURE)) {
-                String uri = key.split(DOCUMENT_BUILDER_FACTORY_FEATURE + ":")[1];
-                Boolean value = Boolean.valueOf((String)prop.getValue());
-                try {
-                    factory.setFeature(uri, value);
-                    features.add("feature " + uri + " value " + value);
-                } catch (ParserConfigurationException e) {
-                    throw new RuntimeException("DocumentBuilderFactory doesn't support the feature " + uri + " with value " + value + ", due to " + e);
-                }
-            }
-        }
-
-        if (features.size() > 0) {
-            StringBuffer featureString = new StringBuffer();
-            // just log the configured feature
-            for (String feature : features) {
-                if (featureString.length() != 0) {
-                    featureString.append(", ");
-                }
-                featureString.append(feature);
-            }
-        }
-    }
-}

http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/8633f4f7/qpid-jms-client/src/main/javacc/StrictParser.jj
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/main/javacc/StrictParser.jj b/qpid-jms-client/src/main/javacc/StrictParser.jj
index b095209..bf1bec5 100755
--- a/qpid-jms-client/src/main/javacc/StrictParser.jj
+++ b/qpid-jms-client/src/main/javacc/StrictParser.jj
@@ -108,8 +108,6 @@ TOKEN [IGNORE_CASE] :
   | <  TRUE    : "TRUE" >
   | <  FALSE   : "FALSE" >
   | <  NULL    : "NULL" >
-  | <  XPATH   : "XPATH" >
-  | <  XQUERY  : "XQUERY" >
 }
 
 /* Literals */
@@ -419,16 +417,6 @@ Expression unaryExpr() :
             left = UnaryExpression.createNOT( asBooleanExpression(left) );
         }
         |
-        <XPATH> s=stringLitteral()
-        {
-            left = UnaryExpression.createXPath( s );
-        }
-        |
-        <XQUERY> s=stringLitteral()
-        {
-            left = UnaryExpression.createXQuery( s );
-        }
-        |
         left = primaryExpr()
     )
     {

http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/8633f4f7/qpid-jms-client/src/test/java/org/apache/qpid/jms/selector/SelectorParserTest.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/selector/SelectorParserTest.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/selector/SelectorParserTest.java
index c0e73c2..73eca85 100755
--- a/qpid-jms-client/src/test/java/org/apache/qpid/jms/selector/SelectorParserTest.java
+++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/selector/SelectorParserTest.java
@@ -24,19 +24,12 @@ import org.apache.qpid.jms.selector.filter.ComparisonExpression;
 import org.apache.qpid.jms.selector.filter.Expression;
 import org.apache.qpid.jms.selector.filter.LogicExpression;
 import org.apache.qpid.jms.selector.filter.PropertyExpression;
-import org.apache.qpid.jms.selector.filter.XPathExpression;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 public class SelectorParserTest extends TestCase {
     private static final Logger LOG = LoggerFactory.getLogger(SelectorParserTest.class);
 
-    public void testParseXPath() throws Exception {
-        BooleanExpression filter = parse("XPATH '//title[@lang=''eng'']'");
-        assertTrue("Created XPath expression", filter instanceof XPathExpression);
-        LOG.info("Expression: " + filter);
-    }
-
     public void testParseWithParensAround() throws Exception {
         String[] values = {"x = 1 and y = 2", "(x = 1) and (y = 2)", "((x = 1) and (y = 2))"};
 

http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/8633f4f7/qpid-jms-client/src/test/java/org/apache/qpid/jms/selector/SelectorTest.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/selector/SelectorTest.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/selector/SelectorTest.java
index a103f9a..bc59301 100755
--- a/qpid-jms-client/src/test/java/org/apache/qpid/jms/selector/SelectorTest.java
+++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/selector/SelectorTest.java
@@ -121,47 +121,6 @@ public class SelectorTest extends TestCase {
         assertSelector(message, "(trueProp OR falseProp) AND falseProp", false);
     }
 
-    public void testXPathSelectors() throws Exception {
-        MockMessage message = new MockMessage();
-
-        message.setJMSType("xml");
-        message.setText("<root><a key='first' num='1'/><b key='second' num='2'>b</b></root>");
-
-        assertSelector(message, "XPATH 'root/a'", true);
-        assertSelector(message, "XPATH '//root/b'", true);
-        assertSelector(message, "XPATH 'root/c'", false);
-        assertSelector(message, "XPATH '//root/b/text()=\"b\"'", true);
-        assertSelector(message, "XPATH '//root/b=\"b\"'", true);
-        assertSelector(message, "XPATH '//root/b=\"c\"'", false);
-        assertSelector(message, "XPATH '//root/b!=\"c\"'", true);
-
-        assertSelector(message, "XPATH '//root/*[@key=''second'']'", true);
-        assertSelector(message, "XPATH '//root/*[@key=''third'']'", false);
-        assertSelector(message, "XPATH '//root/a[@key=''first'']'", true);
-        assertSelector(message, "XPATH '//root/a[@num=1]'", true);
-        assertSelector(message, "XPATH '//root/a[@key=''second'']'", false);
-
-        assertSelector(message, "XPATH '/root/*[@key=''first'' or @key=''third'']'", true);
-        assertSelector(message, "XPATH '//root/*[@key=''third'' or @key=''forth'']'", false);
-
-        assertSelector(message, "XPATH '/root/b=''b'' and /root/b[@key=''second'']'", true);
-        assertSelector(message, "XPATH '/root/b=''b'' and /root/b[@key=''first'']'", false);
-
-        assertSelector(message, "XPATH 'not(//root/a)'", false);
-        assertSelector(message, "XPATH 'not(//root/c)'", true);
-        assertSelector(message, "XPATH '//root/a[not(@key=''first'')]'", false);
-        assertSelector(message, "XPATH '//root/a[not(not(@key=''first''))]'", true);
-
-        assertSelector(message, "XPATH 'string(//root/b)'", true);
-        assertSelector(message, "XPATH 'string(//root/a)'", false);
-
-        assertSelector(message, "XPATH 'sum(//@num) < 10'", true);
-        assertSelector(message, "XPATH 'sum(//@num) > 10'", false);
-
-        assertSelector(message, "XPATH '//root/a[@num > 1]'", false);
-        assertSelector(message, "XPATH '//root/b[@num > 1]'", true);
-    }
-
     public void testJMSPropertySelectors() throws Exception {
         MockMessage message = createMessage();
         message.setJMSType("selector-test");


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org