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/01/04 20:55:44 UTC
svn commit: r1722953 [1/3] - in /qpid/java/trunk:
broker-core/src/main/java/org/apache/qpid/server/filter/
broker-plugins/management-http/
broker-plugins/management-http/src/main/grammar/
broker-plugins/management-http/src/main/java/org/apache/qpid/ser...
Author: rgodfrey
Date: Mon Jan 4 19:55:44 2016
New Revision: 1722953
URL: http://svn.apache.org/viewvc?rev=1722953&view=rev
Log:
QPID-6969 : Add SQL Like filtering mechanism to HTTP API
Added:
qpid/java/trunk/broker-plugins/management-http/src/main/grammar/
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/
qpid/java/trunk/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/query/ConfiguredObjectExpression.java (with props)
qpid/java/trunk/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/query/ConfiguredObjectExpressionFactory.java (with props)
qpid/java/trunk/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/query/ConfiguredObjectFilterParser.java (with props)
qpid/java/trunk/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/query/ConfiguredObjectFilterParserConstants.java (with props)
qpid/java/trunk/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/query/ConfiguredObjectFilterParserTokenManager.java (with props)
qpid/java/trunk/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/query/NamedExpression.java (with props)
qpid/java/trunk/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/query/ParseException.java (with props)
qpid/java/trunk/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/query/SimpleCharStream.java (with props)
qpid/java/trunk/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/query/Token.java (with props)
qpid/java/trunk/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/query/TokenMgrError.java (with props)
qpid/java/trunk/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/BrokerQueryServlet.java (with props)
qpid/java/trunk/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/QueryServlet.java (with props)
qpid/java/trunk/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/VirtualHostQueryServlet.java (with props)
qpid/java/trunk/common/src/main/java/org/apache/qpid/filter/JMSMessagePropertyExpression.java
- copied, changed from r1722330, qpid/java/trunk/common/src/main/java/org/apache/qpid/filter/PropertyExpression.java
qpid/java/trunk/common/src/main/java/org/apache/qpid/filter/PropertyExpressionFactory.java (with props)
Modified:
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/filter/JMSSelectorFilter.java
qpid/java/trunk/broker-plugins/management-http/pom.xml
qpid/java/trunk/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagement.java
qpid/java/trunk/common/pom.xml
qpid/java/trunk/common/src/main/grammar/SelectorParser.jj
qpid/java/trunk/common/src/main/java/org/apache/qpid/filter/ArithmeticExpression.java
qpid/java/trunk/common/src/main/java/org/apache/qpid/filter/BinaryExpression.java
qpid/java/trunk/common/src/main/java/org/apache/qpid/filter/BooleanExpression.java
qpid/java/trunk/common/src/main/java/org/apache/qpid/filter/ComparisonExpression.java
qpid/java/trunk/common/src/main/java/org/apache/qpid/filter/ConstantExpression.java
qpid/java/trunk/common/src/main/java/org/apache/qpid/filter/Expression.java
qpid/java/trunk/common/src/main/java/org/apache/qpid/filter/LogicExpression.java
qpid/java/trunk/common/src/main/java/org/apache/qpid/filter/PropertyExpression.java
qpid/java/trunk/common/src/main/java/org/apache/qpid/filter/UnaryExpression.java
qpid/java/trunk/common/src/main/java/org/apache/qpid/filter/selector/SelectorParser.java
qpid/java/trunk/common/src/main/java/org/apache/qpid/filter/selector/SelectorParserTokenManager.java
Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/filter/JMSSelectorFilter.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/filter/JMSSelectorFilter.java?rev=1722953&r1=1722952&r2=1722953&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/filter/JMSSelectorFilter.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/filter/JMSSelectorFilter.java Mon Jan 4 19:55:44 2016
@@ -25,6 +25,8 @@ import org.slf4j.LoggerFactory;
import org.apache.qpid.common.AMQPFilterTypes;
import org.apache.qpid.filter.BooleanExpression;
+import org.apache.qpid.filter.FilterableMessage;
+import org.apache.qpid.filter.JMSMessagePropertyExpression;
import org.apache.qpid.filter.SelectorParsingException;
import org.apache.qpid.filter.selector.ParseException;
import org.apache.qpid.filter.selector.SelectorParser;
@@ -43,7 +45,9 @@ public class JMSSelectorFilter implement
public JMSSelectorFilter(String selector) throws ParseException, TokenMgrError, SelectorParsingException
{
_selector = selector;
- _matcher = new SelectorParser().parse(selector);
+ SelectorParser<FilterableMessage> selectorParser = new SelectorParser<>();
+ selectorParser.setPropertyExpressionFactory(JMSMessagePropertyExpression.FACTORY);
+ _matcher = selectorParser.parse(selector);
}
@Override
Modified: qpid/java/trunk/broker-plugins/management-http/pom.xml
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/management-http/pom.xml?rev=1722953&r1=1722952&r2=1722953&view=diff
==============================================================================
--- qpid/java/trunk/broker-plugins/management-http/pom.xml (original)
+++ qpid/java/trunk/broker-plugins/management-http/pom.xml Mon Jan 4 19:55:44 2016
@@ -146,4 +146,42 @@
</plugins>
</build>
+
+ <profiles>
+ <profile>
+ <id>generate-sources-http-management</id>
+ <activation>
+ <property>
+ <name>generate</name>
+ <value>true</value>
+ </property>
+ </activation>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>javacc-maven-plugin</artifactId>
+ <!--version specified in parent pluginManagement -->
+ <executions>
+ <execution>
+ <id>jms-selector-generated</id>
+ <phase>generate-sources</phase>
+ <goals>
+ <goal>javacc</goal>
+ </goals>
+ <configuration>
+ <outputDirectory>src/main/java</outputDirectory>
+ <sourceDirectory>src/main/grammar</sourceDirectory>
+ <includes>
+ <include>ConfiguredObjectFilterParser.jj</include>
+ </includes>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+ </profile>
+ </profiles>
+
</project>
Added: 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=1722953&view=auto
==============================================================================
--- qpid/java/trunk/broker-plugins/management-http/src/main/grammar/ConfiguredObjectFilterParser.jj (added)
+++ qpid/java/trunk/broker-plugins/management-http/src/main/grammar/ConfiguredObjectFilterParser.jj Mon Jan 4 19:55:44 2016
@@ -0,0 +1,723 @@
+/*
+ *
+ * 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.
+ *
+ */
+
+ //
+ // Original File from r450141 of the Apache ActiveMQ project <http://www.activemq.org/site/home.html>
+ //
+
+// ----------------------------------------------------------------------------
+// OPTIONS
+// ----------------------------------------------------------------------------
+options {
+ STATIC = false;
+ UNICODE_INPUT = true;
+
+ // some performance optimizations
+ ERROR_REPORTING = false;
+}
+
+// ----------------------------------------------------------------------------
+// PARSER
+// ----------------------------------------------------------------------------
+
+PARSER_BEGIN(ConfiguredObjectFilterParser)
+/*
+ *
+ * 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.server.management.plugin.servlet.query;
+
+import java.io.StringReader;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.Collections;
+
+import org.apache.qpid.filter.ArithmeticExpression;
+import org.apache.qpid.filter.BooleanExpression;
+import org.apache.qpid.filter.ComparisonExpression;
+import org.apache.qpid.filter.ConstantExpression;
+import org.apache.qpid.filter.Expression;
+import org.apache.qpid.filter.LogicExpression;
+import org.apache.qpid.filter.UnaryExpression;
+
+import org.apache.qpid.server.model.ConfiguredObject;
+
+/**
+ * JMS Selector Parser generated by JavaCC
+ *
+ * Do not edit this .java file directly - it is autogenerated from SelectorParser.jj
+ */
+public class ConfiguredObjectFilterParser
+{
+ private ConfiguredObjectExpressionFactory _factory;
+ private boolean _allowNonPropertyInExpressions;
+
+
+ public ConfiguredObjectFilterParser()
+ {
+ this(new StringReader(""));
+ }
+
+ public void setConfiguredObjectExpressionFactory(ConfiguredObjectExpressionFactory factory)
+ {
+ _factory = factory;
+ }
+
+ public void allowNonPropertyInExpressions(boolean allow)
+ {
+ _allowNonPropertyInExpressions = allow;
+ }
+
+ public BooleanExpression<ConfiguredObject> parseWhere(String sql) throws ParseException
+ {
+ this.ReInit(new StringReader(sql));
+
+ return filter();
+
+ }
+
+
+ public List<Map<String,Expression>> parseSelect(String sql) throws ParseException
+ {
+ this.ReInit(new StringReader(sql));
+
+ return selectClause();
+
+ }
+
+ private BooleanExpression<ConfiguredObject<?>> asBooleanExpression(Expression<ConfiguredObject<?>> value) throws ParseException
+ {
+ if (value instanceof BooleanExpression)
+ {
+ return (BooleanExpression<ConfiguredObject<?>>) value;
+ }
+ if (value instanceof ConfiguredObjectExpression)
+ {
+ return UnaryExpression.createBooleanCast( (Expression<ConfiguredObject<?>>) value );
+ }
+ throw new ParseException("Expression will not result in a boolean value: " + value);
+ }
+
+
+}
+
+PARSER_END(ConfiguredObjectFilterParser)
+
+// ----------------------------------------------------------------------------
+// Tokens
+// ----------------------------------------------------------------------------
+
+/* White Space */
+SPECIAL_TOKEN :
+{
+ " " | "\t" | "\n" | "\r" | "\f"
+}
+
+/* Comments */
+SKIP:
+{
+ <LINE_COMMENT: "--" (~["\n","\r"])* ("\n"|"\r"|"\r\n") >
+}
+
+SKIP:
+{
+ <BLOCK_COMMENT: "/*" (~["*"])* "*" ("*" | (~["*","/"] (~["*"])* "*"))* "/">
+}
+
+/* Reserved Words */
+TOKEN [IGNORE_CASE] :
+{
+ < NOT : "NOT">
+ | < AND : "AND">
+ | < OR : "OR">
+ | < BETWEEN : "BETWEEN">
+ | < LIKE : "LIKE">
+ | < ESCAPE : "ESCAPE">
+ | < IN : "IN">
+ | < IS : "IS">
+ | < TRUE : "TRUE" >
+ | < FALSE : "FALSE" >
+ | < NULL : "NULL" >
+ | < AS : "AS">
+
+}
+
+/* Literals */
+TOKEN [IGNORE_CASE] :
+{
+
+ < DECIMAL_LITERAL: ["1"-"9"] (["0"-"9"])* (["l","L"])? >
+ | < HEX_LITERAL: "0" ["x","X"] (["0"-"9","a"-"f","A"-"F"])+ >
+ | < OCTAL_LITERAL: "0" (["0"-"7"])* >
+ | < FLOATING_POINT_LITERAL:
+ (["0"-"9"])+ "." (["0"-"9"])* (<EXPONENT>)? // matches: 5.5 or 5. or 5.5E10 or 5.E10
+ | "." (["0"-"9"])+ (<EXPONENT>)? // matches: .5 or .5E10
+ | (["0"-"9"])+ <EXPONENT> // matches: 5E10
+ >
+ | < #EXPONENT: "E" (["+","-"])? (["0"-"9"])+ >
+ | < STRING_LITERAL: "'" ( ("''") | ~["'"] )* "'" >
+ | < FUNCTIONNAME : ["a"-"z", "_", "A"-"Z"] (["a"-"z","A"-"Z", "0"-"9","_"])* "(" >
+}
+
+TOKEN [IGNORE_CASE] :
+{
+ < ID : ["a"-"z", "_", "$"] (["a"-"z","0"-"9","_", "$"])* >
+ | < QUOTED_ID : "\"" ( ("\"\"") | ~["\""] )* "\"" >
+}
+
+// ----------------------------------------------------------------------------
+// Grammer
+// ----------------------------------------------------------------------------
+BooleanExpression filter() :
+{
+ Expression left=null;
+}
+{
+ (
+ left = orExpression()
+ )
+ {
+ return asBooleanExpression(left);
+ }
+
+}
+
+Expression orExpression() :
+{
+ Expression left;
+ Expression right;
+}
+{
+ (
+ left = andExpression()
+ (
+ <OR> right = andExpression()
+ {
+ left = LogicExpression.createOR(asBooleanExpression(left), asBooleanExpression(right));
+ }
+ )*
+ )
+ {
+ return left;
+ }
+
+}
+
+
+Expression andExpression() :
+{
+ Expression left;
+ Expression right;
+}
+{
+ (
+ left = equalityExpression()
+ (
+ <AND> right = equalityExpression()
+ {
+ left = LogicExpression.createAND(asBooleanExpression(left), asBooleanExpression(right));
+ }
+ )*
+ )
+ {
+ return left;
+ }
+}
+
+Expression equalityExpression() :
+{
+ Expression left;
+ Expression right;
+}
+{
+ (
+ left = comparisonExpression()
+ (
+
+ "=" right = comparisonExpression()
+ {
+ left = ComparisonExpression.createEqual(left, right);
+ }
+ |
+ "<>" right = comparisonExpression()
+ {
+ left = ComparisonExpression.createNotEqual(left, right);
+ }
+ |
+ LOOKAHEAD(2)
+ <IS> <NULL>
+ {
+ left = ComparisonExpression.createIsNull(left);
+ }
+ |
+ <IS> <NOT> <NULL>
+ {
+ left = ComparisonExpression.createIsNotNull(left);
+ }
+ )*
+ )
+ {
+ return left;
+ }
+}
+
+Expression comparisonExpression() :
+{
+ Expression left;
+ Expression right;
+ Expression low;
+ Expression high;
+ String t, u;
+ boolean not;
+ ArrayList list;
+}
+{
+ (
+ left = addExpression()
+ (
+
+ ">" right = addExpression()
+ {
+ left = ComparisonExpression.createGreaterThan(left, right);
+ }
+ |
+ ">=" right = addExpression()
+ {
+ left = ComparisonExpression.createGreaterThanEqual(left, right);
+ }
+ |
+ "<" right = addExpression()
+ {
+ left = ComparisonExpression.createLessThan(left, right);
+ }
+ |
+ "<=" right = addExpression()
+ {
+ left = ComparisonExpression.createLessThanEqual(left, right);
+ }
+ |
+ {
+ u=null;
+ }
+ <LIKE> t = stringLiteral()
+ [ <ESCAPE> u = stringLiteral() ]
+ {
+ left = ComparisonExpression.createLike(left, t, u);
+ }
+ |
+ LOOKAHEAD(2)
+ {
+ u=null;
+ }
+ <NOT> <LIKE> t = stringLiteral() [ <ESCAPE> u = stringLiteral() ]
+ {
+ left = ComparisonExpression.createNotLike(left, t, u);
+ }
+ |
+ <BETWEEN> low = addExpression() <AND> high = addExpression()
+ {
+ left = ComparisonExpression.createBetween(left, low, high);
+ }
+ |
+ LOOKAHEAD(2)
+ <NOT> <BETWEEN> low = addExpression() <AND> high = addExpression()
+ {
+ left = ComparisonExpression.createNotBetween(left, low, high);
+ }
+ |
+ <IN>
+ "("
+ right = primaryExpr()
+ {
+ list = new ArrayList();
+ list.add( right );
+ }
+ (
+ ","
+ right = primaryExpr()
+ {
+ list.add( right );
+ }
+
+ )*
+ ")"
+ {
+ left = ComparisonExpression.createInFilter(left, list, _allowNonPropertyInExpressions );
+ }
+ |
+ LOOKAHEAD(2)
+ <NOT> <IN>
+ "("
+ right = primaryExpr()
+ {
+ list = new ArrayList();
+ list.add( right );
+ }
+ (
+ ","
+ right = primaryExpr()
+ {
+ list.add( right );
+ }
+
+ )*
+ ")"
+ {
+ left = ComparisonExpression.createNotInFilter(left, list, _allowNonPropertyInExpressions);
+ }
+
+ )*
+ )
+ {
+ return left;
+ }
+}
+
+Expression addExpression() :
+{
+ Expression left;
+ Expression right;
+}
+{
+ left = multExpr()
+ (
+ LOOKAHEAD( ("+"|"-") multExpr())
+ (
+ "+" right = multExpr()
+ {
+ left = ArithmeticExpression.createPlus(left, right);
+ }
+ |
+ "-" right = multExpr()
+ {
+ left = ArithmeticExpression.createMinus(left, right);
+ }
+ )
+
+ )*
+ {
+ return left;
+ }
+}
+
+Expression multExpr() :
+{
+ Expression left;
+ Expression right;
+}
+{
+ left = unaryExpr()
+ (
+ "*" right = unaryExpr()
+ {
+ left = ArithmeticExpression.createMultiply(left, right);
+ }
+ |
+ "/" right = unaryExpr()
+ {
+ left = ArithmeticExpression.createDivide(left, right);
+ }
+ |
+ "%" right = unaryExpr()
+ {
+ left = ArithmeticExpression.createMod(left, right);
+ }
+
+ )*
+ {
+ return left;
+ }
+}
+
+
+Expression unaryExpr() :
+{
+ String s=null;
+ Expression left=null;
+}
+{
+ (
+ LOOKAHEAD( "+" unaryExpr() )
+ "+" left=unaryExpr()
+ |
+ "-" left=unaryExpr()
+ {
+ left = UnaryExpression.createNegate(left);
+ }
+ |
+ <NOT> left=unaryExpr()
+ {
+ left = UnaryExpression.createNOT( asBooleanExpression(left) );
+ }
+ |
+ left = primaryExpr()
+ )
+ {
+ return left;
+ }
+
+}
+
+Expression primaryExpr() :
+{
+ Expression left=null;
+}
+{
+ (
+ left = functionExpression()
+ |
+ left = literal()
+ |
+ left = variable()
+ |
+ "(" left = orExpression() ")"
+ )
+
+ {
+ return left;
+ }
+}
+
+
+
+ConstantExpression literal() :
+{
+ Token t;
+ String s;
+ ConstantExpression left=null;
+}
+{
+ (
+ (
+ s = stringLiteral()
+ {
+ left = new ConstantExpression(s);
+ }
+ )
+ |
+ (
+ t = <DECIMAL_LITERAL>
+ {
+ left = ConstantExpression.createFromDecimal(t.image);
+ }
+ )
+ |
+ (
+ t = <HEX_LITERAL>
+ {
+ left = ConstantExpression.createFromHex(t.image);
+ }
+ )
+ |
+ (
+ t = <OCTAL_LITERAL>
+ {
+ left = ConstantExpression.createFromOctal(t.image);
+ }
+ )
+ |
+ (
+ t = <FLOATING_POINT_LITERAL>
+ {
+ left = ConstantExpression.createFloat(t.image);
+ }
+ )
+ |
+ (
+ <TRUE>
+ {
+ left = ConstantExpression.TRUE;
+ }
+ )
+ |
+ (
+ <FALSE>
+ {
+ left = ConstantExpression.FALSE;
+ }
+ )
+ |
+ (
+ <NULL>
+ {
+ left = ConstantExpression.NULL;
+ }
+ )
+ )
+ {
+ return left;
+ }
+}
+
+String stringLiteral() :
+{
+ Token t;
+ StringBuffer rc = new StringBuffer();
+ boolean first=true;
+}
+{
+ t = <STRING_LITERAL>
+ {
+ // Decode the sting value.
+ String image = t.image;
+ for( int i=1; i < image.length()-1; i++ ) {
+ char c = image.charAt(i);
+ if( c == (char) 0x27 )//single quote
+ {
+ i++;
+ }
+ rc.append(c);
+ }
+ return rc.toString();
+ }
+}
+
+ConfiguredObjectExpression variable() :
+{
+ String s;
+ Token t;
+ ConfiguredObjectExpression right;
+}
+{
+ LOOKAHEAD(2)
+ (
+ s = identifier() "." right = variable()
+ )
+ {
+ return _factory.createConfiguredObjectExpression( s, right );
+ }
+ |
+ LOOKAHEAD(2)
+ (
+ s = identifier() "[" t = <DECIMAL_LITERAL> "]"
+ )
+ {
+ return _factory.createConfiguredObjectExpression( s, Integer.valueOf( t.image ) );
+ }
+ |
+ (
+ s = identifier()
+ )
+ {
+ return _factory.createConfiguredObjectExpression( s );
+ }
+
+}
+
+Expression functionExpression() :
+{
+ String s;
+ Token t;
+ List<Expression> args = new ArrayList<Expression>();
+ Expression expr;
+}
+{
+ (
+ t = <FUNCTIONNAME> ( expr = primaryExpr() { args.add(expr); } ( "," expr = primaryExpr() { args.add(expr); } )* )? ")"
+ )
+ {
+ return _factory.createFunctionExpression( t.image.substring(0, t.image.length() - 1), args );
+ }
+}
+
+String identifier() :
+{
+ Token t;
+ StringBuffer rc = new StringBuffer();
+ String s;
+}
+{
+ (
+ t = <ID>
+ {
+ s = t.image;
+ }
+ |
+ t = <QUOTED_ID>
+ {
+ // Decode the sting value.
+ String image = t.image;
+ for( int i=1; i < image.length()-1; i++ ) {
+ char c = image.charAt(i);
+ if( c == '"' )
+ {
+ i++;
+ }
+ rc.append(c);
+ }
+ s = rc.toString();
+ }
+
+
+ )
+ {
+ return s;
+ }
+}
+
+List<Map<String, Expression>> selectClause() :
+{
+ List<Map<String, Expression>> returnVal = new ArrayList<Map<String, Expression>>();
+ Map<String, Expression> element;
+}
+{
+ ( element = selectClauseElement() { returnVal.add( element ); }
+ ) ( "," element = selectClauseElement() { returnVal.add( element ); } )*
+ {
+ return returnVal;
+ }
+}
+
+Map<String, Expression> selectClauseElement() :
+{
+ String name = null;
+ Expression expr;
+
+}
+{
+ ( expr = primaryExpr() ( <AS> name = identifier() )?
+ {
+ if(name == null)
+ {
+ name = ( expr instanceof NamedExpression ) ? ((NamedExpression) expr).getName() : "";
+ }
+ return Collections.singletonMap( name, expr );
+ }
+ )
+}
Modified: qpid/java/trunk/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagement.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagement.java?rev=1722953&r1=1722952&r2=1722953&view=diff
==============================================================================
--- qpid/java/trunk/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagement.java (original)
+++ qpid/java/trunk/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagement.java Mon Jan 4 19:55:44 2016
@@ -73,6 +73,7 @@ import org.apache.qpid.server.management
import org.apache.qpid.server.management.plugin.servlet.FileServlet;
import org.apache.qpid.server.management.plugin.servlet.RootServlet;
import org.apache.qpid.server.management.plugin.servlet.rest.ApiDocsServlet;
+import org.apache.qpid.server.management.plugin.servlet.rest.BrokerQueryServlet;
import org.apache.qpid.server.management.plugin.servlet.rest.JsonValueServlet;
import org.apache.qpid.server.management.plugin.servlet.rest.LoggedOnUserPreferencesServlet;
import org.apache.qpid.server.management.plugin.servlet.rest.LogoutServlet;
@@ -83,6 +84,7 @@ import org.apache.qpid.server.management
import org.apache.qpid.server.management.plugin.servlet.rest.StructureServlet;
import org.apache.qpid.server.management.plugin.servlet.rest.TimeZoneServlet;
import org.apache.qpid.server.management.plugin.servlet.rest.UserPreferencesServlet;
+import org.apache.qpid.server.management.plugin.servlet.rest.VirtualHostQueryServlet;
import org.apache.qpid.server.model.*;
import org.apache.qpid.server.model.adapter.AbstractPluginAdapter;
import org.apache.qpid.server.model.port.HttpPort;
@@ -262,6 +264,15 @@ public class HttpManagement extends Abst
addRestServlet(root, Broker.class);
+ ServletHolder queryServlet = new ServletHolder(new BrokerQueryServlet());
+ root.addServlet(queryServlet, "/api/latest/querybroker/*");
+ root.addServlet(queryServlet, "/api/v" + BrokerModel.MODEL_MAJOR_VERSION + "/querybroker/*");
+
+ ServletHolder vhQueryServlet = new ServletHolder(new VirtualHostQueryServlet());
+ root.addServlet(vhQueryServlet, "/api/latest/queryvhost/*");
+ root.addServlet(vhQueryServlet, "/api/v" + BrokerModel.MODEL_MAJOR_VERSION + "/queryvhost/*");
+
+
ServletHolder apiDocsServlet = new ServletHolder(new ApiDocsServlet(getModel()));
final ServletHolder rewriteSerlvet = new ServletHolder(new RewriteServlet("^(.*)$", "$1/"));
for(String path : new String[]{"/apidocs", "/apidocs/latest", "/apidocs/"+getLatestSupportedVersion()})
Added: qpid/java/trunk/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/query/ConfiguredObjectExpression.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/ConfiguredObjectExpression.java?rev=1722953&view=auto
==============================================================================
--- qpid/java/trunk/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/query/ConfiguredObjectExpression.java (added)
+++ qpid/java/trunk/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/query/ConfiguredObjectExpression.java Mon Jan 4 19:55:44 2016
@@ -0,0 +1,28 @@
+/*
+ *
+ * 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.server.management.plugin.servlet.query;
+
+import org.apache.qpid.filter.Expression;
+import org.apache.qpid.server.model.ConfiguredObject;
+
+public interface ConfiguredObjectExpression extends Expression<ConfiguredObject<?>>
+{
+}
Propchange: qpid/java/trunk/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/query/ConfiguredObjectExpression.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: qpid/java/trunk/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/query/ConfiguredObjectExpressionFactory.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/ConfiguredObjectExpressionFactory.java?rev=1722953&view=auto
==============================================================================
--- qpid/java/trunk/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/query/ConfiguredObjectExpressionFactory.java (added)
+++ qpid/java/trunk/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/query/ConfiguredObjectExpressionFactory.java Mon Jan 4 19:55:44 2016
@@ -0,0 +1,203 @@
+/*
+ *
+ * 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.server.management.plugin.servlet.query;
+
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.EnumSet;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import org.apache.qpid.filter.Expression;
+import org.apache.qpid.server.model.ConfiguredObject;
+
+public class ConfiguredObjectExpressionFactory
+{
+
+ private static final String PARENT_ATTR = "$parent";
+ private static Set<String> SPECIAL_ATTRIBUTES = new HashSet<>(Arrays.asList(PARENT_ATTR));
+
+
+ enum FilterFunction
+ {
+ CONCAT {
+ @Override
+ ConfiguredObjectExpression asExpression(final List<Expression> args)
+ {
+ return new ConfiguredObjectExpression()
+ {
+ @Override
+ public Object evaluate(final ConfiguredObject<?> object)
+ {
+ StringBuilder buf = new StringBuilder();
+ for(Expression expr : args)
+ {
+ buf.append(expr.evaluate(object));
+ }
+ return buf.toString();
+ }
+ };
+ }
+ };
+
+ abstract ConfiguredObjectExpression asExpression( List<Expression> args );
+ }
+
+
+ public ConfiguredObjectExpression createConfiguredObjectExpression(final String propertyName)
+ {
+ return new ConfiguredObjectPropertyExpression(propertyName);
+ }
+
+ public ConfiguredObjectExpression createConfiguredObjectExpression(final String propertyName,
+ final ConfiguredObjectExpression expression)
+ {
+ return new ChainedConfiguredObjectExpression(propertyName, expression);
+ }
+
+
+ public ConfiguredObjectExpression createConfiguredObjectExpression(final String propertyName,
+ final int index)
+ {
+ return new IndexedConfiguredObjectExpression(propertyName, index);
+ }
+
+ public ConfiguredObjectExpression createFunctionExpression(String functionName, final List<Expression> args)
+ throws ParseException
+ {
+ try
+ {
+ FilterFunction function = FilterFunction.valueOf(functionName.toUpperCase());
+ return function.asExpression(args);
+ }
+ catch(IllegalArgumentException e)
+ {
+ throw new ParseException("Unknown function name " + functionName);
+ }
+ }
+
+ private static class ConfiguredObjectPropertyExpression implements ConfiguredObjectExpression, NamedExpression<ConfiguredObject<?>>
+ {
+
+ private final String _propertyName;
+
+ public ConfiguredObjectPropertyExpression(final String propertyName)
+ {
+ _propertyName = propertyName;
+ }
+
+ @Override
+ public Object evaluate(final ConfiguredObject<?> object)
+ {
+ return object == null ? null : getValue(object);
+ }
+
+ private Object getValue(final ConfiguredObject<?> object)
+ {
+
+ if(SPECIAL_ATTRIBUTES.contains(_propertyName))
+ {
+ if(PARENT_ATTR.equals(_propertyName))
+ {
+ return object.getParent(object.getModel().getParentTypes(object.getCategoryClass()).iterator().next());
+ }
+ else
+ {
+ return null;
+ }
+ }
+ else
+ {
+ return object.getAttributeNames().contains(_propertyName)
+ ? object.getAttribute(_propertyName)
+ : object.getStatistics().get(_propertyName);
+ }
+ }
+
+ @Override
+ public String getName()
+ {
+ return _propertyName;
+ }
+ }
+
+ private static class ChainedConfiguredObjectExpression implements ConfiguredObjectExpression
+ {
+ private final ConfiguredObjectPropertyExpression _first;
+ private final ConfiguredObjectExpression _chainedExpression;
+
+ public ChainedConfiguredObjectExpression(final String propertyName, final ConfiguredObjectExpression expression)
+ {
+ _first = new ConfiguredObjectPropertyExpression(propertyName);
+ _chainedExpression = expression;
+ }
+
+ @Override
+ public Object evaluate(final ConfiguredObject<?> object)
+ {
+ Object propertyValue = _first.evaluate(object);
+ if(propertyValue instanceof ConfiguredObject)
+ {
+ return _chainedExpression.evaluate((ConfiguredObject)propertyValue);
+ }
+ else if(propertyValue instanceof Map && _chainedExpression instanceof ConfiguredObjectPropertyExpression)
+ {
+ return ((Map) propertyValue).get(((ConfiguredObjectPropertyExpression)_chainedExpression)._propertyName);
+ }
+ return null;
+ }
+ }
+
+ private static class IndexedConfiguredObjectExpression implements ConfiguredObjectExpression
+ {
+ private final String _propertyName;
+ private final int _index;
+
+ public IndexedConfiguredObjectExpression(final String propertyName, final int index)
+ {
+ _propertyName = propertyName;
+ _index = index;
+ }
+
+ @Override
+ public Object evaluate(final ConfiguredObject<?> object)
+ {
+ Object propertyValue = object == null ? null : object.getAttribute(_propertyName);
+ if(propertyValue instanceof Collection)
+ {
+ Iterator iter = ((Collection)propertyValue).iterator();
+ int pos = 0;
+ while(iter.hasNext() && pos < _index)
+ {
+ iter.next();
+ }
+ if(pos == _index && iter.hasNext())
+ {
+ return iter.next();
+ }
+ }
+ return null;
+ }
+ }
+}
Propchange: qpid/java/trunk/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/query/ConfiguredObjectExpressionFactory.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: 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=1722953&view=auto
==============================================================================
--- qpid/java/trunk/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/query/ConfiguredObjectFilterParser.java (added)
+++ qpid/java/trunk/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/query/ConfiguredObjectFilterParser.java Mon Jan 4 19:55:44 2016
@@ -0,0 +1,1447 @@
+/* Generated By:JavaCC: Do not edit this line. ConfiguredObjectFilterParser.java */
+/*
+ *
+ * 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.server.management.plugin.servlet.query;
+
+import java.io.StringReader;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.Collections;
+
+import org.apache.qpid.filter.ArithmeticExpression;
+import org.apache.qpid.filter.BooleanExpression;
+import org.apache.qpid.filter.ComparisonExpression;
+import org.apache.qpid.filter.ConstantExpression;
+import org.apache.qpid.filter.Expression;
+import org.apache.qpid.filter.LogicExpression;
+import org.apache.qpid.filter.UnaryExpression;
+
+import org.apache.qpid.server.model.ConfiguredObject;
+
+/**
+ * JMS Selector Parser generated by JavaCC
+ *
+ * Do not edit this .java file directly - it is autogenerated from SelectorParser.jj
+ */
+public class ConfiguredObjectFilterParser implements ConfiguredObjectFilterParserConstants {
+ private ConfiguredObjectExpressionFactory _factory;
+ private boolean _allowNonPropertyInExpressions;
+
+
+ public ConfiguredObjectFilterParser()
+ {
+ this(new StringReader(""));
+ }
+
+ public void setConfiguredObjectExpressionFactory(ConfiguredObjectExpressionFactory factory)
+ {
+ _factory = factory;
+ }
+
+ public void allowNonPropertyInExpressions(boolean allow)
+ {
+ _allowNonPropertyInExpressions = allow;
+ }
+
+ public BooleanExpression<ConfiguredObject> parseWhere(String sql) throws ParseException
+ {
+ this.ReInit(new StringReader(sql));
+
+ return filter();
+
+ }
+
+
+ public List<Map<String,Expression>> parseSelect(String sql) throws ParseException
+ {
+ this.ReInit(new StringReader(sql));
+
+ return selectClause();
+
+ }
+
+ private BooleanExpression<ConfiguredObject<?>> asBooleanExpression(Expression<ConfiguredObject<?>> value) throws ParseException
+ {
+ if (value instanceof BooleanExpression)
+ {
+ return (BooleanExpression<ConfiguredObject<?>>) value;
+ }
+ if (value instanceof ConfiguredObjectExpression)
+ {
+ return UnaryExpression.createBooleanCast( (Expression<ConfiguredObject<?>>) value );
+ }
+ throw new ParseException("Expression will not result in a boolean value: " + value);
+ }
+
+// ----------------------------------------------------------------------------
+// Grammer
+// ----------------------------------------------------------------------------
+ final public BooleanExpression filter() throws ParseException {
+ Expression left=null;
+ left = orExpression();
+ {if (true) return asBooleanExpression(left);}
+ throw new Error("Missing return statement in function");
+ }
+
+ final public Expression orExpression() throws ParseException {
+ Expression left;
+ Expression right;
+ left = andExpression();
+ label_1:
+ while (true) {
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case OR:
+ ;
+ break;
+ default:
+ break label_1;
+ }
+ jj_consume_token(OR);
+ right = andExpression();
+ left = LogicExpression.createOR(asBooleanExpression(left), asBooleanExpression(right));
+ }
+ {if (true) return left;}
+ throw new Error("Missing return statement in function");
+ }
+
+ final public Expression andExpression() throws ParseException {
+ Expression left;
+ Expression right;
+ left = equalityExpression();
+ label_2:
+ while (true) {
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case AND:
+ ;
+ break;
+ default:
+ break label_2;
+ }
+ jj_consume_token(AND);
+ right = equalityExpression();
+ left = LogicExpression.createAND(asBooleanExpression(left), asBooleanExpression(right));
+ }
+ {if (true) return left;}
+ throw new Error("Missing return statement in function");
+ }
+
+ final public Expression equalityExpression() throws ParseException {
+ Expression left;
+ Expression right;
+ left = comparisonExpression();
+ label_3:
+ while (true) {
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case IS:
+ case 29:
+ case 30:
+ ;
+ break;
+ default:
+ break label_3;
+ }
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case 29:
+ jj_consume_token(29);
+ right = comparisonExpression();
+ left = ComparisonExpression.createEqual(left, right);
+ break;
+ case 30:
+ jj_consume_token(30);
+ right = comparisonExpression();
+ left = ComparisonExpression.createNotEqual(left, right);
+ break;
+ default:
+ if (jj_2_1(2)) {
+ jj_consume_token(IS);
+ jj_consume_token(NULL);
+ left = ComparisonExpression.createIsNull(left);
+ } else {
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case IS:
+ jj_consume_token(IS);
+ jj_consume_token(NOT);
+ jj_consume_token(NULL);
+ left = ComparisonExpression.createIsNotNull(left);
+ break;
+ default:
+ jj_consume_token(-1);
+ throw new ParseException();
+ }
+ }
+ }
+ }
+ {if (true) return left;}
+ throw new Error("Missing return statement in function");
+ }
+
+ final public Expression comparisonExpression() throws ParseException {
+ Expression left;
+ Expression right;
+ Expression low;
+ Expression high;
+ String t, u;
+ boolean not;
+ ArrayList list;
+ left = addExpression();
+ label_4:
+ while (true) {
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case NOT:
+ case BETWEEN:
+ case LIKE:
+ case IN:
+ case 31:
+ case 32:
+ case 33:
+ case 34:
+ ;
+ break;
+ default:
+ break label_4;
+ }
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case 31:
+ jj_consume_token(31);
+ right = addExpression();
+ left = ComparisonExpression.createGreaterThan(left, right);
+ break;
+ case 32:
+ jj_consume_token(32);
+ right = addExpression();
+ left = ComparisonExpression.createGreaterThanEqual(left, right);
+ break;
+ case 33:
+ jj_consume_token(33);
+ right = addExpression();
+ left = ComparisonExpression.createLessThan(left, right);
+ break;
+ case 34:
+ jj_consume_token(34);
+ right = addExpression();
+ left = ComparisonExpression.createLessThanEqual(left, right);
+ break;
+ case LIKE:
+ u=null;
+ jj_consume_token(LIKE);
+ t = stringLiteral();
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case ESCAPE:
+ jj_consume_token(ESCAPE);
+ u = stringLiteral();
+ break;
+ default:
+ ;
+ }
+ left = ComparisonExpression.createLike(left, t, u);
+ break;
+ default:
+ if (jj_2_2(2)) {
+ u=null;
+ jj_consume_token(NOT);
+ jj_consume_token(LIKE);
+ t = stringLiteral();
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case ESCAPE:
+ jj_consume_token(ESCAPE);
+ u = stringLiteral();
+ break;
+ default:
+ ;
+ }
+ left = ComparisonExpression.createNotLike(left, t, u);
+ } else {
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case BETWEEN:
+ jj_consume_token(BETWEEN);
+ low = addExpression();
+ jj_consume_token(AND);
+ high = addExpression();
+ left = ComparisonExpression.createBetween(left, low, high);
+ break;
+ default:
+ if (jj_2_3(2)) {
+ jj_consume_token(NOT);
+ jj_consume_token(BETWEEN);
+ low = addExpression();
+ jj_consume_token(AND);
+ high = addExpression();
+ left = ComparisonExpression.createNotBetween(left, low, high);
+ } else {
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case IN:
+ jj_consume_token(IN);
+ jj_consume_token(35);
+ right = primaryExpr();
+ list = new ArrayList();
+ list.add( right );
+ label_5:
+ while (true) {
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case 36:
+ ;
+ break;
+ default:
+ break label_5;
+ }
+ jj_consume_token(36);
+ right = primaryExpr();
+ list.add( right );
+ }
+ jj_consume_token(37);
+ left = ComparisonExpression.createInFilter(left, list, _allowNonPropertyInExpressions );
+ break;
+ default:
+ if (jj_2_4(2)) {
+ jj_consume_token(NOT);
+ jj_consume_token(IN);
+ jj_consume_token(35);
+ right = primaryExpr();
+ list = new ArrayList();
+ list.add( right );
+ label_6:
+ while (true) {
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case 36:
+ ;
+ break;
+ default:
+ break label_6;
+ }
+ jj_consume_token(36);
+ right = primaryExpr();
+ list.add( right );
+ }
+ jj_consume_token(37);
+ left = ComparisonExpression.createNotInFilter(left, list, _allowNonPropertyInExpressions);
+ } else {
+ jj_consume_token(-1);
+ throw new ParseException();
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ {if (true) return left;}
+ throw new Error("Missing return statement in function");
+ }
+
+ final public Expression addExpression() throws ParseException {
+ Expression left;
+ Expression right;
+ left = multExpr();
+ label_7:
+ while (true) {
+ if (jj_2_5(2147483647)) {
+ ;
+ } else {
+ break label_7;
+ }
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case 38:
+ jj_consume_token(38);
+ right = multExpr();
+ left = ArithmeticExpression.createPlus(left, right);
+ break;
+ case 39:
+ jj_consume_token(39);
+ right = multExpr();
+ left = ArithmeticExpression.createMinus(left, right);
+ break;
+ default:
+ jj_consume_token(-1);
+ throw new ParseException();
+ }
+ }
+ {if (true) return left;}
+ throw new Error("Missing return statement in function");
+ }
+
+ final public Expression multExpr() throws ParseException {
+ Expression left;
+ Expression right;
+ left = unaryExpr();
+ label_8:
+ while (true) {
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case 40:
+ case 41:
+ case 42:
+ ;
+ break;
+ default:
+ break label_8;
+ }
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case 40:
+ jj_consume_token(40);
+ right = unaryExpr();
+ left = ArithmeticExpression.createMultiply(left, right);
+ break;
+ case 41:
+ jj_consume_token(41);
+ right = unaryExpr();
+ left = ArithmeticExpression.createDivide(left, right);
+ break;
+ case 42:
+ jj_consume_token(42);
+ right = unaryExpr();
+ left = ArithmeticExpression.createMod(left, right);
+ break;
+ default:
+ jj_consume_token(-1);
+ throw new ParseException();
+ }
+ }
+ {if (true) return left;}
+ throw new Error("Missing return statement in function");
+ }
+
+ final public Expression unaryExpr() throws ParseException {
+ String s=null;
+ Expression left=null;
+ if (jj_2_6(2147483647)) {
+ jj_consume_token(38);
+ left = unaryExpr();
+ } else {
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case 39:
+ jj_consume_token(39);
+ left = unaryExpr();
+ left = UnaryExpression.createNegate(left);
+ break;
+ case NOT:
+ jj_consume_token(NOT);
+ left = unaryExpr();
+ left = UnaryExpression.createNOT( asBooleanExpression(left) );
+ break;
+ case TRUE:
+ case FALSE:
+ case NULL:
+ case DECIMAL_LITERAL:
+ case HEX_LITERAL:
+ case OCTAL_LITERAL:
+ case FLOATING_POINT_LITERAL:
+ case STRING_LITERAL:
+ case FUNCTIONNAME:
+ case ID:
+ case QUOTED_ID:
+ case 35:
+ left = primaryExpr();
+ break;
+ default:
+ jj_consume_token(-1);
+ throw new ParseException();
+ }
+ }
+ {if (true) return left;}
+ throw new Error("Missing return statement in function");
+ }
+
+ final public Expression primaryExpr() throws ParseException {
+ Expression left=null;
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case FUNCTIONNAME:
+ left = functionExpression();
+ break;
+ case TRUE:
+ case FALSE:
+ case NULL:
+ case DECIMAL_LITERAL:
+ case HEX_LITERAL:
+ case OCTAL_LITERAL:
+ case FLOATING_POINT_LITERAL:
+ case STRING_LITERAL:
+ left = literal();
+ break;
+ case ID:
+ case QUOTED_ID:
+ left = variable();
+ break;
+ case 35:
+ jj_consume_token(35);
+ left = orExpression();
+ jj_consume_token(37);
+ break;
+ default:
+ jj_consume_token(-1);
+ throw new ParseException();
+ }
+ {if (true) return left;}
+ throw new Error("Missing return statement in function");
+ }
+
+ final public ConstantExpression literal() throws ParseException {
+ Token t;
+ String s;
+ ConstantExpression left=null;
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case STRING_LITERAL:
+ s = stringLiteral();
+ left = new ConstantExpression(s);
+ break;
+ case DECIMAL_LITERAL:
+ t = jj_consume_token(DECIMAL_LITERAL);
+ left = ConstantExpression.createFromDecimal(t.image);
+ break;
+ case HEX_LITERAL:
+ t = jj_consume_token(HEX_LITERAL);
+ left = ConstantExpression.createFromHex(t.image);
+ break;
+ case OCTAL_LITERAL:
+ t = jj_consume_token(OCTAL_LITERAL);
+ left = ConstantExpression.createFromOctal(t.image);
+ break;
+ case FLOATING_POINT_LITERAL:
+ t = jj_consume_token(FLOATING_POINT_LITERAL);
+ left = ConstantExpression.createFloat(t.image);
+ break;
+ case TRUE:
+ jj_consume_token(TRUE);
+ left = ConstantExpression.TRUE;
+ break;
+ case FALSE:
+ jj_consume_token(FALSE);
+ left = ConstantExpression.FALSE;
+ break;
+ case NULL:
+ jj_consume_token(NULL);
+ left = ConstantExpression.NULL;
+ break;
+ default:
+ jj_consume_token(-1);
+ throw new ParseException();
+ }
+ {if (true) return left;}
+ throw new Error("Missing return statement in function");
+ }
+
+ final public String stringLiteral() throws ParseException {
+ Token t;
+ StringBuffer rc = new StringBuffer();
+ boolean first=true;
+ t = jj_consume_token(STRING_LITERAL);
+ // Decode the sting value.
+ String image = t.image;
+ for( int i=1; i < image.length()-1; i++ ) {
+ char c = image.charAt(i);
+ if( c == (char) 0x27 )//single quote
+ {
+ i++;
+ }
+ rc.append(c);
+ }
+ {if (true) return rc.toString();}
+ throw new Error("Missing return statement in function");
+ }
+
+ final public ConfiguredObjectExpression variable() throws ParseException {
+ String s;
+ Token t;
+ ConfiguredObjectExpression right;
+ if (jj_2_7(2)) {
+ s = identifier();
+ jj_consume_token(43);
+ right = variable();
+ {if (true) return _factory.createConfiguredObjectExpression( s, right );}
+ } else if (jj_2_8(2)) {
+ s = identifier();
+ jj_consume_token(44);
+ t = jj_consume_token(DECIMAL_LITERAL);
+ jj_consume_token(45);
+ {if (true) return _factory.createConfiguredObjectExpression( s, Integer.valueOf( t.image ) );}
+ } else {
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case ID:
+ case QUOTED_ID:
+ s = identifier();
+ {if (true) return _factory.createConfiguredObjectExpression( s );}
+ break;
+ default:
+ jj_consume_token(-1);
+ throw new ParseException();
+ }
+ }
+ throw new Error("Missing return statement in function");
+ }
+
+ final public Expression functionExpression() throws ParseException {
+ String s;
+ Token t;
+ List<Expression> args = new ArrayList<Expression>();
+ Expression expr;
+ t = jj_consume_token(FUNCTIONNAME);
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case TRUE:
+ case FALSE:
+ case NULL:
+ case DECIMAL_LITERAL:
+ case HEX_LITERAL:
+ case OCTAL_LITERAL:
+ case FLOATING_POINT_LITERAL:
+ case STRING_LITERAL:
+ case FUNCTIONNAME:
+ case ID:
+ case QUOTED_ID:
+ case 35:
+ expr = primaryExpr();
+ args.add(expr);
+ label_9:
+ while (true) {
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case 36:
+ ;
+ break;
+ default:
+ break label_9;
+ }
+ jj_consume_token(36);
+ expr = primaryExpr();
+ args.add(expr);
+ }
+ break;
+ default:
+ ;
+ }
+ jj_consume_token(37);
+ {if (true) return _factory.createFunctionExpression( t.image.substring(0, t.image.length() - 1), args );}
+ throw new Error("Missing return statement in function");
+ }
+
+ final public String identifier() throws ParseException {
+ Token t;
+ StringBuffer rc = new StringBuffer();
+ String s;
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case ID:
+ t = jj_consume_token(ID);
+ s = t.image;
+ break;
+ case QUOTED_ID:
+ t = jj_consume_token(QUOTED_ID);
+ // Decode the sting value.
+ String image = t.image;
+ for( int i=1; i < image.length()-1; i++ ) {
+ char c = image.charAt(i);
+ if( c == '"' )
+ {
+ i++;
+ }
+ rc.append(c);
+ }
+ s = rc.toString();
+ break;
+ default:
+ jj_consume_token(-1);
+ throw new ParseException();
+ }
+ {if (true) return s;}
+ throw new Error("Missing return statement in function");
+ }
+
+ final public List<Map<String, Expression>> selectClause() throws ParseException {
+ List<Map<String, Expression>> returnVal = new ArrayList<Map<String, Expression>>();
+ Map<String, Expression> element;
+ element = selectClauseElement();
+ returnVal.add( element );
+ label_10:
+ while (true) {
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case 36:
+ ;
+ break;
+ default:
+ break label_10;
+ }
+ jj_consume_token(36);
+ element = selectClauseElement();
+ returnVal.add( element );
+ }
+ {if (true) return returnVal;}
+ throw new Error("Missing return statement in function");
+ }
+
+ final public Map<String, Expression> selectClauseElement() throws ParseException {
+ String name = null;
+ Expression expr;
+ expr = primaryExpr();
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case AS:
+ jj_consume_token(AS);
+ name = identifier();
+ break;
+ default:
+ ;
+ }
+ if(name == null)
+ {
+ name = ( expr instanceof NamedExpression ) ? ((NamedExpression) expr).getName() : "";
+ }
+ {if (true) return Collections.singletonMap( name, expr );}
+ throw new Error("Missing return statement in function");
+ }
+
+ private boolean jj_2_1(int xla) {
+ jj_la = xla; jj_lastpos = jj_scanpos = token;
+ try { return !jj_3_1(); }
+ catch(LookaheadSuccess ls) { return true; }
+ }
+
+ private boolean jj_2_2(int xla) {
+ jj_la = xla; jj_lastpos = jj_scanpos = token;
+ try { return !jj_3_2(); }
+ catch(LookaheadSuccess ls) { return true; }
+ }
+
+ private boolean jj_2_3(int xla) {
+ jj_la = xla; jj_lastpos = jj_scanpos = token;
+ try { return !jj_3_3(); }
+ catch(LookaheadSuccess ls) { return true; }
+ }
+
+ private boolean jj_2_4(int xla) {
+ jj_la = xla; jj_lastpos = jj_scanpos = token;
+ try { return !jj_3_4(); }
+ catch(LookaheadSuccess ls) { return true; }
+ }
+
+ private boolean jj_2_5(int xla) {
+ jj_la = xla; jj_lastpos = jj_scanpos = token;
+ try { return !jj_3_5(); }
+ catch(LookaheadSuccess ls) { return true; }
+ }
+
+ private boolean jj_2_6(int xla) {
+ jj_la = xla; jj_lastpos = jj_scanpos = token;
+ try { return !jj_3_6(); }
+ catch(LookaheadSuccess ls) { return true; }
+ }
+
+ private boolean jj_2_7(int xla) {
+ jj_la = xla; jj_lastpos = jj_scanpos = token;
+ try { return !jj_3_7(); }
+ catch(LookaheadSuccess ls) { return true; }
+ }
+
+ private boolean jj_2_8(int xla) {
+ jj_la = xla; jj_lastpos = jj_scanpos = token;
+ try { return !jj_3_8(); }
+ catch(LookaheadSuccess ls) { return true; }
+ }
+
+ private boolean jj_3R_62() {
+ if (jj_scan_token(BETWEEN)) return true;
+ if (jj_3R_51()) return true;
+ if (jj_scan_token(AND)) return true;
+ if (jj_3R_51()) return true;
+ return false;
+ }
+
+ private boolean jj_3R_66() {
+ if (jj_scan_token(ESCAPE)) return true;
+ if (jj_3R_46()) return true;
+ return false;
+ }
+
+ private boolean jj_3R_38() {
+ if (jj_scan_token(FLOATING_POINT_LITERAL)) return true;
+ return false;
+ }
+
+ private boolean jj_3R_23() {
+ if (jj_scan_token(42)) return true;
+ if (jj_3R_12()) return true;
+ return false;
+ }
+
+ private boolean jj_3R_29() {
+ if (jj_scan_token(FUNCTIONNAME)) return true;
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3R_33()) jj_scanpos = xsp;
+ if (jj_scan_token(37)) return true;
+ return false;
+ }
+
+ private boolean jj_3R_47() {
+ if (jj_3R_49()) return true;
+ Token xsp;
+ while (true) {
+ xsp = jj_scanpos;
+ if (jj_3R_50()) { jj_scanpos = xsp; break; }
+ }
+ return false;
+ }
+
+ private boolean jj_3_2() {
+ if (jj_scan_token(NOT)) return true;
+ if (jj_scan_token(LIKE)) return true;
+ if (jj_3R_46()) return true;
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3R_67()) jj_scanpos = xsp;
+ return false;
+ }
+
+ private boolean jj_3R_61() {
+ if (jj_scan_token(LIKE)) return true;
+ if (jj_3R_46()) return true;
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3R_66()) jj_scanpos = xsp;
+ return false;
+ }
+
+ private boolean jj_3R_37() {
+ if (jj_scan_token(OCTAL_LITERAL)) return true;
+ return false;
+ }
+
+ private boolean jj_3R_22() {
+ if (jj_scan_token(41)) return true;
+ if (jj_3R_12()) return true;
+ return false;
+ }
+
+ private boolean jj_3R_14() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3R_21()) {
+ jj_scanpos = xsp;
+ if (jj_3R_22()) {
+ jj_scanpos = xsp;
+ if (jj_3R_23()) return true;
+ }
+ }
+ return false;
+ }
+
+ private boolean jj_3R_21() {
+ if (jj_scan_token(40)) return true;
+ if (jj_3R_12()) return true;
+ return false;
+ }
+
+ private boolean jj_3R_48() {
+ if (jj_scan_token(AND)) return true;
+ if (jj_3R_47()) return true;
+ return false;
+ }
+
+ private boolean jj_3R_36() {
+ if (jj_scan_token(HEX_LITERAL)) return true;
+ return false;
+ }
+
+ private boolean jj_3R_11() {
+ if (jj_3R_12()) return true;
+ Token xsp;
+ while (true) {
+ xsp = jj_scanpos;
+ if (jj_3R_14()) { jj_scanpos = xsp; break; }
+ }
+ return false;
+ }
+
+ private boolean jj_3R_42() {
+ if (jj_3R_13()) return true;
+ return false;
+ }
+
+ private boolean jj_3R_35() {
+ if (jj_scan_token(DECIMAL_LITERAL)) return true;
+ return false;
+ }
+
+ private boolean jj_3R_65() {
+ if (jj_scan_token(39)) return true;
+ if (jj_3R_11()) return true;
+ return false;
+ }
+
+ private boolean jj_3R_43() {
+ if (jj_3R_47()) return true;
+ Token xsp;
+ while (true) {
+ xsp = jj_scanpos;
+ if (jj_3R_48()) { jj_scanpos = xsp; break; }
+ }
+ return false;
+ }
+
+ private boolean jj_3_5() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_scan_token(38)) {
+ jj_scanpos = xsp;
+ if (jj_scan_token(39)) return true;
+ }
+ if (jj_3R_11()) return true;
+ return false;
+ }
+
+ private boolean jj_3R_60() {
+ if (jj_scan_token(34)) return true;
+ if (jj_3R_51()) return true;
+ return false;
+ }
+
+ private boolean jj_3R_34() {
+ if (jj_3R_46()) return true;
+ return false;
+ }
+
+ private boolean jj_3_8() {
+ if (jj_3R_13()) return true;
+ if (jj_scan_token(44)) return true;
+ if (jj_scan_token(DECIMAL_LITERAL)) return true;
+ if (jj_scan_token(45)) return true;
+ return false;
+ }
+
+ private boolean jj_3R_45() {
+ if (jj_scan_token(36)) return true;
+ if (jj_3R_24()) return true;
+ return false;
+ }
+
+ private boolean jj_3R_64() {
+ if (jj_scan_token(38)) return true;
+ if (jj_3R_11()) return true;
+ return false;
+ }
+
+ private boolean jj_3R_59() {
+ if (jj_scan_token(33)) return true;
+ if (jj_3R_51()) return true;
+ return false;
+ }
+
+ private boolean jj_3R_30() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3R_34()) {
+ jj_scanpos = xsp;
+ if (jj_3R_35()) {
+ jj_scanpos = xsp;
+ if (jj_3R_36()) {
+ jj_scanpos = xsp;
+ if (jj_3R_37()) {
+ jj_scanpos = xsp;
+ if (jj_3R_38()) {
+ jj_scanpos = xsp;
+ if (jj_3R_39()) {
+ jj_scanpos = xsp;
+ if (jj_3R_40()) {
+ jj_scanpos = xsp;
+ if (jj_3R_41()) return true;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ return false;
+ }
+
+ private boolean jj_3R_69() {
+ if (jj_scan_token(36)) return true;
+ if (jj_3R_24()) return true;
+ return false;
+ }
+
+ private boolean jj_3R_56() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3R_64()) {
+ jj_scanpos = xsp;
+ if (jj_3R_65()) return true;
+ }
+ return false;
+ }
+
+ private boolean jj_3R_44() {
+ if (jj_scan_token(OR)) return true;
+ if (jj_3R_43()) return true;
+ return false;
+ }
+
+ private boolean jj_3_7() {
+ if (jj_3R_13()) return true;
+ if (jj_scan_token(43)) return true;
+ if (jj_3R_31()) return true;
+ return false;
+ }
+
+ private boolean jj_3R_31() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_7()) {
+ jj_scanpos = xsp;
+ if (jj_3_8()) {
+ jj_scanpos = xsp;
+ if (jj_3R_42()) return true;
+ }
+ }
+ return false;
+ }
+
+ private boolean jj_3R_58() {
+ if (jj_scan_token(32)) return true;
+ if (jj_3R_51()) return true;
+ return false;
+ }
+
+ private boolean jj_3R_57() {
+ if (jj_scan_token(31)) return true;
+ if (jj_3R_51()) return true;
+ return false;
+ }
+
+ private boolean jj_3R_52() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3R_57()) {
+ jj_scanpos = xsp;
+ if (jj_3R_58()) {
+ jj_scanpos = xsp;
+ if (jj_3R_59()) {
+ jj_scanpos = xsp;
+ if (jj_3R_60()) {
+ jj_scanpos = xsp;
+ if (jj_3R_61()) {
+ jj_scanpos = xsp;
+ if (jj_3_2()) {
+ jj_scanpos = xsp;
+ if (jj_3R_62()) {
+ jj_scanpos = xsp;
+ if (jj_3_3()) {
+ jj_scanpos = xsp;
+ if (jj_3R_63()) {
+ jj_scanpos = xsp;
+ if (jj_3_4()) return true;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ return false;
+ }
+
+ private boolean jj_3R_51() {
+ if (jj_3R_11()) return true;
+ Token xsp;
+ while (true) {
+ xsp = jj_scanpos;
+ if (jj_3R_56()) { jj_scanpos = xsp; break; }
+ }
+ return false;
+ }
+
+ private boolean jj_3R_28() {
+ if (jj_scan_token(35)) return true;
+ if (jj_3R_32()) return true;
+ if (jj_scan_token(37)) return true;
+ return false;
+ }
+
+ private boolean jj_3R_32() {
+ if (jj_3R_43()) return true;
+ Token xsp;
+ while (true) {
+ xsp = jj_scanpos;
+ if (jj_3R_44()) { jj_scanpos = xsp; break; }
+ }
+ return false;
+ }
+
+ private boolean jj_3R_27() {
+ if (jj_3R_31()) return true;
+ return false;
+ }
+
+ private boolean jj_3R_26() {
+ if (jj_3R_30()) return true;
+ return false;
+ }
+
+ private boolean jj_3R_25() {
+ if (jj_3R_29()) return true;
+ return false;
+ }
+
+ private boolean jj_3R_68() {
+ if (jj_scan_token(36)) return true;
+ if (jj_3R_24()) return true;
+ return false;
+ }
+
+ private boolean jj_3R_24() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3R_25()) {
+ jj_scanpos = xsp;
+ if (jj_3R_26()) {
+ jj_scanpos = xsp;
+ if (jj_3R_27()) {
+ jj_scanpos = xsp;
+ if (jj_3R_28()) return true;
+ }
+ }
+ }
+ return false;
+ }
+
+ private boolean jj_3R_49() {
+ if (jj_3R_51()) return true;
+ Token xsp;
+ while (true) {
+ xsp = jj_scanpos;
+ if (jj_3R_52()) { jj_scanpos = xsp; break; }
+ }
+ return false;
+ }
+
+ private boolean jj_3R_46() {
+ if (jj_scan_token(STRING_LITERAL)) return true;
+ return false;
+ }
+
+ private boolean jj_3_4() {
+ if (jj_scan_token(NOT)) return true;
+ if (jj_scan_token(IN)) return true;
+ if (jj_scan_token(35)) return true;
+ if (jj_3R_24()) return true;
+ Token xsp;
+ while (true) {
+ xsp = jj_scanpos;
+ if (jj_3R_69()) { jj_scanpos = xsp; break; }
+ }
+ if (jj_scan_token(37)) return true;
+ return false;
+ }
+
+ private boolean jj_3_6() {
+ if (jj_scan_token(38)) return true;
+ if (jj_3R_12()) return true;
+ return false;
+ }
+
+ private boolean jj_3R_67() {
+ if (jj_scan_token(ESCAPE)) return true;
+ if (jj_3R_46()) return true;
+ return false;
+ }
+
+ private boolean jj_3R_18() {
+ if (jj_3R_24()) return true;
+ return false;
+ }
+
+ private boolean jj_3R_17() {
+ if (jj_scan_token(NOT)) return true;
+ if (jj_3R_12()) return true;
+ return false;
+ }
+
+ private boolean jj_3R_15() {
+ if (jj_scan_token(38)) return true;
+ if (jj_3R_12()) return true;
+ return false;
+ }
+
+ private boolean jj_3R_63() {
+ if (jj_scan_token(IN)) return true;
+ if (jj_scan_token(35)) return true;
+ if (jj_3R_24()) return true;
+ Token xsp;
+ while (true) {
+ xsp = jj_scanpos;
+ if (jj_3R_68()) { jj_scanpos = xsp; break; }
+ }
+ if (jj_scan_token(37)) return true;
+ return false;
+ }
+
+ private boolean jj_3R_55() {
+ if (jj_scan_token(IS)) return true;
+ if (jj_scan_token(NOT)) return true;
+ if (jj_scan_token(NULL)) return true;
+ return false;
+ }
+
+ private boolean jj_3R_16() {
+ if (jj_scan_token(39)) return true;
+ if (jj_3R_12()) return true;
+ return false;
+ }
+
+ private boolean jj_3R_33() {
+ if (jj_3R_24()) return true;
+ Token xsp;
+ while (true) {
+ xsp = jj_scanpos;
+ if (jj_3R_45()) { jj_scanpos = xsp; break; }
+ }
+ return false;
+ }
+
+ private boolean jj_3R_20() {
+ if (jj_scan_token(QUOTED_ID)) return true;
+ return false;
+ }
+
+ private boolean jj_3R_41() {
+ if (jj_scan_token(NULL)) return true;
+ return false;
+ }
+
+ private boolean jj_3_1() {
+ if (jj_scan_token(IS)) return true;
+ if (jj_scan_token(NULL)) return true;
+ return false;
+ }
+
+ private boolean jj_3R_19() {
+ if (jj_scan_token(ID)) return true;
+ return false;
+ }
+
+ private boolean jj_3R_12() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3R_15()) {
+ jj_scanpos = xsp;
+ if (jj_3R_16()) {
+ jj_scanpos = xsp;
+ if (jj_3R_17()) {
+ jj_scanpos = xsp;
+ if (jj_3R_18()) return true;
+ }
+ }
+ }
+ return false;
+ }
+
+ private boolean jj_3R_40() {
+ if (jj_scan_token(FALSE)) return true;
+ return false;
+ }
+
+ private boolean jj_3R_54() {
+ if (jj_scan_token(30)) return true;
+ if (jj_3R_49()) return true;
+ return false;
+ }
+
+ private boolean jj_3R_13() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3R_19()) {
+ jj_scanpos = xsp;
+ if (jj_3R_20()) return true;
+ }
+ return false;
+ }
+
+ private boolean jj_3_3() {
+ if (jj_scan_token(NOT)) return true;
+ if (jj_scan_token(BETWEEN)) return true;
+ if (jj_3R_51()) return true;
+ if (jj_scan_token(AND)) return true;
+ if (jj_3R_51()) return true;
+ return false;
+ }
+
+ private boolean jj_3R_53() {
+ if (jj_scan_token(29)) return true;
+ if (jj_3R_49()) return true;
+ return false;
+ }
+
+ private boolean jj_3R_50() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3R_53()) {
+ jj_scanpos = xsp;
+ if (jj_3R_54()) {
+ jj_scanpos = xsp;
+ if (jj_3_1()) {
+ jj_scanpos = xsp;
+ if (jj_3R_55()) return true;
+ }
+ }
+ }
+ return false;
+ }
+
+ private boolean jj_3R_39() {
+ if (jj_scan_token(TRUE)) return true;
+ return false;
+ }
+
+ /** Generated Token Manager. */
+ public ConfiguredObjectFilterParserTokenManager token_source;
+ SimpleCharStream jj_input_stream;
+ /** Current token. */
+ public Token token;
+ /** Next token. */
+ public Token jj_nt;
+ private int jj_ntk;
+ private Token jj_scanpos, jj_lastpos;
+ private int jj_la;
+
+ /** Constructor with InputStream. */
+ public ConfiguredObjectFilterParser(java.io.InputStream stream) {
+ this(stream, null);
+ }
+ /** Constructor with InputStream and supplied encoding */
+ public ConfiguredObjectFilterParser(java.io.InputStream stream, String encoding) {
+ try { jj_input_stream = new SimpleCharStream(stream, encoding, 1, 1); } catch(java.io.UnsupportedEncodingException e) { throw new RuntimeException(e); }
+ token_source = new ConfiguredObjectFilterParserTokenManager(jj_input_stream);
+ token = new Token();
+ jj_ntk = -1;
+ }
+
+ /** Reinitialise. */
+ public void ReInit(java.io.InputStream stream) {
+ ReInit(stream, null);
+ }
+ /** Reinitialise. */
+ public void ReInit(java.io.InputStream stream, String encoding) {
+ try { jj_input_stream.ReInit(stream, encoding, 1, 1); } catch(java.io.UnsupportedEncodingException e) { throw new RuntimeException(e); }
+ token_source.ReInit(jj_input_stream);
+ token = new Token();
+ jj_ntk = -1;
+ }
+
+ /** Constructor. */
+ public ConfiguredObjectFilterParser(java.io.Reader stream) {
+ jj_input_stream = new SimpleCharStream(stream, 1, 1);
+ token_source = new ConfiguredObjectFilterParserTokenManager(jj_input_stream);
+ token = new Token();
+ jj_ntk = -1;
+ }
+
+ /** Reinitialise. */
+ public void ReInit(java.io.Reader stream) {
+ jj_input_stream.ReInit(stream, 1, 1);
+ token_source.ReInit(jj_input_stream);
+ token = new Token();
+ jj_ntk = -1;
+ }
+
+ /** Constructor with generated Token Manager. */
+ public ConfiguredObjectFilterParser(ConfiguredObjectFilterParserTokenManager tm) {
+ token_source = tm;
+ token = new Token();
+ jj_ntk = -1;
+ }
+
+ /** Reinitialise. */
+ public void ReInit(ConfiguredObjectFilterParserTokenManager tm) {
+ token_source = tm;
+ token = new Token();
+ jj_ntk = -1;
+ }
+
+ private Token jj_consume_token(int kind) throws ParseException {
+ Token oldToken;
+ if ((oldToken = token).next != null) token = token.next;
+ else token = token.next = token_source.getNextToken();
+ jj_ntk = -1;
+ if (token.kind == kind) {
+ return token;
+ }
+ token = oldToken;
+ throw generateParseException();
+ }
+
+ static private final class LookaheadSuccess extends java.lang.Error { }
+ final private LookaheadSuccess jj_ls = new LookaheadSuccess();
+ private boolean jj_scan_token(int kind) {
+ if (jj_scanpos == jj_lastpos) {
+ jj_la--;
+ if (jj_scanpos.next == null) {
+ jj_lastpos = jj_scanpos = jj_scanpos.next = token_source.getNextToken();
+ } else {
+ jj_lastpos = jj_scanpos = jj_scanpos.next;
+ }
+ } else {
+ jj_scanpos = jj_scanpos.next;
+ }
+ if (jj_scanpos.kind != kind) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) throw jj_ls;
+ return false;
+ }
+
+
+/** Get the next Token. */
+ final public Token getNextToken() {
+ if (token.next != null) token = token.next;
+ else token = token.next = token_source.getNextToken();
+ jj_ntk = -1;
+ return token;
+ }
+
+/** Get the specific Token. */
+ final public Token getToken(int index) {
+ Token t = token;
+ for (int i = 0; i < index; i++) {
+ if (t.next != null) t = t.next;
+ else t = t.next = token_source.getNextToken();
+ }
+ return t;
+ }
+
+ private int jj_ntk() {
+ if ((jj_nt=token.next) == null)
+ return (jj_ntk = (token.next=token_source.getNextToken()).kind);
+ else
+ return (jj_ntk = jj_nt.kind);
+ }
+
+ /** Generate ParseException. */
+ public ParseException generateParseException() {
+ Token errortok = token.next;
+ int line = errortok.beginLine, column = errortok.beginColumn;
+ String mess = (errortok.kind == 0) ? tokenImage[0] : errortok.image;
+ return new ParseException("Parse error at line " + line + ", column " + column + ". Encountered: " + mess);
+ }
+
+ /** Enable tracing. */
+ final public void enable_tracing() {
+ }
+
+ /** Disable tracing. */
+ final public void disable_tracing() {
+ }
+
+}
Propchange: qpid/java/trunk/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/query/ConfiguredObjectFilterParser.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: qpid/java/trunk/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/query/ConfiguredObjectFilterParserConstants.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/ConfiguredObjectFilterParserConstants.java?rev=1722953&view=auto
==============================================================================
--- qpid/java/trunk/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/query/ConfiguredObjectFilterParserConstants.java (added)
+++ qpid/java/trunk/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/query/ConfiguredObjectFilterParserConstants.java Mon Jan 4 19:55:44 2016
@@ -0,0 +1,134 @@
+/* Generated By:JavaCC: Do not edit this line. ConfiguredObjectFilterParserConstants.java */
+/*
+ *
+ * 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.server.management.plugin.servlet.query;
+
+
+/**
+ * Token literal values and constants.
+ * Generated by org.javacc.parser.OtherFilesGen#start()
+ */
+public interface ConfiguredObjectFilterParserConstants {
+
+ /** End of File. */
+ int EOF = 0;
+ /** RegularExpression Id. */
+ int LINE_COMMENT = 6;
+ /** RegularExpression Id. */
+ int BLOCK_COMMENT = 7;
+ /** RegularExpression Id. */
+ int NOT = 8;
+ /** RegularExpression Id. */
+ int AND = 9;
+ /** RegularExpression Id. */
+ int OR = 10;
+ /** RegularExpression Id. */
+ int BETWEEN = 11;
+ /** RegularExpression Id. */
+ int LIKE = 12;
+ /** RegularExpression Id. */
+ int ESCAPE = 13;
+ /** RegularExpression Id. */
+ int IN = 14;
+ /** RegularExpression Id. */
+ int IS = 15;
+ /** RegularExpression Id. */
+ int TRUE = 16;
+ /** RegularExpression Id. */
+ int FALSE = 17;
+ /** RegularExpression Id. */
+ int NULL = 18;
+ /** RegularExpression Id. */
+ int AS = 19;
+ /** RegularExpression Id. */
+ int DECIMAL_LITERAL = 20;
+ /** RegularExpression Id. */
+ int HEX_LITERAL = 21;
+ /** RegularExpression Id. */
+ int OCTAL_LITERAL = 22;
+ /** RegularExpression Id. */
+ int FLOATING_POINT_LITERAL = 23;
+ /** RegularExpression Id. */
+ int EXPONENT = 24;
+ /** RegularExpression Id. */
+ int STRING_LITERAL = 25;
+ /** RegularExpression Id. */
+ int FUNCTIONNAME = 26;
+ /** RegularExpression Id. */
+ int ID = 27;
+ /** RegularExpression Id. */
+ int QUOTED_ID = 28;
+
+ /** Lexical state. */
+ int DEFAULT = 0;
+
+ /** Literal token values. */
+ String[] tokenImage = {
+ "<EOF>",
+ "\" \"",
+ "\"\\t\"",
+ "\"\\n\"",
+ "\"\\r\"",
+ "\"\\f\"",
+ "<LINE_COMMENT>",
+ "<BLOCK_COMMENT>",
+ "\"NOT\"",
+ "\"AND\"",
+ "\"OR\"",
+ "\"BETWEEN\"",
+ "\"LIKE\"",
+ "\"ESCAPE\"",
+ "\"IN\"",
+ "\"IS\"",
+ "\"TRUE\"",
+ "\"FALSE\"",
+ "\"NULL\"",
+ "\"AS\"",
+ "<DECIMAL_LITERAL>",
+ "<HEX_LITERAL>",
+ "<OCTAL_LITERAL>",
+ "<FLOATING_POINT_LITERAL>",
+ "<EXPONENT>",
+ "<STRING_LITERAL>",
+ "<FUNCTIONNAME>",
+ "<ID>",
+ "<QUOTED_ID>",
+ "\"=\"",
+ "\"<>\"",
+ "\">\"",
+ "\">=\"",
+ "\"<\"",
+ "\"<=\"",
+ "\"(\"",
+ "\",\"",
+ "\")\"",
+ "\"+\"",
+ "\"-\"",
+ "\"*\"",
+ "\"/\"",
+ "\"%\"",
+ "\".\"",
+ "\"[\"",
+ "\"]\"",
+ };
+
+}
Propchange: qpid/java/trunk/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/query/ConfiguredObjectFilterParserConstants.java
------------------------------------------------------------------------------
svn:eol-style = native
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org