@java.lang.SuppressWarnings("unchecked")
public class DetachedCriteriaTransformer
extends org.codehaus.groovy.ast.ClassCodeVisitorSupport
ClassCodeVisitorSupport that transforms where methods into detached criteria queries
| Modifiers | Name | Description |
|---|---|---|
static java.lang.String |
AND_OPERATOR |
|
static java.util.Set<java.lang.String> |
CANDIDATE_METHODS_WHERE_ONLY |
|
static org.codehaus.groovy.ast.ClassNode |
DETACHED_CRITERIA_CLASS_NODE |
|
static java.lang.String |
EQUALS_OPERATOR |
|
static org.codehaus.groovy.ast.ClassNode |
FUNCTION_CALL_CRITERION |
|
static java.lang.String |
IS_NULL_CRITERION |
|
static java.lang.String |
OR_OPERATOR |
|
static org.codehaus.groovy.ast.expr.ConstantExpression |
WHERE_LAZY |
|
protected java.util.Set<org.codehaus.groovy.ast.expr.Expression> |
aliasExpressions |
|
protected java.util.Map<java.lang.String, java.lang.Object> |
aliases |
|
protected org.codehaus.groovy.ast.ClassNode |
currentClassNode |
|
protected java.util.Map<java.lang.String, org.codehaus.groovy.ast.ClassNode> |
detachedCriteriaVariables |
|
protected java.util.Map<java.lang.String, org.codehaus.groovy.ast.ClassNode> |
staticDetachedCriteriaVariables |
| Constructor and description |
|---|
DetachedCriteriaTransformer(org.codehaus.groovy.control.SourceUnit sourceUnit) |
| Type Params | Return Type | Name and description |
|---|---|---|
|
protected org.codehaus.groovy.ast.ClassNode |
getParameterizedDetachedCriteriaClassNode(org.codehaus.groovy.ast.ClassNode classNode) |
|
protected org.codehaus.groovy.control.SourceUnit |
getSourceUnit() |
|
public void |
transformClosureExpression(org.codehaus.groovy.ast.ClassNode classNode, org.codehaus.groovy.ast.expr.ClosureExpression closureExpression) |
|
public void |
visitBinaryExpression(org.codehaus.groovy.ast.expr.BinaryExpression expression)Handles re-assignment of variables to domain class where queries. |
|
public void |
visitClass(org.codehaus.groovy.ast.ClassNode node) |
|
public void |
visitDeclarationExpression(org.codehaus.groovy.ast.expr.DeclarationExpression expression) |
|
public void |
visitField(org.codehaus.groovy.ast.FieldNode node) |
|
public void |
visitMethod(org.codehaus.groovy.ast.MethodNode node) |
|
public void |
visitMethodCallExpression(org.codehaus.groovy.ast.expr.MethodCallExpression call) |
|
public void |
visitStaticMethodCallExpression(org.codehaus.groovy.ast.expr.StaticMethodCallExpression call) |
| Methods inherited from class | Name |
|---|---|
class org.codehaus.groovy.ast.ClassCodeVisitorSupport |
org.codehaus.groovy.ast.ClassCodeVisitorSupport#addError(java.lang.String, org.codehaus.groovy.ast.ASTNode), org.codehaus.groovy.ast.ClassCodeVisitorSupport#equals(java.lang.Object), org.codehaus.groovy.ast.ClassCodeVisitorSupport#getClass(), org.codehaus.groovy.ast.ClassCodeVisitorSupport#hashCode(), org.codehaus.groovy.ast.ClassCodeVisitorSupport#notify(), org.codehaus.groovy.ast.ClassCodeVisitorSupport#notifyAll(), org.codehaus.groovy.ast.ClassCodeVisitorSupport#toString(), org.codehaus.groovy.ast.ClassCodeVisitorSupport#visit(org.codehaus.groovy.ast.expr.Expression), org.codehaus.groovy.ast.ClassCodeVisitorSupport#visit(org.codehaus.groovy.ast.stmt.Statement), org.codehaus.groovy.ast.ClassCodeVisitorSupport#visitAnnotations(org.codehaus.groovy.ast.AnnotatedNode), org.codehaus.groovy.ast.ClassCodeVisitorSupport#visitArgumentlistExpression(org.codehaus.groovy.ast.expr.ArgumentListExpression), org.codehaus.groovy.ast.ClassCodeVisitorSupport#visitArrayExpression(org.codehaus.groovy.ast.expr.ArrayExpression), org.codehaus.groovy.ast.ClassCodeVisitorSupport#visitAssertStatement(org.codehaus.groovy.ast.stmt.AssertStatement), org.codehaus.groovy.ast.ClassCodeVisitorSupport#visitAttributeExpression(org.codehaus.groovy.ast.expr.AttributeExpression), org.codehaus.groovy.ast.ClassCodeVisitorSupport#visitBinaryExpression(org.codehaus.groovy.ast.expr.BinaryExpression), org.codehaus.groovy.ast.ClassCodeVisitorSupport#visitBitwiseNegationExpression(org.codehaus.groovy.ast.expr.BitwiseNegationExpression), org.codehaus.groovy.ast.ClassCodeVisitorSupport#visitBlockStatement(org.codehaus.groovy.ast.stmt.BlockStatement), org.codehaus.groovy.ast.ClassCodeVisitorSupport#visitBooleanExpression(org.codehaus.groovy.ast.expr.BooleanExpression), org.codehaus.groovy.ast.ClassCodeVisitorSupport#visitBreakStatement(org.codehaus.groovy.ast.stmt.BreakStatement), org.codehaus.groovy.ast.ClassCodeVisitorSupport#visitBytecodeExpression(org.codehaus.groovy.classgen.BytecodeExpression), org.codehaus.groovy.ast.ClassCodeVisitorSupport#visitCaseStatement(org.codehaus.groovy.ast.stmt.CaseStatement), org.codehaus.groovy.ast.ClassCodeVisitorSupport#visitCastExpression(org.codehaus.groovy.ast.expr.CastExpression), org.codehaus.groovy.ast.ClassCodeVisitorSupport#visitCatchStatement(org.codehaus.groovy.ast.stmt.CatchStatement), org.codehaus.groovy.ast.ClassCodeVisitorSupport#visitClass(org.codehaus.groovy.ast.ClassNode), org.codehaus.groovy.ast.ClassCodeVisitorSupport#visitClassExpression(org.codehaus.groovy.ast.expr.ClassExpression), org.codehaus.groovy.ast.ClassCodeVisitorSupport#visitClosureExpression(org.codehaus.groovy.ast.expr.ClosureExpression), org.codehaus.groovy.ast.ClassCodeVisitorSupport#visitClosureListExpression(org.codehaus.groovy.ast.expr.ClosureListExpression), org.codehaus.groovy.ast.ClassCodeVisitorSupport#visitConstantExpression(org.codehaus.groovy.ast.expr.ConstantExpression), org.codehaus.groovy.ast.ClassCodeVisitorSupport#visitConstructor(org.codehaus.groovy.ast.ConstructorNode), org.codehaus.groovy.ast.ClassCodeVisitorSupport#visitConstructorCallExpression(org.codehaus.groovy.ast.expr.ConstructorCallExpression), org.codehaus.groovy.ast.ClassCodeVisitorSupport#visitContinueStatement(org.codehaus.groovy.ast.stmt.ContinueStatement), org.codehaus.groovy.ast.ClassCodeVisitorSupport#visitDeclarationExpression(org.codehaus.groovy.ast.expr.DeclarationExpression), org.codehaus.groovy.ast.ClassCodeVisitorSupport#visitDoWhileLoop(org.codehaus.groovy.ast.stmt.DoWhileStatement), org.codehaus.groovy.ast.ClassCodeVisitorSupport#visitEmptyExpression(org.codehaus.groovy.ast.expr.EmptyExpression), org.codehaus.groovy.ast.ClassCodeVisitorSupport#visitEmptyStatement(org.codehaus.groovy.ast.stmt.EmptyStatement), org.codehaus.groovy.ast.ClassCodeVisitorSupport#visitExpressionStatement(org.codehaus.groovy.ast.stmt.ExpressionStatement), org.codehaus.groovy.ast.ClassCodeVisitorSupport#visitField(org.codehaus.groovy.ast.FieldNode), org.codehaus.groovy.ast.ClassCodeVisitorSupport#visitFieldExpression(org.codehaus.groovy.ast.expr.FieldExpression), org.codehaus.groovy.ast.ClassCodeVisitorSupport#visitForLoop(org.codehaus.groovy.ast.stmt.ForStatement), org.codehaus.groovy.ast.ClassCodeVisitorSupport#visitGStringExpression(org.codehaus.groovy.ast.expr.GStringExpression), org.codehaus.groovy.ast.ClassCodeVisitorSupport#visitIfElse(org.codehaus.groovy.ast.stmt.IfStatement), org.codehaus.groovy.ast.ClassCodeVisitorSupport#visitImports(org.codehaus.groovy.ast.ModuleNode), org.codehaus.groovy.ast.ClassCodeVisitorSupport#visitLambdaExpression(org.codehaus.groovy.ast.expr.LambdaExpression), org.codehaus.groovy.ast.ClassCodeVisitorSupport#visitListExpression(org.codehaus.groovy.ast.expr.ListExpression), org.codehaus.groovy.ast.ClassCodeVisitorSupport#visitListOfExpressions(java.util.List), org.codehaus.groovy.ast.ClassCodeVisitorSupport#visitMapEntryExpression(org.codehaus.groovy.ast.expr.MapEntryExpression), org.codehaus.groovy.ast.ClassCodeVisitorSupport#visitMapExpression(org.codehaus.groovy.ast.expr.MapExpression), org.codehaus.groovy.ast.ClassCodeVisitorSupport#visitMethod(org.codehaus.groovy.ast.MethodNode), org.codehaus.groovy.ast.ClassCodeVisitorSupport#visitMethodCallExpression(org.codehaus.groovy.ast.expr.MethodCallExpression), org.codehaus.groovy.ast.ClassCodeVisitorSupport#visitMethodPointerExpression(org.codehaus.groovy.ast.expr.MethodPointerExpression), org.codehaus.groovy.ast.ClassCodeVisitorSupport#visitMethodReferenceExpression(org.codehaus.groovy.ast.expr.MethodReferenceExpression), org.codehaus.groovy.ast.ClassCodeVisitorSupport#visitNotExpression(org.codehaus.groovy.ast.expr.NotExpression), org.codehaus.groovy.ast.ClassCodeVisitorSupport#visitPackage(org.codehaus.groovy.ast.PackageNode), org.codehaus.groovy.ast.ClassCodeVisitorSupport#visitPostfixExpression(org.codehaus.groovy.ast.expr.PostfixExpression), org.codehaus.groovy.ast.ClassCodeVisitorSupport#visitPrefixExpression(org.codehaus.groovy.ast.expr.PrefixExpression), org.codehaus.groovy.ast.ClassCodeVisitorSupport#visitProperty(org.codehaus.groovy.ast.PropertyNode), org.codehaus.groovy.ast.ClassCodeVisitorSupport#visitPropertyExpression(org.codehaus.groovy.ast.expr.PropertyExpression), org.codehaus.groovy.ast.ClassCodeVisitorSupport#visitRangeExpression(org.codehaus.groovy.ast.expr.RangeExpression), org.codehaus.groovy.ast.ClassCodeVisitorSupport#visitReturnStatement(org.codehaus.groovy.ast.stmt.ReturnStatement), org.codehaus.groovy.ast.ClassCodeVisitorSupport#visitShortTernaryExpression(org.codehaus.groovy.ast.expr.ElvisOperatorExpression), org.codehaus.groovy.ast.ClassCodeVisitorSupport#visitSpreadExpression(org.codehaus.groovy.ast.expr.SpreadExpression), org.codehaus.groovy.ast.ClassCodeVisitorSupport#visitSpreadMapExpression(org.codehaus.groovy.ast.expr.SpreadMapExpression), org.codehaus.groovy.ast.ClassCodeVisitorSupport#visitStaticMethodCallExpression(org.codehaus.groovy.ast.expr.StaticMethodCallExpression), org.codehaus.groovy.ast.ClassCodeVisitorSupport#visitSwitch(org.codehaus.groovy.ast.stmt.SwitchStatement), org.codehaus.groovy.ast.ClassCodeVisitorSupport#visitSynchronizedStatement(org.codehaus.groovy.ast.stmt.SynchronizedStatement), org.codehaus.groovy.ast.ClassCodeVisitorSupport#visitTernaryExpression(org.codehaus.groovy.ast.expr.TernaryExpression), org.codehaus.groovy.ast.ClassCodeVisitorSupport#visitThrowStatement(org.codehaus.groovy.ast.stmt.ThrowStatement), org.codehaus.groovy.ast.ClassCodeVisitorSupport#visitTryCatchFinally(org.codehaus.groovy.ast.stmt.TryCatchStatement), org.codehaus.groovy.ast.ClassCodeVisitorSupport#visitTupleExpression(org.codehaus.groovy.ast.expr.TupleExpression), org.codehaus.groovy.ast.ClassCodeVisitorSupport#visitUnaryMinusExpression(org.codehaus.groovy.ast.expr.UnaryMinusExpression), org.codehaus.groovy.ast.ClassCodeVisitorSupport#visitUnaryPlusExpression(org.codehaus.groovy.ast.expr.UnaryPlusExpression), org.codehaus.groovy.ast.ClassCodeVisitorSupport#visitVariableExpression(org.codehaus.groovy.ast.expr.VariableExpression), org.codehaus.groovy.ast.ClassCodeVisitorSupport#visitWhileLoop(org.codehaus.groovy.ast.stmt.WhileStatement), org.codehaus.groovy.ast.ClassCodeVisitorSupport#wait(), org.codehaus.groovy.ast.ClassCodeVisitorSupport#wait(long), org.codehaus.groovy.ast.ClassCodeVisitorSupport#wait(long, int) |
Handles re-assignment of variables to domain class where queries.
For example: zoneQuery = ComputeZone.where { field == value }
This ensures that the variable is tracked in detachedCriteriaVariables
so that subsequent zoneQuery.where { ... } calls have their closures
properly transformed.
Without this, only declarations (def query = Domain.where { ... }) are tracked,
and re-assignments inside if/else blocks are silently ignored.