Handles generation of code for the @Vetoable annotation, and @Bindable
if also present.
Generally, it adds (if needed) a VetoableChangeSupport field and the needed add/removeVetoableChangeListener methods to support the listeners.
It also generates the setter and wires the setter through the VetoableChangeSupport.
If a Bindable annotation is detected it also adds support similar to what BindableASTTransformation would do.
| Modifiers | Name | Description |
|---|---|---|
protected static ClassNode |
constrainedClassNode |
|
protected ClassNode |
vcsClassNode |
| Fields inherited from class | Fields |
|---|---|
class BindableASTTransformation |
boundClassNode, pcsClassNode |
| Type | Name and description |
|---|---|
protected void |
addVetoableChangeSupport(ClassNode declaringClass) |
protected Statement |
createConstrainedStatement(PropertyNode propertyNode, Expression fieldExpression)Creates a statement body similar to: this.fireVetoableChange("field", field, field = value) |
protected Statement |
createSetStatement(Expression fieldExpression)Creates a statement body similar to: field = value. |
protected void |
createSetterMethod(ClassNode declaringClass, PropertyNode propertyNode, String setterName, Statement setterBlock)Creates a setter method with the given body. |
static boolean |
hasVetoableAnnotation(AnnotatedNode node)Convenience method to see if an annotated node is @Vetoable. |
protected boolean |
needsVetoableChangeSupport(ClassNode declaringClass, SourceUnit sourceUnit) |
void |
visit(ASTNode[] nodes, SourceUnit source)Handles the bulk of the processing, mostly delegating to other methods. |
| Methods inherited from class | Name |
|---|---|
class BindableASTTransformation |
addPropertyChangeSupport, createBindableStatement, createSetterMethod, hasBindableAnnotation, needsPropertyChangeSupport, visit |
class Object |
wait, wait, wait, equals, toString, hashCode, getClass, notify, notifyAll |
Creates a statement body similar to:
this.fireVetoableChange("field", field, field = value)
propertyNode - the field node for the propertyfieldExpression - a field expression for setting the property value Creates a statement body similar to:
field = value.
Used when the field is not also @Bindable.
fieldExpression - a field expression for setting the property valueCreates a setter method with the given body.
This differs from normal setters in that we need to add a declared exception java.beans.PropertyVetoException
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 block Convenience method to see if an annotated node is @Vetoable.
node - the node to checkHandles the bulk of the processing, mostly delegating to other methods.
nodes - the AST nodessource - the source unit for the nodes