|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectorg.codehaus.groovy.transform.ImmutableASTTransformation
public class ImmutableASTTransformation
Handles generation of code for the @Immutable annotation. This is experimental, use at your own risk.
Field Summary | |
---|---|
private static Token |
ASSIGN
|
private static ClassNode |
CLONEABLE_TYPE
|
private static ClassNode |
COLLECTION_TYPE
|
private static Token |
COMPARE_EQUAL
|
private static Token |
COMPARE_IDENTICAL
|
private static Token |
COMPARE_NOT_EQUAL
|
private static ClassNode |
DATE_TYPE
|
private static ClassNode |
DGM_TYPE
|
private static ClassNode |
HASHMAP_TYPE
|
private static ClassNode |
HASHUTIL_TYPE
|
private static java.lang.Class[] |
immutableList
|
private static ClassNode |
MAP_TYPE
|
private static java.lang.Class |
MY_CLASS
|
private static ClassNode |
MY_TYPE
|
private static java.lang.String |
MY_TYPE_NAME
|
private static ClassNode |
OBJECT_TYPE
|
private static ClassNode |
SELF_TYPE
|
private static ClassNode |
STRINGBUFFER_TYPE
|
Fields inherited from interface org.objectweb.asm.Opcodes |
---|
AALOAD, AASTORE, ACC_ABSTRACT, ACC_ANNOTATION, ACC_BRIDGE, ACC_DEPRECATED, ACC_ENUM, ACC_FINAL, ACC_INTERFACE, ACC_NATIVE, ACC_PRIVATE, ACC_PROTECTED, ACC_PUBLIC, ACC_STATIC, ACC_STRICT, ACC_SUPER, ACC_SYNCHRONIZED, ACC_SYNTHETIC, ACC_TRANSIENT, ACC_VARARGS, ACC_VOLATILE, ACONST_NULL, ALOAD, ANEWARRAY, ARETURN, ARRAYLENGTH, ASTORE, ATHROW, BALOAD, BASTORE, BIPUSH, CALOAD, CASTORE, CHECKCAST, D2F, D2I, D2L, DADD, DALOAD, DASTORE, DCMPG, DCMPL, DCONST_0, DCONST_1, DDIV, DLOAD, DMUL, DNEG, DREM, DRETURN, DSTORE, DSUB, DUP, DUP_X1, DUP_X2, DUP2, DUP2_X1, DUP2_X2, F2D, F2I, F2L, FADD, FALOAD, FASTORE, FCMPG, FCMPL, FCONST_0, FCONST_1, FCONST_2, FDIV, FLOAD, FMUL, FNEG, FREM, FRETURN, FSTORE, FSUB, GETFIELD, GETSTATIC, GOTO, I2B, I2C, I2D, I2F, I2L, I2S, IADD, IALOAD, IAND, IASTORE, ICONST_0, ICONST_1, ICONST_2, ICONST_3, ICONST_4, ICONST_5, ICONST_M1, IDIV, IF_ACMPEQ, IF_ACMPNE, IF_ICMPEQ, IF_ICMPGE, IF_ICMPGT, IF_ICMPLE, IF_ICMPLT, IF_ICMPNE, IFEQ, IFGE, IFGT, IFLE, IFLT, IFNE, IFNONNULL, IFNULL, IINC, ILOAD, IMUL, INEG, INSTANCEOF, INVOKEINTERFACE, INVOKESPECIAL, INVOKESTATIC, INVOKEVIRTUAL, IOR, IREM, IRETURN, ISHL, ISHR, ISTORE, ISUB, IUSHR, IXOR, JSR, L2D, L2F, L2I, LADD, LALOAD, LAND, LASTORE, LCMP, LCONST_0, LCONST_1, LDC, LDIV, LLOAD, LMUL, LNEG, LOOKUPSWITCH, LOR, LREM, LRETURN, LSHL, LSHR, LSTORE, LSUB, LUSHR, LXOR, MONITORENTER, MONITOREXIT, MULTIANEWARRAY, NEW, NEWARRAY, NOP, POP, POP2, PUTFIELD, PUTSTATIC, RET, RETURN, SALOAD, SASTORE, SIPUSH, SWAP, T_BOOLEAN, T_BYTE, T_CHAR, T_DOUBLE, T_FLOAT, T_INT, T_LONG, T_SHORT, TABLESWITCH, V1_1, V1_2, V1_3, V1_4, V1_5, V1_6 |
Constructor Summary | |
---|---|
ImmutableASTTransformation()
|
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
private static java.lang.Class[] immutableList
private static final java.lang.Class MY_CLASS
private static final ClassNode MY_TYPE
private static final java.lang.String MY_TYPE_NAME
private static final ClassNode OBJECT_TYPE
private static final ClassNode HASHMAP_TYPE
private static final ClassNode MAP_TYPE
private static final ClassNode DATE_TYPE
private static final ClassNode CLONEABLE_TYPE
private static final ClassNode COLLECTION_TYPE
private static final ClassNode HASHUTIL_TYPE
private static final ClassNode STRINGBUFFER_TYPE
private static final ClassNode DGM_TYPE
private static final ClassNode SELF_TYPE
private static final Token COMPARE_EQUAL
private static final Token COMPARE_NOT_EQUAL
private static final Token COMPARE_IDENTICAL
private static final Token ASSIGN
Constructor Detail |
---|
public ImmutableASTTransformation()
Method Detail |
---|
public void visit(ASTNode[] nodes, SourceUnit source)
ASTTransformation
visit
in interface ASTTransformation
nodes
- The ASTnodes when the call was triggeredsource
- The source unit being compiledprivate void ensureNotPublic(java.lang.String cNode, FieldNode fNode)
private void createHashCode(ClassNode cNode)
private void createToString(ClassNode cNode)
private Statement toStringPropertyName(Expression result, java.lang.String fName)
private ExpressionStatement append(Expression result, Expression expr)
private Statement calculateHashStatements(Expression hash, java.util.List<PropertyNode> list)
private void createEquals(ClassNode cNode)
private Statement returnFalseIfWrongType(ClassNode cNode, Expression other)
private IfStatement returnFalseIfNull(Expression other)
private IfStatement returnTrueIfIdentical(Expression self, Expression other)
private Statement returnFalseIfPropertyNotEqual(PropertyNode pNode, Expression other)
private void addProperty(ClassNode cNode, PropertyNode pNode)
private void createConstructor(ClassNode cNode)
private void createConstructorMapSpecial(ClassNode cNode, FieldExpression constructorStyle, java.util.List<PropertyNode> list)
private void createConstructorMap(ClassNode cNode, FieldExpression constructorStyle, java.util.List<PropertyNode> list)
private void createConstructorMapCommon(ClassNode cNode, FieldExpression constructorStyle, BlockStatement body)
private void createConstructorOrdered(ClassNode cNode, FieldExpression constructorStyle, java.util.List<PropertyNode> list)
private Statement createConstructorStatement(ClassNode cNode, PropertyNode pNode)
private boolean implementsInterface(ClassNode fieldType, ClassNode interfaceType)
private Statement createConstructorStatementGuarded(ClassNode cNode, FieldNode fNode)
private Expression checkUnresolved(ClassNode cNode, FieldNode fNode, Expression value)
private Statement createConstructorStatementCollection(FieldNode fNode)
private Statement createConstructorStatementMapSpecial(FieldNode fNode)
private boolean isKnownImmutable(ClassNode fieldType)
private static boolean inImmutableList(java.lang.Class typeClass)
private Statement createConstructorStatementDefault(FieldNode fNode)
private Statement createConstructorStatementArrayOrCloneable(FieldNode fNode)
private Statement createConstructorStatementDate(FieldNode fNode)
private Expression cloneDateExpr(Expression origDate)
private Statement assignStatement(Expression fieldExpr, Expression value)
private Expression assignExpr(Expression fieldExpr, Expression value)
private BooleanExpression equalsNullExpr(Expression argExpr)
private BooleanExpression isTrueExpr(Expression argExpr)
private BooleanExpression isZeroExpr(Expression expr)
private BooleanExpression isOneExpr(Expression expr)
private BooleanExpression notEqualsExpr(PropertyNode pNode, Expression other)
private BooleanExpression identicalExpr(Expression self, Expression other)
private Expression findArg(java.lang.String fName)
private void adjustPropertyForImmutability(PropertyNode pNode, java.util.List<PropertyNode> newNodes)
private void adjustPropertyNode(PropertyNode pNode, Statement getterBody)
private Statement createGetterBody(FieldNode fNode)
private Statement createGetterBodyDefault(FieldNode fNode)
private static java.lang.String createErrorMessage(java.lang.String className, java.lang.String fieldName, java.lang.String typeName, java.lang.String mode)
private static java.lang.String prettyTypeName(java.lang.String name)
private Statement createGetterBodyArrayOrCloneable(FieldNode fNode)
private Expression cloneArrayOrCloneableExpr(Expression fieldExpr)
private Expression cloneCollectionExpr(Expression fieldExpr)
private Statement createGetterBodyDate(FieldNode fNode)
private Statement safeExpression(Expression fieldExpr, Expression expression)
public static java.lang.Object checkImmutable(java.lang.String className, java.lang.String fieldName, java.lang.Object field)
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |