|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectgroovy.beans.BindableASTTransformation
public class BindableASTTransformation
Handles generation of code for the @Bindable
annotation when @Vetoable
is not present.
Vetoable
annotaton is detected it does nothing and
lets the VetoableASTTransformation
handle all the changes.
Field Summary | |
---|---|
protected static ClassNode |
boundClassNode
|
protected ClassNode |
pcsClassNode
|
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 | |
---|---|
BindableASTTransformation()
|
Method Summary | |
---|---|
private void |
addListenerToClass(SourceUnit source,
AnnotationNode node,
ClassNode classNode)
|
private void |
addListenerToProperty(SourceUnit source,
AnnotationNode node,
ClassNode declaringClass,
FieldNode field)
|
protected void |
addPropertyChangeSupport(ClassNode declaringClass)
Adds the necessary field and methods to support property change support. |
protected Statement |
createBindableStatement(PropertyNode propertyNode,
Expression fieldExpression)
Creates a statement body similar to: this.firePropertyChange("field", field, field = value) |
private void |
createListenerSetter(SourceUnit source,
AnnotationNode node,
ClassNode classNode,
PropertyNode propertyNode)
|
protected void |
createSetterMethod(ClassNode declaringClass,
PropertyNode propertyNode,
java.lang.String setterName,
Statement setterBlock)
Creates a setter method with the given body. |
static boolean |
hasBindableAnnotation(AnnotatedNode node)
Convenience method to see if an annotated node is @Bindable . |
protected boolean |
needsPropertyChangeSupport(ClassNode declaringClass,
SourceUnit sourceUnit)
Snoops through the declaring class and all parents looking for methods void addPropertyChangeListener(PropertyChangeListener), void removePropertyChangeListener(PropertyChangeListener), and void firePropertyChange(String, Object, Object). |
void |
visit(ASTNode[] nodes,
SourceUnit source)
Handles the bulk of the processing, mostly delegating to other methods. |
private void |
wrapSetterMethod(ClassNode classNode,
java.lang.String propertyName)
|
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
protected static ClassNode boundClassNode
protected ClassNode pcsClassNode
Constructor Detail |
---|
public BindableASTTransformation()
Method Detail |
---|
public static boolean hasBindableAnnotation(AnnotatedNode node)
@Bindable
.
node
- the node to check
public void visit(ASTNode[] nodes, SourceUnit source)
visit
in interface ASTTransformation
nodes
- the ast nodessource
- the source unit for the nodesprivate void addListenerToProperty(SourceUnit source, AnnotationNode node, ClassNode declaringClass, FieldNode field)
private void addListenerToClass(SourceUnit source, AnnotationNode node, ClassNode classNode)
private void wrapSetterMethod(ClassNode classNode, java.lang.String propertyName)
private void createListenerSetter(SourceUnit source, AnnotationNode node, ClassNode classNode, PropertyNode propertyNode)
protected Statement createBindableStatement(PropertyNode propertyNode, Expression fieldExpression)
this.firePropertyChange("field", field, field = value)
propertyNode
- the field node for the propertyfieldExpression
- a field expression for setting the property value
protected void createSetterMethod(ClassNode declaringClass, PropertyNode propertyNode, java.lang.String setterName, Statement setterBlock)
declaringClass
- the class to which we will add the setterpropertyNode
- the field to back the settersetterName
- the name of the settersetterBlock
- the statement representing the setter blockprotected boolean needsPropertyChangeSupport(ClassNode declaringClass, SourceUnit sourceUnit)
declaringClass
- the class to searchsourceUnit
- the source unit, for error reporting. @NotNull
.
protected void addPropertyChangeSupport(ClassNode declaringClass)
protected final java.beans.PropertyChangeSupport this$PropertyChangeSupport = new java.beans.PropertyChangeSupport(this)
"
Also adds support methods:
public void addPropertyChangeListener(java.beans.PropertyChangeListener)
public void addPropertyChangeListener(String, java.beans.PropertyChangeListener)
public void removePropertyChangeListener(java.beans.PropertyChangeListener)
public void removePropertyChangeListener(String, java.beans.PropertyChangeListener)
public java.beans.PropertyChangeListener[] getPropertyChangeListeners()
declaringClass
- the class to which we add the support field and methods
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |