[Groovy] Class ListenerListASTTransformation
- groovy.beans.ListenerListASTTransformation
- All Implemented Interfaces and Traits:
- ASTTransformation, org.objectweb.asm.Opcodes
@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 Summary
| Constructor and description |
|---|
ListenerListASTTransformation
() |
Methods Summary
| 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) |
Inherited Methods Summary
| Methods inherited from class | Name |
|---|---|
class Object | wait, wait, wait, equals, toString, hashCode, getClass, notify, notifyAll |
Constructor Detail
ListenerListASTTransformation()
Method Detail
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} != null) {
def __list = new ArrayList(${field.name})
for (listener in __list) {
listener.$eventMethod(${evt})
}
}
}
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} != null)
__result.addAll(${field.name})
return __result as ${name.capitalize}[]
}
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)
}
@SuppressWarnings(value: Instanceof) void visit(ASTNode[] nodes, SourceUnit source)
© 2003-2020 The Apache Software Foundation
Licensed under the Apache license.
https://docs.groovy-lang.org/3.0.7/html/gapi/groovy/beans/ListenerListASTTransformation.html