[Groovy] Class ListenerListASTTransformation

  • groovy.beans.ListenerListASTTransformation
All Implemented Interfaces and Traits:
ASTTransformation, org.objectweb.asm.Opcodes
@GroovyASTTransformation(phase = CompilePhase.CANONICALIZATION)
@SuppressWarnings('ParameterCount')
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.

Methods Summary

Methods
Type Params Return Type Name and description
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<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

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

Method Detail

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} != 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, 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}[]
 }
 

void addRemoveListener(SourceUnit source, AnnotationNode node, ClassNode declaringClass, FieldNode field, ClassNode listener, String name, def 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('Instanceof') void visit(ASTNode[] nodes, SourceUnit source)

© 2003-2020 The Apache Software Foundation
Licensed under the Apache license.
https://docs.groovy-lang.org/2.5.14/html/gapi/groovy/beans/ListenerListASTTransformation.html