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

public Class SortableASTTransformation

extends AbstractASTTransformation
Class Inheritance
Annotations
@GroovyASTTransformation
phase:CANONICALIZATION
Imports
groovy.transform.Sortable, org.codehaus.groovy.ast.ASTNode, .AnnotatedNode, .AnnotationNode, .ClassHelper, .ClassNode, .FieldNode, .InnerClassNode, .Parameter, .PropertyNode, org.codehaus.groovy.ast.expr.BinaryExpression, .Expression, org.codehaus.groovy.ast.stmt.BlockStatement, .Statement, org.codehaus.groovy.classgen.VariableScopeVisitor, org.codehaus.groovy.control.CompilePhase, .SourceUnit, org.codehaus.groovy.runtime.AbstractComparator, .StringGroovyMethods, java.util.ArrayList, .Comparator, .HashSet, .List, .Set

Injects a set of Comparators and sort methods.

Field Summary

Modifier and TypeField and Description
private static final String
private static final String
private static final ClassNode
private static final ClassNode
private static final ClassNode
private static final String
private static final String
private static final String
private static final String
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 void
private static BinaryExpression
compareExpr(Expression lhv, Expression rhv, boolean reversed)

Helper method used to build a binary expression that compares two values with the option to handle reverse order.

private static void
createComparatorFor(ClassNode classNode, PropertyNode property, boolean reversed)

private static Statement
createCompareMethodBody(PropertyNode property, boolean reversed)

private static Statement
createCompareToMethodBody(List<PropertyNode> properties, boolean reversed)

private void
private List<PropertyNode>
findProperties(AnnotationNode annotation, final ClassNode classNode, final List<String> includes, final List<String> excludes, final boolean allProperties, final boolean includeSuperProperties, final boolean allNames)

private static void
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

ARG0back to summary
private static final String ARG0
ARG1back to summary
private static final String ARG1
COMPARABLE_TYPEback to summary
private static final ClassNode COMPARABLE_TYPE
COMPARATOR_TYPEback to summary
private static final ClassNode COMPARATOR_TYPE
MY_TYPEback to summary
private static final ClassNode MY_TYPE
MY_TYPE_NAMEback to summary
private static final String MY_TYPE_NAME
OTHERback to summary
private static final String OTHER
OTHER_HASHback to summary
private static final String OTHER_HASH
THIS_HASHback to summary
private static final String THIS_HASH
VALUEback to summary
private static final String VALUE

Constructor Detail

SortableASTTransformationback to summary
public SortableASTTransformation()

Method Detail

checkComparableback to summary
private void checkComparable(PropertyNode pNode)
compareExprback to summary
private static BinaryExpression compareExpr(Expression lhv, Expression rhv, boolean reversed)

Helper method used to build a binary expression that compares two values with the option to handle reverse order.

createComparatorForback to summary
private static void createComparatorFor(ClassNode classNode, PropertyNode property, boolean reversed)
createCompareMethodBodyback to summary
private static Statement createCompareMethodBody(PropertyNode property, boolean reversed)
createCompareToMethodBodyback to summary
private static Statement createCompareToMethodBody(List<PropertyNode> properties, boolean reversed)
createSortableback to summary
private void createSortable(AnnotationNode anno, ClassNode classNode)
findPropertiesback to summary
private List<PropertyNode> findProperties(AnnotationNode annotation, final ClassNode classNode, final List<String> includes, final List<String> excludes, final boolean allProperties, final boolean includeSuperProperties, final boolean allNames)
implementComparableback to summary
private static void implementComparable(ClassNode classNode)
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.