From 404f2bcf44e9742245af88f115d9c6bb1eeae3bb Mon Sep 17 00:00:00 2001 From: Vaibhav Ramchandani Date: Sat, 30 Mar 2024 21:47:07 -0300 Subject: [PATCH] refactor:Refactor using Change bidirectional association to unidirectional association refactor technique --- .../internal/filter/FilterCompiler.java | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/json-path/src/main/java/com/jayway/jsonpath/internal/filter/FilterCompiler.java b/json-path/src/main/java/com/jayway/jsonpath/internal/filter/FilterCompiler.java index ebd1d66d..986cc17a 100644 --- a/json-path/src/main/java/com/jayway/jsonpath/internal/filter/FilterCompiler.java +++ b/json-path/src/main/java/com/jayway/jsonpath/internal/filter/FilterCompiler.java @@ -205,23 +205,28 @@ public class FilterCompiler { return new RelationalExpressionNode(left, operator, right); } - private LogicalOperator readLogicalOperator(){ - int begin = filter.skipBlanks().position(); - int end = begin+1; + private LogicalOperator readLogicalOperator(CharSequence charSequence, int position) { + int begin = position; + int end = begin + 1; - if(!filter.inBounds(end)){ + if (!inBounds(charSequence, end)) { throw new InvalidPathException("Expected boolean literal"); } - CharSequence logicalOperator = filter.subSequence(begin, end+1); - if(!logicalOperator.equals("||") && !logicalOperator.equals("&&")){ + + CharSequence logicalOperator = charSequence.subSequence(begin, end + 1); + if (!logicalOperator.equals("||") && !logicalOperator.equals("&&")) { throw new InvalidPathException("Expected logical operator"); } - filter.incrementPosition(logicalOperator.length()); + logger.trace("LogicalOperator from {} to {} -> [{}]", begin, end, logicalOperator); return LogicalOperator.fromString(logicalOperator.toString()); } + private boolean inBounds(CharSequence charSequence, int index) { + return index >= 0 && index < charSequence.length(); + } + private RelationalOperator readRelationalOperator() { int begin = filter.skipBlanks().position();