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

public Class AutoCloneASTTransformation

extends AbstractASTTransformation
Class Inheritance
Annotations
@GroovyASTTransformation
phase:CANONICALIZATION
Imports
groovy.transform.AutoClone, .AutoCloneStyle, org.codehaus.groovy.ast.ASTNode, .AnnotatedNode, .AnnotationNode, .ClassHelper, .ClassNode, .ConstructorNode, .FieldNode, .Parameter, .VariableScope, org.codehaus.groovy.ast.expr.ClassExpression, .ClosureExpression, .Expression, .MethodCallExpression, .PropertyExpression, org.codehaus.groovy.ast.stmt.BlockStatement, .EmptyStatement, .Statement, org.codehaus.groovy.ast.tools.GenericsUtils, org.codehaus.groovy.classgen.VariableScopeVisitor, org.codehaus.groovy.control.CompilePhase, .SourceUnit, org.codehaus.groovy.runtime.InvokerHelper, java.io.ByteArrayInputStream, .ByteArrayOutputStream, .ObjectInputStream, .ObjectOutputStream, java.util.List

Handles generation of code for the @AutoClone annotation.

Field Summary

Modifier and TypeField and Description
private static final ClassNode
private static final ClassNode
private static final ClassNode
private static final ClassNode
pack-priv static final Class<T>
pack-priv static final ClassNode
pack-priv static final String
private static final ClassNode
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 Expression
private static Expression
private static void
createClone(ClassNode cNode, List<FieldNode> fieldNodes, List<String> excludes)

private static void
private void
private static void
createSimpleClone(ClassNode cNode, List<FieldNode> fieldNodes, List<String> excludes)

private static AutoCloneStyle
private static boolean
private static boolean
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.
Inherited from org.codehaus.groovy.transform.AbstractASTTransformation:
addErrorcheckIncludeExcludecheckIncludeExcludecheckIncludeExcludeUndefinedAwarecheckIncludeExcludeUndefinedAwarecheckNotInterfacecheckPropertyListcheckPropertyListcheckPropertyListcopyAnnotatedNodeAnnotationscopyAnnotatedNodeAnnotationsdeemedInternalNamegetAnnotationNamegetClassListgetMemberClassListgetMemberClassValuegetMemberClassValuegetMemberIntValuegetMemberListgetMemberStringListgetMemberStringValuegetMemberStringValuegetMemberValuehasAnnotationinitmemberHasValuenonGenericshouldSkipshouldSkipshouldSkipOnDescriptorshouldSkipOnDescriptorUndefinedAwareshouldSkipUndefinedAwareshouldSkipUndefinedAwaretokenize

Field Detail

BAIS_TYPEback to summary
private static final ClassNode BAIS_TYPE
BAOS_TYPEback to summary
private static final ClassNode BAOS_TYPE
CLONEABLE_TYPEback to summary
private static final ClassNode CLONEABLE_TYPE
INVOKER_TYPEback to summary
private static final ClassNode INVOKER_TYPE
MY_CLASSback to summary
pack-priv static final Class<T> MY_CLASS
MY_TYPEback to summary
pack-priv static final ClassNode MY_TYPE
MY_TYPE_NAMEback to summary
pack-priv static final String MY_TYPE_NAME
OIS_TYPEback to summary
private static final ClassNode OIS_TYPE
OOS_TYPEback to summary
private static final ClassNode OOS_TYPE

Constructor Detail

AutoCloneASTTransformationback to summary
public AutoCloneASTTransformation()

Method Detail

addSimpleCloneHelperMethodback to summary
private static void addSimpleCloneHelperMethod(ClassNode cNode, List<FieldNode> fieldNodes, List<String> excludes)
callCloneDirectXback to summary
private static Expression callCloneDirectX(Expression direct)
callCloneDynamicXback to summary
private static Expression callCloneDynamicX(Expression target)
createCloneback to summary
private static void createClone(ClassNode cNode, List<FieldNode> fieldNodes, List<String> excludes)
createCloneCopyConstructorback to summary
private static void createCloneCopyConstructor(ClassNode cNode, List<FieldNode> list, List<String> excludes)
createCloneSerializationback to summary
private void createCloneSerialization(ClassNode cNode)
createSimpleCloneback to summary
private static void createSimpleClone(ClassNode cNode, List<FieldNode> fieldNodes, List<String> excludes)
getStyleback to summary
private static AutoCloneStyle getStyle(AnnotationNode node, String name)
isCloneableTypeback to summary
private static boolean isCloneableType(ClassNode fieldType)
possiblyCloneableback to summary
private static boolean possiblyCloneable(ClassNode type)
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.