Minor changes to allow extending FiqlParser

Project: http://git-wip-us.apache.org/repos/asf/cxf/repo
Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/9d4fb9a8
Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/9d4fb9a8
Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/9d4fb9a8

Branch: refs/heads/3.0.x-fixes
Commit: 9d4fb9a8aefddb7d6ba6c4520e7049c2c13bc6e6
Parents: 569678e
Author: Francesco Chicchiriccò <ilgro...@apache.org>
Authored: Tue Nov 22 11:28:27 2016 +0100
Committer: Francesco Chicchiriccò <ilgro...@apache.org>
Committed: Tue Nov 22 11:43:16 2016 +0100

----------------------------------------------------------------------
 .../jaxrs/ext/search/SimpleSearchCondition.java | 32 ++++++++++------
 .../cxf/jaxrs/ext/search/fiql/FiqlParser.java   | 40 +++++++++++---------
 2 files changed, 42 insertions(+), 30 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cxf/blob/9d4fb9a8/rt/rs/extensions/search/src/main/java/org/apache/cxf/jaxrs/ext/search/SimpleSearchCondition.java
----------------------------------------------------------------------
diff --git 
a/rt/rs/extensions/search/src/main/java/org/apache/cxf/jaxrs/ext/search/SimpleSearchCondition.java
 
b/rt/rs/extensions/search/src/main/java/org/apache/cxf/jaxrs/ext/search/SimpleSearchCondition.java
index c2e79de..b76beb4 100644
--- 
a/rt/rs/extensions/search/src/main/java/org/apache/cxf/jaxrs/ext/search/SimpleSearchCondition.java
+++ 
b/rt/rs/extensions/search/src/main/java/org/apache/cxf/jaxrs/ext/search/SimpleSearchCondition.java
@@ -22,8 +22,8 @@ import java.lang.reflect.Type;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
+import java.util.EnumSet;
 import java.util.HashMap;
