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:19 UTC

[1/3] qpid-jms git commit: remove 'convert strings' prefix and machinery, we dont use it

Repository: qpid-jms
Updated Branches:
  refs/heads/master fd2139c27 -> fa4dd26ec


remove 'convert strings' prefix and machinery, we dont use it


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

Branch: refs/heads/master
Commit: 8540359c7b39ba2d3315c35891dc3d38f45271c1
Parents: fd2139c
Author: Robert Gemmell <ro...@apache.org>
Authored: Tue Mar 3 11:04:47 2015 +0000
Committer: Robert Gemmell <ro...@apache.org>
Committed: Tue Mar 3 11:04:47 2015 +0000

----------------------------------------------------------------------
 .../qpid/jms/selector/SelectorParser.java       | 30 +------------
 .../selector/filter/ArithmeticExpression.java   | 14 -------
 .../selector/filter/ComparisonExpression.java   | 44 +-------------------
 3 files changed, 3 insertions(+), 85 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/8540359c/qpid-jms-client/src/main/java/org/apache/qpid/jms/selector/SelectorParser.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/main/java/org/apache/qpid/jms/selector/SelectorParser.java b/qpid-jms-client/src/main/java/org/apache/qpid/jms/selector/SelectorParser.java
index 87cfd6c..28b96d9 100644
--- a/qpid-jms-client/src/main/java/org/apache/qpid/jms/selector/SelectorParser.java
+++ b/qpid-jms-client/src/main/java/org/apache/qpid/jms/selector/SelectorParser.java
@@ -19,15 +19,12 @@ package org.apache.qpid.jms.selector;
 import java.io.StringReader;
 
 import org.apache.qpid.jms.selector.filter.BooleanExpression;
