This is an automated email from the ASF dual-hosted git repository. sunlan pushed a commit to branch GROOVY-8258 in repository https://gitbox.apache.org/repos/asf/groovy.git
commit 378a1ef3d008b316e146156c8790381183e84277 Author: Daniel Sun <[email protected]> AuthorDate: Tue Oct 6 21:46:54 2020 +0800 GROOVY-8258: simplify the ginq AST --- .../org/apache/groovy/linq/dsl/GinqAstBuilder.java | 2 +- .../groovy/org/apache/groovy/linq/dsl/GinqBuilder.groovy | 16 ++++++---------- .../groovy/linq/dsl/expression/SimpleGinqExpression.java | 12 ++++++------ 3 files changed, 13 insertions(+), 17 deletions(-) diff --git a/subprojects/groovy-linq/src/main/groovy/org/apache/groovy/linq/dsl/GinqAstBuilder.java b/subprojects/groovy-linq/src/main/groovy/org/apache/groovy/linq/dsl/GinqAstBuilder.java index 4905871..e3b70c6 100644 --- a/subprojects/groovy-linq/src/main/groovy/org/apache/groovy/linq/dsl/GinqAstBuilder.java +++ b/subprojects/groovy-linq/src/main/groovy/org/apache/groovy/linq/dsl/GinqAstBuilder.java @@ -88,7 +88,7 @@ public class GinqAstBuilder extends CodeVisitorSupport { if ("from".equals(methodName)) { FromExpression fromExpression = new FromExpression(aliasExpr, dataSourceExpr); fromExpression.setSourcePosition(call); - simpleGinqExpression.addFromExpression(fromExpression); + simpleGinqExpression.setFromExpression(fromExpression); ginqExpression = fromExpression; } else if ("innerJoin".equals(methodName)) { InnerJoinExpression innerJoinExpression = new InnerJoinExpression(aliasExpr, dataSourceExpr); diff --git a/subprojects/groovy-linq/src/main/groovy/org/apache/groovy/linq/dsl/GinqBuilder.groovy b/subprojects/groovy-linq/src/main/groovy/org/apache/groovy/linq/dsl/GinqBuilder.groovy index b9dd39a..ed0a962 100644 --- a/subprojects/groovy-linq/src/main/groovy/org/apache/groovy/linq/dsl/GinqBuilder.groovy +++ b/subprojects/groovy-linq/src/main/groovy/org/apache/groovy/linq/dsl/GinqBuilder.groovy @@ -53,20 +53,16 @@ class GinqBuilder implements GinqVisitor<Object> { @Override MethodCallExpression visitSimpleGinqExpression(SimpleGinqExpression simpleGinqExpression) { - List<MethodCallExpression> fromMethodCallExpressionList = new LinkedList<>() - List<FromExpression> fromExpressionList = simpleGinqExpression.getFromExpressionList() - for (FromExpression fromExpression : fromExpressionList) { - MethodCallExpression methodCallExpression = this.visitFromExpression(fromExpression) - fromMethodCallExpressionList.add(methodCallExpression) - } + FromExpression fromExpression = simpleGinqExpression.getFromExpression() + MethodCallExpression fromMethodCallExpression = this.visitFromExpression(fromExpression) - MethodCallExpression selectMethodReceiver = fromMethodCallExpressionList.getLast() + MethodCallExpression selectMethodReceiver = fromMethodCallExpression List<MethodCallExpression> innerJoinMethodCallExpressionList = new LinkedList<>() List<JoinExpression> joinExpressionList = simpleGinqExpression.getJoinExpressionList() for (JoinExpression joinExpression : joinExpressionList) { - joinExpression.putNodeMetaData(__INNER_JOIN_METHOD_RECEIVER, fromMethodCallExpressionList.getLast()) - joinExpression.putNodeMetaData(__RECEIVER_ALIAS_EXPR, fromExpressionList.get(fromExpressionList.size() - 1).aliasExpr) + joinExpression.putNodeMetaData(__INNER_JOIN_METHOD_RECEIVER, fromMethodCallExpression) + joinExpression.putNodeMetaData(__RECEIVER_ALIAS_EXPR, fromExpression.aliasExpr) MethodCallExpression methodCallExpression = this.visitInnerJoinExpression((InnerJoinExpression) joinExpression) innerJoinMethodCallExpressionList.add(methodCallExpression); } @@ -85,7 +81,7 @@ class GinqBuilder implements GinqVisitor<Object> { selectExpression.putNodeMetaData(__ALIAS_EXPR, new VariableExpression(__T)) } else { - selectExpression.putNodeMetaData(__ALIAS_EXPR, fromExpressionList.get(fromExpressionList.size() - 1).aliasExpr) + selectExpression.putNodeMetaData(__ALIAS_EXPR, fromExpression.aliasExpr) } MethodCallExpression selectMethodCallExpression = this.visitSelectExpression(selectExpression) diff --git a/subprojects/groovy-linq/src/main/groovy/org/apache/groovy/linq/dsl/expression/SimpleGinqExpression.java b/subprojects/groovy-linq/src/main/groovy/org/apache/groovy/linq/dsl/expression/SimpleGinqExpression.java index 23d59ed..43abe75 100644 --- a/subprojects/groovy-linq/src/main/groovy/org/apache/groovy/linq/dsl/expression/SimpleGinqExpression.java +++ b/subprojects/groovy-linq/src/main/groovy/org/apache/groovy/linq/dsl/expression/SimpleGinqExpression.java @@ -29,7 +29,7 @@ import java.util.List; * @since 4.0.0 */ public class SimpleGinqExpression extends AbstractGinqExpression { - private final List<FromExpression> fromExpressionList = new ArrayList<>(); + private FromExpression fromExpression; private final List<JoinExpression> joinExpressionList = new ArrayList<>(); private SelectExpression selectExpression; @@ -38,12 +38,12 @@ public class SimpleGinqExpression extends AbstractGinqExpression { return visitor.visitSimpleGinqExpression(this); } - public List<FromExpression> getFromExpressionList() { - return fromExpressionList; + public FromExpression getFromExpression() { + return fromExpression; } - public void addFromExpression(FromExpression fromExpression) { - this.fromExpressionList.add(fromExpression); + public void setFromExpression(FromExpression fromExpression) { + this.fromExpression = fromExpression; } public List<JoinExpression> getJoinExpressionList() { @@ -65,7 +65,7 @@ public class SimpleGinqExpression extends AbstractGinqExpression { @Override public String toString() { return "SimpleGinqExpression{" + - "fromExpressionList=" + fromExpressionList + + "fromExpression=" + fromExpression + ", selectExpression=" + selectExpression + '}'; }
