You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by rg...@apache.org on 2016/06/13 13:43:41 UTC

svn commit: r1748229 - in /qpid/java/trunk/broker-plugins/management-http/src: main/grammar/ main/java/org/apache/qpid/server/management/plugin/servlet/query/ test/java/org/apache/qpid/server/management/plugin/servlet/query/

Author: rgodfrey
Date: Mon Jun 13 13:43:41 2016
New Revision: 1748229

URL: http://svn.apache.org/viewvc?rev=1748229&view=rev
Log:
QPID-7287 : Parsing should only be successful if the entire query string is parsed

Modified:
    qpid/java/trunk/broker-plugins/management-http/src/main/grammar/ConfiguredObjectFilterParser.jj
    qpid/java/trunk/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/query/ConfiguredObjectFilterParser.java
    qpid/java/trunk/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/query/ConfiguredObjectQueryTest.java

Modified: qpid/java/trunk/broker-plugins/management-http/src/main/grammar/ConfiguredObjectFilterParser.jj
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/management-http/src/main/grammar/ConfiguredObjectFilterParser.jj?rev=1748229&r1=1748228&r2=1748229&view=diff
==============================================================================
--- qpid/java/trunk/broker-plugins/management-http/src/main/grammar/ConfiguredObjectFilterParser.jj (original)
+++ qpid/java/trunk/broker-plugins/management-http/src/main/grammar/ConfiguredObjectFilterParser.jj Mon Jun 13 13:43:41 2016
@@ -215,7 +215,7 @@ BooleanExpression filter() :
 {
     (
         left = orExpression()
-    )
+    ) <EOF>
     {
         return asBooleanExpression(left);
     }
@@ -702,7 +702,7 @@ List<Map<String, Expression>> selectClau
 }
 {
     ( element = selectClauseElement() { returnVal.add( element ); }
-    ) ( "," element = selectClauseElement() { returnVal.add( element ); } )*
+    ) ( "," element = selectClauseElement() { returnVal.add( element ); } )*  <EOF>
     {
         return returnVal;
     }
@@ -733,7 +733,7 @@ List<OrderByExpression> orderByClause()
 }
 {
     ( element = orderByClauseElement() { returnVal.add( element ); }
-    ) ( "," element = orderByClauseElement() { returnVal.add( element ); } )*
+    ) ( "," element = orderByClauseElement() { returnVal.add( element ); } )*  <EOF>
     {
         return returnVal;
     }

Modified: qpid/java/trunk/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/query/ConfiguredObjectFilterParser.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/query/ConfiguredObjectFilterParser.java?rev=1748229&r1=1748228&r2=1748229&view=diff
==============================================================================
--- qpid/java/trunk/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/query/ConfiguredObjectFilterParser.java (original)
+++ qpid/java/trunk/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/query/ConfiguredObjectFilterParser.java Mon Jun 13 13:43:41 2016
@@ -100,6 +100,7 @@ public class ConfiguredObjectFilterParse
   final public BooleanExpression filter() throws ParseException {
     Expression left=null;
     left = orExpression();
+    jj_consume_token(0);
         {if (true) return asBooleanExpression(left);}
     throw new Error("Missing return statement in function");
   }
@@ -683,6 +684,7 @@ public class ConfiguredObjectFilterParse
       element = selectClauseElement();
                                               returnVal.add( element );
     }
+    jj_consume_token(0);
         {if (true) return returnVal;}
     throw new Error("Missing return statement in function");
   }
@@ -725,6 +727,7 @@ public class ConfiguredObjectFilterParse
       element = orderByClauseElement();
                                                returnVal.add( element );
     }
+    jj_consume_token(0);
         {if (true) return returnVal;}
     throw new Error("Missing return statement in function");
   }

Modified: qpid/java/trunk/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/query/ConfiguredObjectQueryTest.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/query/ConfiguredObjectQueryTest.java?rev=1748229&r1=1748228&r2=1748229&view=diff
==============================================================================
--- qpid/java/trunk/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/query/ConfiguredObjectQueryTest.java (original)
+++ qpid/java/trunk/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/query/ConfiguredObjectQueryTest.java Mon Jun 13 13:43:41 2016
@@ -39,6 +39,7 @@ import javax.xml.bind.DatatypeConverter;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
 
+import org.apache.qpid.filter.OrderByExpression;
 import org.apache.qpid.filter.SelectorParsingException;
 import org.apache.qpid.server.model.ConfiguredObject;
 import org.apache.qpid.test.utils.QpidTestCase;
@@ -85,6 +86,41 @@ public class ConfiguredObjectQueryTest e
         assertEquals("Unexpected row", Lists.newArrayList(objectUuid, objectName), row);
     }
 
+    public void testArithmeticStatementInOrderBy() throws Exception
+    {
+        final List<OrderByExpression> orderByExpressions;
+        String orderByClause = "a + b";
+        ConfiguredObjectFilterParser parser = new ConfiguredObjectFilterParser();
+        parser.setConfiguredObjectExpressionFactory(new ConfiguredObjectExpressionFactory());
+        try
+        {
+            orderByExpressions = parser.parseOrderBy(orderByClause);
+            assertEquals(1, orderByExpressions.size());
+        }
+        catch (ParseException | TokenMgrError e)
+        {
+            throw new SelectorParsingException("Unable to parse orderBy clause", e);
+        }
+    }
+
+
+    public void testInvalidStatementInOrderBy() throws Exception
+    {
+        final List<OrderByExpression> orderByExpressions;
+        String orderByClause = "a + b foo";
+        ConfiguredObjectFilterParser parser = new ConfiguredObjectFilterParser();
+        parser.setConfiguredObjectExpressionFactory(new ConfiguredObjectExpressionFactory());
+        try
+        {
+            orderByExpressions = parser.parseOrderBy(orderByClause);
+            fail("Invalid expression was parsed without exception");
+        }
+        catch (ParseException | TokenMgrError e)
+        {
+            // pass
+        }
+    }
+
     public void testNoClauses_TwoResult() throws Exception
     {
         final UUID object1Uuid = UUID.randomUUID();
@@ -669,4 +705,4 @@ public class ConfiguredObjectQueryTest e
         }
         return object;
     }
-}
\ No newline at end of file
+}



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