@GroovyASTTransformation(phase: CompilePhase.CANONICALIZATION) @SuppressWarnings(value: ParameterCount) class ListenerListASTTransformation extends Object implements ASTTransformation, org.objectweb.asm.Opcodes
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.
Constructor and description |
---|
ListenerListASTTransformation
() |
Type Params | Return Type | Name and description |
---|---|---|
|
void |
addAddListener(SourceUnit source, AnnotationNode node, ClassNode declaringClass, FieldNode field, ClassNode listener, String name, Object 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, Object 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, Object synchronize) Adds the remove<Listener> 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) |
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) }
Adds the fire<Event> methods like:
void fire${fireMethod.capitalize()}(${parameterList.join(', ')}) { if (${field.name} != null) { def __list = new ArrayList(${field.name}) for (listener in __list) { listener.$eventMethod(${evt}) } } }
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}[] }
Adds the remove<Listener> method like:
synchronized void remove${name.capitalize}(${listener.name} listener) { if (listener == null) return if (${field.name} == null) ${field.name} = [] ${field.name}.remove(listener) }
Copyright © 2003-2021 The Apache Software Foundation. All rights reserved.