Package org.codehaus.groovy.ast.tools
Class GeneralUtils
- java.lang.Object
-
- org.codehaus.groovy.ast.tools.GeneralUtils
-
public class GeneralUtils extends java.lang.Object
Handy methods when working with the Groovy AST
-
-
Constructor Summary
Constructors Constructor Description GeneralUtils()
-
Method Summary
All Methods Static Methods Concrete Methods Deprecated Methods Modifier and Type Method Description static BinaryExpression
andX(Expression lhv, Expression rhv)
static ArgumentListExpression
args(java.lang.String... names)
static ArgumentListExpression
args(java.util.List<Expression> expressions)
static ArgumentListExpression
args(Expression... expressions)
static ArgumentListExpression
args(Parameter[] parameters)
static Statement
assignS(Expression target, Expression value)
static Expression
assignX(Expression target, Expression value)
static Expression
attrX(Expression oe, Expression prop)
static BinaryExpression
binX(Expression left, Token token, Expression right)
static BlockStatement
block(Statement... stmts)
static BlockStatement
block(VariableScope varScope, java.util.List<Statement> stmts)
static BlockStatement
block(VariableScope varScope, Statement... stmts)
static BooleanExpression
boolX(Expression boolExpr)
static MethodCallExpression
callSuperX(java.lang.String methodName)
static MethodCallExpression
callSuperX(java.lang.String methodName, Expression args)
static MethodCallExpression
callThisX(java.lang.String methodName)
static MethodCallExpression
callThisX(java.lang.String methodName, Expression args)
static StaticMethodCallExpression
callX(ClassNode receiver, java.lang.String methodName)
static StaticMethodCallExpression
callX(ClassNode receiver, java.lang.String methodName, Expression args)
static MethodCallExpression
callX(Expression receiver, java.lang.String methodName)
static MethodCallExpression
callX(Expression receiver, java.lang.String methodName, Expression args)
static MethodCallExpression
callX(Expression receiver, Expression method, Expression args)
static CastExpression
castX(ClassNode type, Expression expression)
static CastExpression
castX(ClassNode type, Expression expression, boolean ignoreAutoboxing)
static CatchStatement
catchS(Parameter variable, Statement code)
static ListExpression
classList2args(java.util.List<java.lang.String> args)
static ClassExpression
classX(java.lang.Class clazz)
static ClassExpression
classX(ClassNode clazz)
static Parameter[]
cloneParams(Parameter[] source)
static ClosureExpression
closureX(Parameter[] params, Statement code)
static ClosureExpression
closureX(Statement code)
static BinaryExpression
cmpX(Expression lhv, Expression rhv)
Build a binary expression that compares two valuesstatic ConstantExpression
constX(java.lang.Object val)
static ConstantExpression
constX(java.lang.Object val, boolean keepPrimitive)
static java.lang.String
convertASTToSource(ReaderSource readerSource, ASTNode expression)
Converts an expression into the String source.static void
copyAnnotatedNodeAnnotations(AnnotatedNode annotatedNode, java.util.List<AnnotationNode> copied, java.util.List<AnnotationNode> notCopied)
Copies all candidateAnnotations with retention policyRetentionPolicy.RUNTIME
andRetentionPolicy.CLASS
.static boolean
copyStatementsWithSuperAdjustment(ClosureExpression pre, BlockStatement body)
static Statement
createConstructorStatementDefault(FieldNode fNode)
static Statement
ctorSuperS()
static Statement
ctorSuperS(Expression args)
static Statement
ctorThisS()
static Statement
ctorThisS(Expression args)
static ConstructorCallExpression
ctorX(ClassNode type)
static ConstructorCallExpression
ctorX(ClassNode type, Expression args)
static Statement
declS(Expression target, Expression init)
static MapEntryExpression
entryX(Expression key, Expression value)
static BooleanExpression
equalsNullX(Expression argExpr)
static BinaryExpression
eqX(Expression lhv, Expression rhv)
static FieldExpression
fieldX(ClassNode owner, java.lang.String fieldName)
static FieldExpression
fieldX(FieldNode fieldNode)
static Expression
findArg(java.lang.String argName)
static java.util.List<MethodNode>
getAllMethods(ClassNode type)
static java.util.List<PropertyNode>
getAllProperties(java.util.Set<java.lang.String> names, ClassNode cNode, boolean includeProperties, boolean includeFields, boolean includePseudoGetters, boolean includePseudoSetters, boolean traverseSuperClasses, boolean skipReadonly)
static java.util.List<PropertyNode>
getAllProperties(java.util.Set<java.lang.String> names, ClassNode origType, ClassNode cNode, boolean includeProperties, boolean includeFields, boolean includePseudoGetters, boolean includePseudoSetters, boolean traverseSuperClasses, boolean skipReadonly)
static java.util.List<PropertyNode>
getAllProperties(java.util.Set<java.lang.String> names, ClassNode origType, ClassNode cNode, boolean includeProperties, boolean includeFields, boolean includePseudoGetters, boolean includePseudoSetters, boolean traverseSuperClasses, boolean skipReadonly, boolean reverse, boolean allNames, boolean includeStatic)
static java.util.List<PropertyNode>
getAllProperties(ClassNode type)
static java.lang.String
getGetterName(PropertyNode pNode)
static java.util.List<java.lang.String>
getInstanceNonPropertyFieldNames(ClassNode cNode)
static java.util.List<FieldNode>
getInstanceNonPropertyFields(ClassNode cNode)
static java.util.List<PropertyNode>
getInstanceProperties(ClassNode cNode)
static java.util.List<FieldNode>
getInstancePropertyFields(ClassNode cNode)
static java.util.List<java.lang.String>
getInstancePropertyNames(ClassNode cNode)
static java.util.Set<ClassNode>
getInterfacesAndSuperInterfaces(ClassNode type)
static java.lang.String
getSetterName(java.lang.String name)
static java.util.List<FieldNode>
getSuperNonPropertyFields(ClassNode cNode)
static java.util.List<FieldNode>
getSuperPropertyFields(ClassNode cNode)
static Expression
getterThisX(ClassNode annotatedNode, PropertyNode pNode)
This method is similar topropX(Expression, Expression)
but will make sure that if the property being accessed is defined inside the classnode provided as a parameter, then a getter call is generated instead of a field access.static Expression
getterX(ClassNode annotatedNode, Expression receiver, PropertyNode pNode)
This method is similar topropX(Expression, Expression)
but will make sure that if the property being accessed is defined inside the classnode provided as a parameter, then a getter call is generated instead of a field access.static BinaryExpression
hasClassX(Expression instance, ClassNode cNode)
static boolean
hasDeclaredMethod(ClassNode cNode, java.lang.String name, int argsCount)
static BinaryExpression
hasEqualFieldX(FieldNode fNode, Expression other)
static BinaryExpression
hasEqualPropertyX(ClassNode annotatedNode, PropertyNode pNode, VariableExpression other)
static BinaryExpression
hasEqualPropertyX(PropertyNode pNode, Expression other)
Deprecated.static BooleanExpression
hasSameFieldX(FieldNode fNode, Expression other)
static BooleanExpression
hasSamePropertyX(PropertyNode pNode, Expression other)
static Statement
ifElseS(Expression cond, Statement thenStmt, Statement elseStmt)
static Statement
ifS(Expression cond, Expression trueExpr)
static Statement
ifS(Expression cond, Statement trueStmt)
static Expression
indexX(Expression target, Expression value)
static boolean
inSamePackage(java.lang.Class first, java.lang.Class second)
static boolean
inSamePackage(ClassNode first, ClassNode second)
static boolean
isDefaultVisibility(int modifiers)
static BooleanExpression
isInstanceOfX(Expression objectExpression, ClassNode cNode)
static BooleanExpression
isOneX(Expression expr)
static boolean
isOrImplements(ClassNode type, ClassNode interfaceType)
static BooleanExpression
isTrueX(Expression argExpr)
static BooleanExpression
isZeroX(Expression expr)
static ListExpression
list2args(java.util.List args)
static ListExpression
listX(java.util.List<Expression> args)
static VariableExpression
localVarX(java.lang.String name)
static BinaryExpression
ltX(Expression lhv, Expression rhv)
static java.lang.String
makeDescriptorWithoutReturnType(MethodNode mn)
Deprecated.use MethodNodeUtils#methodDescriptorWithoutReturnType(MethodNode) insteadstatic MapExpression
mapX(java.util.List<MapEntryExpression> expressions)
static BinaryExpression
neX(Expression lhv, Expression rhv)
static BooleanExpression
notNullX(Expression argExpr)
static NotExpression
notX(Expression expr)
static BinaryExpression
orX(Expression lhv, Expression rhv)
static Parameter
param(ClassNode type, java.lang.String name)
static Parameter
param(ClassNode type, java.lang.String name, Expression initialExpression)
static Parameter[]
params(Parameter... params)
static BinaryExpression
plusX(Expression lhv, Expression rhv)
static Expression
propX(Expression owner, java.lang.String property)
static Expression
propX(Expression owner, Expression property)
static Statement
returnS(Expression expr)
static Statement
safeExpression(Expression fieldExpr, Expression expression)
static BooleanExpression
sameX(Expression self, Expression other)
static Statement
stmt(Expression expr)
static TernaryExpression
ternaryX(Expression cond, Expression trueExpr, Expression elseExpr)
static ThrowStatement
throwS(Expression expr)
static VariableExpression
varX(java.lang.String name)
static VariableExpression
varX(java.lang.String name, ClassNode type)
static VariableExpression
varX(Variable variable)
-
-
-
Method Detail
-
andX
public static BinaryExpression andX(Expression lhv, Expression rhv)
-
args
public static ArgumentListExpression args(Expression... expressions)
-
args
public static ArgumentListExpression args(java.util.List<Expression> expressions)
-
args
public static ArgumentListExpression args(Parameter[] parameters)
-
args
public static ArgumentListExpression args(java.lang.String... names)
-
assignS
public static Statement assignS(Expression target, Expression value)
-
assignX
public static Expression assignX(Expression target, Expression value)
-
attrX
public static Expression attrX(Expression oe, Expression prop)
-
binX
public static BinaryExpression binX(Expression left, Token token, Expression right)
-
block
public static BlockStatement block(VariableScope varScope, Statement... stmts)
-
block
public static BlockStatement block(VariableScope varScope, java.util.List<Statement> stmts)
-
block
public static BlockStatement block(Statement... stmts)
-
callSuperX
public static MethodCallExpression callSuperX(java.lang.String methodName, Expression args)
-
callSuperX
public static MethodCallExpression callSuperX(java.lang.String methodName)
-
callThisX
public static MethodCallExpression callThisX(java.lang.String methodName, Expression args)
-
callThisX
public static MethodCallExpression callThisX(java.lang.String methodName)
-
callX
public static MethodCallExpression callX(Expression receiver, java.lang.String methodName, Expression args)
-
callX
public static MethodCallExpression callX(Expression receiver, Expression method, Expression args)
-
callX
public static MethodCallExpression callX(Expression receiver, java.lang.String methodName)
-
callX
public static StaticMethodCallExpression callX(ClassNode receiver, java.lang.String methodName, Expression args)
-
callX
public static StaticMethodCallExpression callX(ClassNode receiver, java.lang.String methodName)
-
castX
public static CastExpression castX(ClassNode type, Expression expression)
-
boolX
public static BooleanExpression boolX(Expression boolExpr)
-
castX
public static CastExpression castX(ClassNode type, Expression expression, boolean ignoreAutoboxing)
-
classX
public static ClassExpression classX(ClassNode clazz)
-
classX
public static ClassExpression classX(java.lang.Class clazz)
-
closureX
public static ClosureExpression closureX(Parameter[] params, Statement code)
-
closureX
public static ClosureExpression closureX(Statement code)
-
cmpX
public static BinaryExpression cmpX(Expression lhv, Expression rhv)
Build a binary expression that compares two values- Parameters:
lhv
- expression for the value to compare fromrhv
- expression for the value value to compare to- Returns:
- the expression comparing two values
-
constX
public static ConstantExpression constX(java.lang.Object val)
-
constX
public static ConstantExpression constX(java.lang.Object val, boolean keepPrimitive)
-
copyAnnotatedNodeAnnotations
public static void copyAnnotatedNodeAnnotations(AnnotatedNode annotatedNode, java.util.List<AnnotationNode> copied, java.util.List<AnnotationNode> notCopied)
Copies all candidateAnnotations with retention policyRetentionPolicy.RUNTIME
andRetentionPolicy.CLASS
.Annotations with
GeneratedClosure
members are not supported at present.
-
createConstructorStatementDefault
public static Statement createConstructorStatementDefault(FieldNode fNode)
-
ctorX
public static ConstructorCallExpression ctorX(ClassNode type, Expression args)
-
ctorX
public static ConstructorCallExpression ctorX(ClassNode type)
-
ctorSuperS
public static Statement ctorSuperS(Expression args)
-
ctorThisS
public static Statement ctorThisS(Expression args)
-
ctorSuperS
public static Statement ctorSuperS()
-
ctorThisS
public static Statement ctorThisS()
-
declS
public static Statement declS(Expression target, Expression init)
-
eqX
public static BinaryExpression eqX(Expression lhv, Expression rhv)
-
equalsNullX
public static BooleanExpression equalsNullX(Expression argExpr)
-
fieldX
public static FieldExpression fieldX(FieldNode fieldNode)
-
fieldX
public static FieldExpression fieldX(ClassNode owner, java.lang.String fieldName)
-
findArg
public static Expression findArg(java.lang.String argName)
-
getAllMethods
public static java.util.List<MethodNode> getAllMethods(ClassNode type)
-
getAllProperties
public static java.util.List<PropertyNode> getAllProperties(ClassNode type)
-
getGetterName
public static java.lang.String getGetterName(PropertyNode pNode)
-
getInstanceNonPropertyFields
public static java.util.List<FieldNode> getInstanceNonPropertyFields(ClassNode cNode)
-
getInstanceNonPropertyFieldNames
public static java.util.List<java.lang.String> getInstanceNonPropertyFieldNames(ClassNode cNode)
-
getInstanceProperties
public static java.util.List<PropertyNode> getInstanceProperties(ClassNode cNode)
-
getInstancePropertyNames
public static java.util.List<java.lang.String> getInstancePropertyNames(ClassNode cNode)
-
getInstancePropertyFields
public static java.util.List<FieldNode> getInstancePropertyFields(ClassNode cNode)
-
getInterfacesAndSuperInterfaces
public static java.util.Set<ClassNode> getInterfacesAndSuperInterfaces(ClassNode type)
-
getSuperNonPropertyFields
public static java.util.List<FieldNode> getSuperNonPropertyFields(ClassNode cNode)
-
getSuperPropertyFields
public static java.util.List<FieldNode> getSuperPropertyFields(ClassNode cNode)
-
getAllProperties
public static java.util.List<PropertyNode> getAllProperties(java.util.Set<java.lang.String> names, ClassNode cNode, boolean includeProperties, boolean includeFields, boolean includePseudoGetters, boolean includePseudoSetters, boolean traverseSuperClasses, boolean skipReadonly)
-
getAllProperties
public static java.util.List<PropertyNode> getAllProperties(java.util.Set<java.lang.String> names, ClassNode origType, ClassNode cNode, boolean includeProperties, boolean includeFields, boolean includePseudoGetters, boolean includePseudoSetters, boolean traverseSuperClasses, boolean skipReadonly)
-
getAllProperties
public static java.util.List<PropertyNode> getAllProperties(java.util.Set<java.lang.String> names, ClassNode origType, ClassNode cNode, boolean includeProperties, boolean includeFields, boolean includePseudoGetters, boolean includePseudoSetters, boolean traverseSuperClasses, boolean skipReadonly, boolean reverse, boolean allNames, boolean includeStatic)
-
hasClassX
public static BinaryExpression hasClassX(Expression instance, ClassNode cNode)
-
hasDeclaredMethod
public static boolean hasDeclaredMethod(ClassNode cNode, java.lang.String name, int argsCount)
-
hasEqualFieldX
public static BinaryExpression hasEqualFieldX(FieldNode fNode, Expression other)
-
hasEqualPropertyX
public static BinaryExpression hasEqualPropertyX(ClassNode annotatedNode, PropertyNode pNode, VariableExpression other)
-
hasEqualPropertyX
@Deprecated public static BinaryExpression hasEqualPropertyX(PropertyNode pNode, Expression other)
Deprecated.
-
hasSameFieldX
public static BooleanExpression hasSameFieldX(FieldNode fNode, Expression other)
-
hasSamePropertyX
public static BooleanExpression hasSamePropertyX(PropertyNode pNode, Expression other)
-
ifElseS
public static Statement ifElseS(Expression cond, Statement thenStmt, Statement elseStmt)
-
ifS
public static Statement ifS(Expression cond, Expression trueExpr)
-
ifS
public static Statement ifS(Expression cond, Statement trueStmt)
-
indexX
public static Expression indexX(Expression target, Expression value)
-
isInstanceOfX
public static BooleanExpression isInstanceOfX(Expression objectExpression, ClassNode cNode)
-
isOneX
public static BooleanExpression isOneX(Expression expr)
-
isTrueX
public static BooleanExpression isTrueX(Expression argExpr)
-
isZeroX
public static BooleanExpression isZeroX(Expression expr)
-
listX
public static ListExpression listX(java.util.List<Expression> args)
-
list2args
public static ListExpression list2args(java.util.List args)
-
classList2args
public static ListExpression classList2args(java.util.List<java.lang.String> args)
-
localVarX
public static VariableExpression localVarX(java.lang.String name)
-
ltX
public static BinaryExpression ltX(Expression lhv, Expression rhv)
-
mapX
public static MapExpression mapX(java.util.List<MapEntryExpression> expressions)
-
entryX
public static MapEntryExpression entryX(Expression key, Expression value)
-
makeDescriptorWithoutReturnType
@Deprecated public static java.lang.String makeDescriptorWithoutReturnType(MethodNode mn)
Deprecated.use MethodNodeUtils#methodDescriptorWithoutReturnType(MethodNode) instead
-
neX
public static BinaryExpression neX(Expression lhv, Expression rhv)
-
notNullX
public static BooleanExpression notNullX(Expression argExpr)
-
notX
public static NotExpression notX(Expression expr)
-
orX
public static BinaryExpression orX(Expression lhv, Expression rhv)
-
param
public static Parameter param(ClassNode type, java.lang.String name, Expression initialExpression)
-
plusX
public static BinaryExpression plusX(Expression lhv, Expression rhv)
-
propX
public static Expression propX(Expression owner, java.lang.String property)
-
propX
public static Expression propX(Expression owner, Expression property)
-
returnS
public static Statement returnS(Expression expr)
-
safeExpression
public static Statement safeExpression(Expression fieldExpr, Expression expression)
-
sameX
public static BooleanExpression sameX(Expression self, Expression other)
-
stmt
public static Statement stmt(Expression expr)
-
ternaryX
public static TernaryExpression ternaryX(Expression cond, Expression trueExpr, Expression elseExpr)
-
varX
public static VariableExpression varX(java.lang.String name)
-
varX
public static VariableExpression varX(Variable variable)
-
varX
public static VariableExpression varX(java.lang.String name, ClassNode type)
-
throwS
public static ThrowStatement throwS(Expression expr)
-
catchS
public static CatchStatement catchS(Parameter variable, Statement code)
-
getterThisX
public static Expression getterThisX(ClassNode annotatedNode, PropertyNode pNode)
This method is similar topropX(Expression, Expression)
but will make sure that if the property being accessed is defined inside the classnode provided as a parameter, then a getter call is generated instead of a field access.- Parameters:
annotatedNode
- the class node where the property node is accessed frompNode
- the property being accessed- Returns:
- a method call expression or a property expression
-
getterX
public static Expression getterX(ClassNode annotatedNode, Expression receiver, PropertyNode pNode)
This method is similar topropX(Expression, Expression)
but will make sure that if the property being accessed is defined inside the classnode provided as a parameter, then a getter call is generated instead of a field access.- Parameters:
annotatedNode
- the class node where the property node is accessed fromreceiver
- the object having the propertypNode
- the property being accessed- Returns:
- a method call expression or a property expression
-
convertASTToSource
public static java.lang.String convertASTToSource(ReaderSource readerSource, ASTNode expression) throws java.lang.Exception
Converts an expression into the String source. Only some specific expressions like closure expression support this.- Parameters:
readerSource
- a sourceexpression
- an expression. Can't be null- Returns:
- the source the closure was created from
- Throws:
java.lang.IllegalArgumentException
- when expression is nulljava.lang.Exception
- when closure can't be read from source
-
copyStatementsWithSuperAdjustment
public static boolean copyStatementsWithSuperAdjustment(ClosureExpression pre, BlockStatement body)
-
getSetterName
public static java.lang.String getSetterName(java.lang.String name)
-
isDefaultVisibility
public static boolean isDefaultVisibility(int modifiers)
-
inSamePackage
public static boolean inSamePackage(java.lang.Class first, java.lang.Class second)
-
-