-import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
@@ -41,16 +41,16 @@ import 
org.apache.cxf.jaxrs.ext.search.collections.CollectionCheckInfo;
  */
 public class SimpleSearchCondition<T> implements SearchCondition<T> {
 
-    private static Set<ConditionType> supportedTypes = new 
HashSet<ConditionType>();
+    protected static final Set<ConditionType> SUPPORTED_TYPES = 
EnumSet.noneOf(ConditionType.class);
     static {
-        supportedTypes.add(ConditionType.EQUALS);
-        supportedTypes.add(ConditionType.NOT_EQUALS);
-        supportedTypes.add(ConditionType.GREATER_THAN);
-        supportedTypes.add(ConditionType.GREATER_OR_EQUALS);
-        supportedTypes.add(ConditionType.LESS_THAN);
-        supportedTypes.add(ConditionType.LESS_OR_EQUALS);
+        SUPPORTED_TYPES.add(ConditionType.EQUALS);
+        SUPPORTED_TYPES.add(ConditionType.NOT_EQUALS);
+        SUPPORTED_TYPES.add(ConditionType.GREATER_THAN);
+        SUPPORTED_TYPES.add(ConditionType.GREATER_OR_EQUALS);
+        SUPPORTED_TYPES.add(ConditionType.LESS_THAN);
+        SUPPORTED_TYPES.add(ConditionType.LESS_OR_EQUALS);
     }
-    private ConditionType joiningType = ConditionType.AND;
+    private final ConditionType joiningType = ConditionType.AND;
     private T condition;
     
     private List<SearchCondition<T>> scts;
@@ -69,7 +69,7 @@ public class SimpleSearchCondition<T> implements 
SearchCondition<T> {
         if (condition == null) {
             throw new IllegalArgumentException("condition is null");
         }
-        if (!supportedTypes.contains(cType)) {
+        if (!SUPPORTED_TYPES.contains(cType)) {
             throw new IllegalArgumentException("unsupported condition type: " 
+ cType.name());
         }
         this.condition = condition;
@@ -83,6 +83,8 @@ public class SimpleSearchCondition<T> implements 
SearchCondition<T> {
      * per-getter comparison strategy.
      * 
      * @param getters2operators getters names and operators to be used with 
them during comparison
+     * @param realGetters 
+     * @param propertyTypeInfo 
      * @param condition template object
      */
     public SimpleSearchCondition(Map<String, ConditionType> getters2operators, 
@@ -102,7 +104,7 @@ public class SimpleSearchCondition<T> implements 
SearchCondition<T> {
         }
         this.condition = condition;
         for (ConditionType ct : getters2operators.values()) {
-            if (!supportedTypes.contains(ct)) {
+            if (!SUPPORTED_TYPES.contains(ct)) {
                 throw new IllegalArgumentException("unsupported condition 
type: " + ct.name());
             }
         }
@@ -114,6 +116,7 @@ public class SimpleSearchCondition<T> implements 
SearchCondition<T> {
         this(getters2operators, null, null, condition);
     }
     
+    @Override
     public T getCondition() {
         return condition;
     }
@@ -123,6 +126,7 @@ public class SimpleSearchCondition<T> implements 
SearchCondition<T> {
      * <p>
      * When constructor with map is used it returns null.
      */
+    @Override
     public ConditionType getConditionType() {
         if (scts.size() > 1) {
             return joiningType;
@@ -131,6 +135,7 @@ public class SimpleSearchCondition<T> implements 
SearchCondition<T> {
         }
     }
 
+    @Override
     public List<SearchCondition<T>> getSearchConditions() {
         if (scts.size() > 1) {
             return Collections.unmodifiableList(scts);
@@ -250,6 +255,7 @@ public class SimpleSearchCondition<T> implements 
SearchCondition<T> {
      * 
      * @throws IllegalAccessException when security manager disallows 
reflective call of getters.
      */
+    @Override
     public boolean isMet(T pojo) {
         for (SearchCondition<T> sc : scts) {
             if (!sc.isMet(pojo)) {
@@ -295,6 +301,7 @@ public class SimpleSearchCondition<T> implements 
SearchCondition<T> {
     }
 
 
+    @Override
     public List<T> findAll(Collection<T> pojos) {
         List<T> result = new ArrayList<T>();
         for (T pojo : pojos) {
@@ -309,6 +316,7 @@ public class SimpleSearchCondition<T> implements 
SearchCondition<T> {
         return SearchUtils.toSQL(this, table, columns);
     }
     
+    @Override
     public PrimitiveStatement getStatement() {
         if (scts.size() == 1) {
             return scts.get(0).getStatement();
@@ -317,9 +325,9 @@ public class SimpleSearchCondition<T> implements 
SearchCondition<T> {
         }
     }
 
+    @Override
     public void accept(SearchConditionVisitor<T, ?> visitor) {
         visitor.visit(this);
     }
     
-    
 }

http://git-wip-us.apache.org/repos/asf/cxf/blob/9d4fb9a8/rt/rs/extensions/search/src/main/java/org/apache/cxf/jaxrs/ext/search/fiql/FiqlParser.java
----------------------------------------------------------------------
diff --git 
a/rt/rs/extensions/search/src/main/java/org/apache/cxf/jaxrs/ext/search/fiql/FiqlParser.java
 
b/rt/rs/extensions/search/src/main/java/org/apache/cxf/jaxrs/ext/search/fiql/FiqlParser.java
index ef97c97..7df2977 100644
--- 
a/rt/rs/extensions/search/src/main/java/org/apache/cxf/jaxrs/ext/search/fiql/FiqlParser.java
+++ 
b/rt/rs/extensions/search/src/main/java/org/apache/cxf/jaxrs/ext/search/fiql/FiqlParser.java
@@ -97,8 +97,8 @@ public class FiqlParser<T> extends 
AbstractSearchConditionParser<T> {
         COMPARATORS_PATTERN_SINGLE_EQUALS = Pattern.compile(s2);
     }
 
-    private Map<String, ConditionType> operatorsMap = OPERATORS_MAP;
-    private Pattern comparatorsPattern = COMPARATORS_PATTERN;
+    protected Map<String, ConditionType> operatorsMap = OPERATORS_MAP;
+    protected Pattern comparatorsPattern = COMPARATORS_PATTERN;
     /**
      * Creates FIQL parser.
      * 
@@ -125,7 +125,8 @@ public class FiqlParser<T> extends 
AbstractSearchConditionParser<T> {
      * 
      * @param tclass - class of T used to create condition objects in built 
syntax tree. Class T must have
      *            accessible no-arg constructor and complementary setters to 
these used in FIQL expressions.
-     * @param contextProperties            
+     * @param contextProperties
+     * @param beanProperties 
      */
     public FiqlParser(Class<T> tclass, 
                       Map<String, String> contextProperties,
@@ -161,6 +162,7 @@ public class FiqlParser<T> extends 
AbstractSearchConditionParser<T> {
      * @return tree of {@link SearchCondition} objects representing runtime 
search structure.
      * @throws SearchParseException when expression does not follow FIQL 
grammar
      */
+    @Override
     public SearchCondition<T> parse(String fiqlExpression) throws 
SearchParseException {
         ASTNode<T> ast = parseAndsOrsBrackets(fiqlExpression);
         return ast.build();
@@ -171,8 +173,7 @@ public class FiqlParser<T> extends 
AbstractSearchConditionParser<T> {
         List<String> operators = new ArrayList<String>();
         int level = 0;
         int lastIdx = 0;
-        int idx = 0;
-        for (idx = 0; idx < expr.length(); idx++) {
+        for (int idx = 0; idx < expr.length(); idx++) {
             char c = expr.charAt(idx);
             if (c == '(') {
                 level++;
@@ -222,7 +223,7 @@ public class FiqlParser<T> extends 
AbstractSearchConditionParser<T> {
             SubExpression ands = new SubExpression(AND);
             for (; from <= to; from++) {
                 String subex = subexpressions.get(from);
-                ASTNode<T> node = null;
+                ASTNode<T> node;
                 if (subex.startsWith("(")) {
                     node = parseAndsOrsBrackets(subex.substring(1, 
subex.length() - 1));
                 } else {
@@ -246,7 +247,7 @@ public class FiqlParser<T> extends 
AbstractSearchConditionParser<T> {
         }
     }
 
-    private Comparison parseComparison(String expr) throws 
SearchParseException {
+    protected ASTNode<T> parseComparison(String expr) throws 
SearchParseException {
         Matcher m = comparatorsPattern.matcher(expr);
         if (m.find()) {
             String propertyName = expr.substring(0, m.start(1));
@@ -271,7 +272,7 @@ public class FiqlParser<T> extends 
AbstractSearchConditionParser<T> {
     }
 
     
-    private TypeInfoObject parseType(String originalName, String setter, 
String value) throws SearchParseException {
+    protected TypeInfoObject parseType(String originalName, String setter, 
String value) throws SearchParseException {
         TypeInfo typeInfo = getTypeInfo(setter, value);
         if (isDecodeQueryValues()) {
             value = UrlUtils.urlDecode(value);
@@ -280,12 +281,13 @@ public class FiqlParser<T> extends 
AbstractSearchConditionParser<T> {
         return new TypeInfoObject(object, typeInfo);
     }
     
+    @Override
     protected boolean isCount(String propName) {
         return propName.startsWith(EXTENSION_COUNT_OPEN);
     }
     
     
-    private String unwrapSetter(String setter) {
+    protected String unwrapSetter(String setter) {
         if (setter.startsWith(EXTENSION_COUNT_OPEN) && setter.endsWith(")")) {
             return setter.substring(EXTENSION_COUNT_OPEN.length(), 
setter.length() - 1);        
         } else {
@@ -294,13 +296,13 @@ public class FiqlParser<T> extends 
AbstractSearchConditionParser<T> {
     }
     
     // node of abstract syntax tree
-    private interface ASTNode<T> {
+    protected interface ASTNode<T> {
         SearchCondition<T> build() throws SearchParseException;
     }
 
     private class SubExpression implements ASTNode<T> {
-        private String operator;
-        private List<ASTNode<T>> subnodes = new ArrayList<ASTNode<T>>();
+        private final String operator;
+        private final List<ASTNode<T>> subnodes = new ArrayList<ASTNode<T>>();
 
         public SubExpression(String operator) {
             this.operator = operator;
@@ -329,6 +331,7 @@ public class FiqlParser<T> extends 
AbstractSearchConditionParser<T> {
             return builder.toString();
         }
 
+        @Override
         public SearchCondition<T> build() throws SearchParseException {
             List<SearchCondition<T>> scNodes = new 
ArrayList<SearchCondition<T>>();
             for (ASTNode<T> node : subnodes) {
@@ -344,9 +347,9 @@ public class FiqlParser<T> extends 
AbstractSearchConditionParser<T> {
     }
 
     private class Comparison implements ASTNode<T> {
-        private String name;
-        private String operator;
-        private TypeInfoObject tvalue;
+        private final String name;
+        private final String operator;
+        private final TypeInfoObject tvalue;
 
         public Comparison(String name, String operator, TypeInfoObject value) {
             this.name = name;
@@ -360,6 +363,7 @@ public class FiqlParser<T> extends 
AbstractSearchConditionParser<T> {
                 + " (" + tvalue.getObject().getClass().getSimpleName() + ")";
         }
 
+        @Override
         public SearchCondition<T> build() throws SearchParseException {
             String templateName = getSetter(name);
             T cond = createTemplate(templateName);
@@ -397,9 +401,9 @@ public class FiqlParser<T> extends 
AbstractSearchConditionParser<T> {
         }
     }
     
-    static class TypeInfoObject {
-        private Object object;
-        private TypeInfo typeInfo;
+    protected static class TypeInfoObject {
+        private final Object object;
+        private final TypeInfo typeInfo;
         
         public TypeInfoObject(Object object, TypeInfo typeInfo) {
             this.object = object;

Reply via email to