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