Top Description Fields Constructors Methods
org.codehaus.groovy.transform

public Class LazyASTTransformation

extends AbstractASTTransformation
Class Inheritance
Annotations
@GroovyASTTransformation
phase:SEMANTIC_ANALYSIS
Imports
org.codehaus.groovy.ast.ASTNode, .AnnotatedNode, .AnnotationNode, .ClassHelper, .ClassNode, .FieldNode, .InnerClassNode, .Parameter, .PropertyNode, org.codehaus.groovy.ast.expr.ConstantExpression, .EmptyExpression, .Expression, .MethodCallExpression, .VariableExpression, org.codehaus.groovy.ast.stmt.BlockStatement, .Statement, .SynchronizedStatement, org.codehaus.groovy.control.CompilePhase, .SourceUnit, java.lang.ref.SoftReference

Handles generation of code for the @Lazy annotation

Field Summary

Modifier and TypeField and Description
private static final ClassNode
Inherited from org.codehaus.groovy.transform.AbstractASTTransformation:
RETENTION_CLASSNODEsourceUnit

Constructor Summary

AccessConstructor and Description
public

Method Summary

Modifier and TypeMethod and Description
private static void
private static void
private static void
private static void
private static void
create(FieldNode fieldNode, final Expression initExpr)

private static void
createSoft(FieldNode fieldNode, Expression initExpr)

private static void
createSoftGetter(FieldNode fieldNode, Expression initExpr, ClassNode type)

private static void
private static Expression
private static Expression
syncTarget(FieldNode fieldNode)

public void
visit(ASTNode[]
The ASTnodes when the call was triggered. Element 0 is the AnnotationNode that triggered this annotation to be activated. Element 1 is the AnnotatedNode decorated, such as a MethodNode or ClassNode. For global transformations it is usually safe to ignore this parameter.
nodes
,
SourceUnit
The source unit being compiled. The source unit may contain several classes. For global transformations, information about the AST can be retrieved from this object.
source
)

Implements org.codehaus.groovy.transform.ASTTransformation.visit.

The method is invoked when an AST Transformation is active.
pack-priv static void
Inherited from org.codehaus.groovy.transform.AbstractASTTransformation:
addErrorcheckIncludeExcludecheckIncludeExcludecheckIncludeExcludeUndefinedAwarecheckIncludeExcludeUndefinedAwarecheckNotInterfacecheckPropertyListcheckPropertyListcheckPropertyListcopyAnnotatedNodeAnnotationscopyAnnotatedNodeAnnotationsdeemedInternalNamegetAnnotationNamegetClassListgetMemberClassListgetMemberClassValuegetMemberClassValuegetMemberIntValuegetMemberListgetMemberStringListgetMemberStringValuegetMemberStringValuegetMemberValuehasAnnotationinitmemberHasValuenonGenericshouldSkipshouldSkipshouldSkipOnDescriptorshouldSkipOnDescriptorUndefinedAwareshouldSkipUndefinedAwareshouldSkipUndefinedAwaretokenize

Field Detail

SOFT_REFback to summary
private static final ClassNode SOFT_REF

Constructor Detail

LazyASTTransformationback to summary
public LazyASTTransformation()

Method Detail

addDoubleCheckedLockingBodyback to summary
private static void addDoubleCheckedLockingBody(BlockStatement body, FieldNode fieldNode, Expression initExpr)
addHolderClassIdiomBodyback to summary
private static void addHolderClassIdiomBody(BlockStatement body, FieldNode fieldNode, Expression initExpr)
addMethodback to summary
private static void addMethod(FieldNode fieldNode, BlockStatement body, ClassNode type)
addNonThreadSafeBodyback to summary
private static void addNonThreadSafeBody(BlockStatement body, FieldNode fieldNode, Expression initExpr)
createback to summary
private static void create(FieldNode fieldNode, final Expression initExpr)
createSoftback to summary
private static void createSoft(FieldNode fieldNode, Expression initExpr)
createSoftGetterback to summary
private static void createSoftGetter(FieldNode fieldNode, Expression initExpr, ClassNode type)
createSoftSetterback to summary
private static void createSoftSetter(FieldNode fieldNode, ClassNode type)
getInitExprback to summary
private static Expression getInitExpr(ErrorCollecting xform, FieldNode fieldNode)
syncTargetback to summary
private static Expression syncTarget(FieldNode fieldNode)
visitback to summary
public void visit(ASTNode[] nodes, SourceUnit source)

Implements org.codehaus.groovy.transform.ASTTransformation.visit.

Doc from org.codehaus.groovy.transform.ASTTransformation.visit.

The method is invoked when an AST Transformation is active. For local transformations, it is invoked once each time the local annotation is encountered. For global transformations, it is invoked once for every source unit, which is typically a source file.

Parameters
nodes:ASTNode[]

The ASTnodes when the call was triggered. Element 0 is the AnnotationNode that triggered this annotation to be activated. Element 1 is the AnnotatedNode decorated, such as a MethodNode or ClassNode. For global transformations it is usually safe to ignore this parameter.

source:SourceUnit

The source unit being compiled. The source unit may contain several classes. For global transformations, information about the AST can be retrieved from this object.

visitFieldback to summary
pack-priv static void visitField(ErrorCollecting xform, AnnotationNode node, FieldNode fieldNode)