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

public Class MemoizedASTTransformation

extends AbstractASTTransformation
Class Inheritance
Annotations
@GroovyASTTransformation
phase:SEMANTIC_ANALYSIS
Imports
groovy.transform.Memoized, org.codehaus.groovy.ast.ASTNode, .AnnotatedNode, .AnnotationNode, .ClassHelper, .ClassNode, .FieldNode, .InnerClassNode, .MethodNode, .Parameter, org.codehaus.groovy.ast.expr.ClosureExpression, .Expression, .MethodCallExpression, org.codehaus.groovy.ast.stmt.BlockStatement, .Statement, org.codehaus.groovy.classgen.VariableScopeVisitor, org.codehaus.groovy.control.CompilePhase, .SourceUnit, java.util.ArrayList, .List

Handles generation of code for the Memoized annotation.

Field Summary

Modifier and TypeField and Description
private static final String
private static final String
private static final String
private static final String
private static final String
private static final String
private static final String
private static final String
private static final Class<Memoized>
private static final ClassNode
private static final String
private static final ClassNode
private static final String
Inherited from org.codehaus.groovy.transform.AbstractASTTransformation:
RETENTION_CLASSNODEsourceUnit

Constructor Summary

AccessConstructor and Description
public

Method Summary

Modifier and TypeMethod and Description
private static MethodNode
buildDelegatingMethod(final MethodNode annotatedMethod, final ClassNode ownerClassNode)

private static MethodCallExpression
buildMemoizeClosureCallExpression(MethodNode privateMethod, int protectedCacheSize, int maxCacheSize)

private static String
private static String
buildUniqueName(ClassNode owner, String ident, MethodNode methodNode)

private static List<AnnotationNode>
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
,
final 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.
Inherited from org.codehaus.groovy.transform.AbstractASTTransformation:
addErrorcheckIncludeExcludecheckIncludeExcludecheckIncludeExcludeUndefinedAwarecheckIncludeExcludeUndefinedAwarecheckNotInterfacecheckPropertyListcheckPropertyListcheckPropertyListcopyAnnotatedNodeAnnotationscopyAnnotatedNodeAnnotationsdeemedInternalNamegetAnnotationNamegetClassListgetMemberClassListgetMemberClassValuegetMemberClassValuegetMemberIntValuegetMemberListgetMemberStringListgetMemberStringValuegetMemberStringValuegetMemberValuehasAnnotationinitmemberHasValuenonGenericshouldSkipshouldSkipshouldSkipOnDescriptorshouldSkipOnDescriptorUndefinedAwareshouldSkipUndefinedAwareshouldSkipUndefinedAwaretokenize

Field Detail

CLOSURE_CALL_METHOD_NAMEback to summary
private static final String CLOSURE_CALL_METHOD_NAME
CLOSURE_LABELback to summary
private static final String CLOSURE_LABEL
MAX_CACHE_SIZE_NAMEback to summary
private static final String MAX_CACHE_SIZE_NAME
MEMOIZE_AT_LEAST_METHOD_NAMEback to summary
private static final String MEMOIZE_AT_LEAST_METHOD_NAME
MEMOIZE_AT_MOST_METHOD_NAMEback to summary
private static final String MEMOIZE_AT_MOST_METHOD_NAME
MEMOIZE_BETWEEN_METHOD_NAMEback to summary
private static final String MEMOIZE_BETWEEN_METHOD_NAME
MEMOIZE_METHOD_NAMEback to summary
private static final String MEMOIZE_METHOD_NAME
METHOD_LABELback to summary
private static final String METHOD_LABEL
MY_CLASSback to summary
private static final Class<Memoized> MY_CLASS
MY_TYPEback to summary
private static final ClassNode MY_TYPE
MY_TYPE_NAMEback to summary
private static final String MY_TYPE_NAME
OVERRIDE_CLASSNODEback to summary
private static final ClassNode OVERRIDE_CLASSNODE
PROTECTED_CACHE_SIZE_NAMEback to summary
private static final String PROTECTED_CACHE_SIZE_NAME

Constructor Detail

MemoizedASTTransformationback to summary
public MemoizedASTTransformation()

Method Detail

buildDelegatingMethodback to summary
private static MethodNode buildDelegatingMethod(final MethodNode annotatedMethod, final ClassNode ownerClassNode)
buildMemoizeClosureCallExpressionback to summary
private static MethodCallExpression buildMemoizeClosureCallExpression(MethodNode privateMethod, int protectedCacheSize, int maxCacheSize)
buildTypeNameback to summary
private static String buildTypeName(ClassNode type)
buildUniqueNameback to summary
private static String buildUniqueName(ClassNode owner, String ident, MethodNode methodNode)
filterAnnotationsback to summary
private static List<AnnotationNode> filterAnnotations(List<AnnotationNode> annotations)
visitback to summary
public void visit(ASTNode[] nodes, final 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.