Groovy 2.2.1

groovy.beans
[Groovy] Class ListenerListASTTransformation

java.lang.Object
  groovy.beans.ListenerListASTTransformation
All Implemented Interfaces:
ASTTransformation, org.objectweb.asm.Opcodes

@GroovyASTTransformation(phase = CompilePhase.CANONICALIZATION)
class ListenerListASTTransformation
extends Object

Handles generation of code for the @ListenerList annotation.

Generally, it adds the needed add<Listener>, remove<Listener> and get<Listener>s methods to support the Java Beans API.

Additionally it adds corresponding fire<Event> methods.

Authors:
Alexander Klein
Hamlet D'Arcy


Method Summary
void addAddListener(SourceUnit source, AnnotationNode node, ClassNode declaringClass, FieldNode field, ClassNode listener, String name, def synchronize)

Adds the add<Listener> method like:

 synchronized void add${name.capitalize}(${listener.name} listener) {
     if (listener == null)
         return
     if (${field.name} == null)
        ${field.name} = []
     ${field.name}.add(listener)
 }
 

void addFireMethods(SourceUnit source, AnnotationNode node, ClassNode declaringClass, FieldNode field, GenericsType[] types, boolean synchronize, MethodNode method)

Adds the fire<Event> methods like:

 void fire${fireMethod.capitalize()}(${parameterList.join(', ')}) {
     if (${field.name} !

void addGetListeners(SourceUnit source, AnnotationNode node, ClassNode declaringClass, FieldNode field, ClassNode listener, String name, def synchronize)

Adds the get<Listener>s method like:

 synchronized ${name.capitalize}[] get${name.capitalize}s() {
     def __result = []
     if (${field.name} !

void addRemoveListener(SourceUnit source, AnnotationNode node, ClassNode declaringClass, FieldNode field, ClassNode listener, String name, def synchronize)

Adds the remove method like:

 synchronized void remove${name.capitalize}(${listener.name} listener) {
     if (listener == null)
         return
     if (${field.name} == null)
         ${field.name} = []
     ${field.name}.remove(listener)
 }
 

void visit(ASTNode[] nodes, SourceUnit source)

 
Methods inherited from class Object
wait, wait, wait, equals, toString, hashCode, getClass, notify, notifyAll
 

Method Detail

addAddListener

void addAddListener(SourceUnit source, AnnotationNode node, ClassNode declaringClass, FieldNode field, ClassNode listener, String name, def synchronize)
Adds the add<Listener> method like:
 synchronized void add${name.capitalize}(${listener.name} listener) {
     if (listener == null)
         return
     if (${field.name} == null)
        ${field.name} = []
     ${field.name}.add(listener)
 }
 


addFireMethods

void addFireMethods(SourceUnit source, AnnotationNode node, ClassNode declaringClass, FieldNode field, GenericsType[] types, boolean synchronize, MethodNode method)
Adds the fire<Event> methods like:
 void fire${fireMethod.capitalize()}(${parameterList.join(', ')}) {
     if (${field.name} != null) {
         def __list = new ArrayList(${field.name})
         __list.each { listener ->
             listener.$eventMethod(${evt})
         }
     }
 }
 


addGetListeners

void addGetListeners(SourceUnit source, AnnotationNode node, ClassNode declaringClass, FieldNode field, ClassNode listener, String name, def synchronize)
Adds the get<Listener>s method like:
 synchronized ${name.capitalize}[] get${name.capitalize}s() {
     def __result = []
     if (${field.name} != null)
         __result.addAll(${field.name})
     return __result as ${name.capitalize}[]
 }
 


addRemoveListener

void addRemoveListener(SourceUnit source, AnnotationNode node, ClassNode declaringClass, FieldNode field, ClassNode listener, String name, def synchronize)
Adds the remove method like:
 synchronized void remove${name.capitalize}(${listener.name} listener) {
     if (listener == null)
         return
     if (${field.name} == null)
         ${field.name} = []
     ${field.name}.remove(listener)
 }
 


visit

void visit(ASTNode[] nodes, SourceUnit source)


 

Copyright &copy; 2003-2013 The Codehaus. All rights reserved.