You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@groovy.apache.org by su...@apache.org on 2020/10/06 13:49:42 UTC
[groovy] 01/02: GROOVY-8258: simplify the ginq AST
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 <su...@apache.org>
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 +
'}';
}