-import org.apache.qpid.jms.selector.filter.ComparisonExpression;
 import org.apache.qpid.jms.selector.filter.FilterException;
 import org.apache.qpid.jms.selector.strict.StrictParser;
 
 public class SelectorParser {
 
     private static final LRUCache<Object, Object> cache = new LRUCache<Object, Object>(100);
-    private static final String CONVERT_STRING_EXPRESSIONS_PREFIX = "convert_string_expressions:";
-    private static final String NO_CONVERT_STRING_EXPRESSIONS_PREFIX = "no_convert_string_expressions:";
 
     public static BooleanExpression parse(String sql) throws FilterException {
         Object result = cache.get(sql);
@@ -36,39 +33,16 @@ public class SelectorParser {
         } else if (result instanceof BooleanExpression) {
             return (BooleanExpression) result;
         } else {
-            String actual = sql;
-            boolean convertStringExpressions = false;
-            while (true) {
-                if (actual.startsWith(CONVERT_STRING_EXPRESSIONS_PREFIX)) {
-                    convertStringExpressions = true;
-                    actual = actual.substring(CONVERT_STRING_EXPRESSIONS_PREFIX.length());
-                    continue;
-                }
-                if (actual.startsWith(NO_CONVERT_STRING_EXPRESSIONS_PREFIX)) {
-                    convertStringExpressions = false;
-                    actual = actual.substring(NO_CONVERT_STRING_EXPRESSIONS_PREFIX.length());
-                    continue;
-                }
-                break;
-            }
-
-            if (convertStringExpressions) {
-                ComparisonExpression.CONVERT_STRING_EXPRESSIONS.set(true);
-            }
             try {
                 BooleanExpression e = null;
-                StrictParser parser = new StrictParser(new StringReader(actual));
+                StrictParser parser = new StrictParser(new StringReader(sql));
                 e = parser.JmsSelector();
                 cache.put(sql, e);
                 return e;
             } catch (Throwable e) {
-                FilterException fe = new FilterException(actual, e);
+                FilterException fe = new FilterException(sql, e);
                 cache.put(sql, fe);
                 throw fe;
-            } finally {
-                if (convertStringExpressions) {
-                    ComparisonExpression.CONVERT_STRING_EXPRESSIONS.remove();
-                }
             }
         }
     }

http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/8540359c/qpid-jms-client/src/main/java/org/apache/qpid/jms/selector/filter/ArithmeticExpression.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/main/java/org/apache/qpid/jms/selector/filter/ArithmeticExpression.java b/qpid-jms-client/src/main/java/org/apache/qpid/jms/selector/filter/ArithmeticExpression.java
index 8aa0c25..7b8bb03 100755
--- a/qpid-jms-client/src/main/java/org/apache/qpid/jms/selector/filter/ArithmeticExpression.java
+++ b/qpid-jms-client/src/main/java/org/apache/qpid/jms/selector/filter/ArithmeticExpression.java
@@ -24,7 +24,6 @@ public abstract class ArithmeticExpression extends BinaryExpression {
     protected static final int INTEGER = 1;
     protected static final int LONG = 2;
     protected static final int DOUBLE = 3;
-    boolean convertStringExpressions = false;
 
     /**
      * @param left
@@ -32,7 +31,6 @@ public abstract class ArithmeticExpression extends BinaryExpression {
      */
     public ArithmeticExpression(Expression left, Expression right) {
         super(left, right);
-        convertStringExpressions = ComparisonExpression.CONVERT_STRING_EXPRESSIONS.get()!=null;
     }
 
     public static Expression createPlus(Expression left, Expression right) {
@@ -173,18 +171,6 @@ public abstract class ArithmeticExpression extends BinaryExpression {
         if (value instanceof Number) {
             return (Number)value;
         } else {
-            if( convertStringExpressions && value instanceof String) {
-                String v = (String) value;
-                try {
-                    if( v.contains(".") ) {
-                        return new Double(v);
-                    } else {
-                        return Long.valueOf(v);
-                    }
-                } catch (NumberFormatException e) {
-                    throw new RuntimeException("Cannot convert value: " + value + " into a number");
-                }
-            }
             throw new RuntimeException("Cannot convert value: " + value + " into a number");
         }
     }

http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/8540359c/qpid-jms-client/src/main/java/org/apache/qpid/jms/selector/filter/ComparisonExpression.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/main/java/org/apache/qpid/jms/selector/filter/ComparisonExpression.java b/qpid-jms-client/src/main/java/org/apache/qpid/jms/selector/filter/ComparisonExpression.java
index 1b00ce9..c52f288 100755
--- a/qpid-jms-client/src/main/java/org/apache/qpid/jms/selector/filter/ComparisonExpression.java
+++ b/qpid-jms-client/src/main/java/org/apache/qpid/jms/selector/filter/ComparisonExpression.java
@@ -26,9 +26,6 @@ import java.util.regex.Pattern;
  */
 public abstract class ComparisonExpression extends BinaryExpression implements BooleanExpression {
 
-    public static final ThreadLocal<Boolean> CONVERT_STRING_EXPRESSIONS = new ThreadLocal<Boolean>();
-
-    boolean convertStringExpressions = false;
     private static final Set<Character> REGEXP_CONTROL_CHARS = new HashSet<Character>();
 
     /**
@@ -37,7 +34,6 @@ public abstract class ComparisonExpression extends BinaryExpression implements B
      */
     public ComparisonExpression(Expression left, Expression right) {
         super(left, right);
-        convertStringExpressions = CONVERT_STRING_EXPRESSIONS.get()!=null;
     }
 
     public static BooleanExpression createBetween(Expression value, Expression left, Expression right) {
@@ -364,13 +360,7 @@ public abstract class ComparisonExpression extends BinaryExpression implements B
         // try to convert up to allow the comparison.
         if (lc != rc) {
             try {
-                if (lc == Boolean.class) {
-                    if (convertStringExpressions && rc == String.class) {
-                        rv = Boolean.valueOf((String)rv);
-                    } else {
-                        return Boolean.FALSE;
-                    }
-                } else if (lc == Byte.class) {
+                if (lc == Byte.class) {
                     if (rc == Short.class) {
                         lv = Short.valueOf(((Number)lv).shortValue());
                     } else if (rc == Integer.class) {
@@ -381,8 +371,6 @@ public abstract class ComparisonExpression extends BinaryExpression implements B
                         lv = new Float(((Number)lv).floatValue());
                     } else if (rc == Double.class) {
                         lv = new Double(((Number)lv).doubleValue());
-                    } else if (convertStringExpressions && rc == String.class) {
-                        rv = Byte.valueOf((String)rv);
                     } else {
                         return Boolean.FALSE;
                     }
@@ -395,8 +383,6 @@ public abstract class ComparisonExpression extends BinaryExpression implements B
                         lv = new Float(((Number)lv).floatValue());
                     } else if (rc == Double.class) {
                         lv = new Double(((Number)lv).doubleValue());
-                    } else if (convertStringExpressions && rc == String.class) {
-                        rv = Short.valueOf((String)rv);
                     } else {
                         return Boolean.FALSE;
                     }
@@ -407,8 +393,6 @@ public abstract class ComparisonExpression extends BinaryExpression implements B
                         lv = new Float(((Number)lv).floatValue());
                     } else if (rc == Double.class) {
                         lv = new Double(((Number)lv).doubleValue());
-                    } else if (convertStringExpressions && rc == String.class) {
-                        rv = Integer.valueOf((String)rv);
                     } else {
                         return Boolean.FALSE;
                     }
@@ -419,8 +403,6 @@ public abstract class ComparisonExpression extends BinaryExpression implements B
                         lv = new Float(((Number)lv).floatValue());
                     } else if (rc == Double.class) {
                         lv = new Double(((Number)lv).doubleValue());
-                    } else if (convertStringExpressions && rc == String.class) {
-                        rv = Long.valueOf((String)rv);
                     } else {
                         return Boolean.FALSE;
                     }
@@ -431,8 +413,6 @@ public abstract class ComparisonExpression extends BinaryExpression implements B
                         rv = new Float(((Number)rv).floatValue());
                     } else if (rc == Double.class) {
                         lv = new Double(((Number)lv).doubleValue());
-                    } else if (convertStringExpressions && rc == String.class) {
-                        rv = Float.valueOf((String)rv);
                     } else {
                         return Boolean.FALSE;
                     }
@@ -443,31 +423,9 @@ public abstract class ComparisonExpression extends BinaryExpression implements B
                         rv = new Double(((Number)rv).doubleValue());
                     } else if (rc == Float.class) {
                         rv = new Double(((Number)rv).doubleValue());
-                    } else if (convertStringExpressions && rc == String.class) {
-                        rv = Double.valueOf((String)rv);
-                    } else {
-                        return Boolean.FALSE;
-                    }
-                } else if (convertStringExpressions && lc == String.class) {
-
-                    if (rc == Boolean.class) {
-                        lv = Boolean.valueOf((String)lv);
-                    } else if (rc == Byte.class) {
-                        lv = Byte.valueOf((String)lv);
-                    } else if (rc == Short.class) {
-                        lv = Short.valueOf((String)lv);
-                    } else if (rc == Integer.class) {
-                        lv = Integer.valueOf((String)lv);
-                    } else if (rc == Long.class) {
-                        lv = Long.valueOf((String)lv);
-                    } else if (rc == Float.class) {
-                        lv = Float.valueOf((String)lv);
-                    } else if (rc == Double.class) {
-                        lv = Double.valueOf((String)lv);
                     } else {
                         return Boolean.FALSE;
                     }
-
                 } else {
                     return Boolean.FALSE;
                 }


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


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

Posted by ro...@apache.org.
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


[3/3] qpid-jms git commit: update checks to be more reliable

Posted by ro...@apache.org.
update checks to be more reliable


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

Branch: refs/heads/master
Commit: fa4dd26ec6920d293bf7fb3ba007758bcd9fa151
Parents: 8633f4f
Author: Robert Gemmell <ro...@apache.org>
Authored: Tue Mar 3 11:50:43 2015 +0000
Committer: Robert Gemmell <ro...@apache.org>
Committed: Tue Mar 3 11:50:43 2015 +0000

----------------------------------------------------------------------
 .../jms/integration/SessionIntegrationTest.java | 45 ++++++++++++--------
 1 file changed, 28 insertions(+), 17 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/fa4dd26e/qpid-jms-client/src/test/java/org/apache/qpid/jms/integration/SessionIntegrationTest.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/integration/SessionIntegrationTest.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/integration/SessionIntegrationTest.java
index c65b789..acbef10 100644
--- a/qpid-jms-client/src/test/java/org/apache/qpid/jms/integration/SessionIntegrationTest.java
+++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/integration/SessionIntegrationTest.java
@@ -52,6 +52,7 @@ import org.apache.qpid.jms.JmsConnection;
 import org.apache.qpid.jms.provider.amqp.AmqpConnectionProperties;
 import org.apache.qpid.jms.provider.amqp.message.AmqpDestinationHelper;
 import org.apache.qpid.jms.test.QpidJmsTestCase;
+import org.apache.qpid.jms.test.Wait;
 import org.apache.qpid.jms.test.testpeer.TestAmqpPeer;
 import org.apache.qpid.jms.test.testpeer.basictypes.TerminusDurability;
 import org.apache.qpid.jms.test.testpeer.describedtypes.Accepted;
@@ -1192,17 +1193,23 @@ public class SessionIntegrationTest extends QpidJmsTestCase {
             testPeer.remotelyEndLastOpenedSession(true);
 
             Queue queue = session.createQueue("myQueue");
-            MessageProducer producer = session.createProducer(queue);
+            final MessageProducer producer = session.createProducer(queue);
 
             testPeer.waitForAllHandlersToComplete(1000);
 
-            // Verify the producer is now marked closed
-            try {
-                producer.getDestination();
-                fail("Expected ISE to be thrown due to being closed");
-            } catch (IllegalStateException jmsise) {
-                // expected
-            }
+            // Verify the producer gets marked closed
+            testPeer.waitForAllHandlersToComplete(1000);
+            assertTrue("producer never closed.", Wait.waitFor(new Wait.Condition() {
+                @Override
+                public boolean isSatisified() throws Exception {
+                    try {
+                        producer.getDestination();
+                    } catch (IllegalStateException jmsise) {
+                        return true;
+                    }
+                    return false;
+                }
+            }, 2000, 10));
 
             // Try closing it explicitly, should effectively no-op in client.
             // The test peer will throw during close if it sends anything.
@@ -1224,17 +1231,21 @@ public class SessionIntegrationTest extends QpidJmsTestCase {
             testPeer.remotelyEndLastOpenedSession(true);
 
             Queue queue = session.createQueue("myQueue");
-            MessageConsumer consumer = session.createConsumer(queue);
+            final MessageConsumer consumer = session.createConsumer(queue);
 
+            // Verify the consumer gets marked closed
             testPeer.waitForAllHandlersToComplete(1000);
-
-            // Verify the consumer is now marked closed
-            try {
-                consumer.getMessageListener();
-                fail("Expected ISE to be thrown due to being closed");
-            } catch (IllegalStateException jmsise) {
-                // expected
-            }
+            assertTrue("consumer never closed.", Wait.waitFor(new Wait.Condition() {
+                @Override
+                public boolean isSatisified() throws Exception {
+                    try {
+                        consumer.getMessageListener();
+                    } catch (IllegalStateException jmsise) {
+                        return true;
+                    }
+                    return false;
+                }
+            }, 2000, 10));
 
             // Try closing it explicitly, should effectively no-op in client.
             // The test peer will throw during close if it sends anything.


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