Frigo Pratser created GROOVY-8110:
-------------------------------------

             Summary: @ListenerList generated fireWhatever() method stops 
working
                 Key: GROOVY-8110
                 URL: https://issues.apache.org/jira/browse/GROOVY-8110
             Project: Groovy
          Issue Type: Bug
          Components: groovy-runtime
    Affects Versions: 2.4.8, 2.4.7
            Reporter: Frigo Pratser
            Priority: Minor


As described in the question on SO
[http://stackoverflow.com/questions/42648766/groovy-listenerlist-generated-firexxx-method-stops-working]
and confirmed by @aalmiray the fireWhatever() method generated when
using @ListenerList annotation stops working after some calls.

[@aalmiray|http://stackoverflow.com/users/120745/aalmiray] s code as posted in 
his reply reproduces the problem with
Groovy 2.4.7 and I confirmed it with 2.4.8 running it in groovyConsole. The 
difference between this code and the longer one in the SO question is that in 
the longer version the call works but if called periodically after some time it 
produces the same Exception.

{code:title=MessageProducer.groovy|borderStyle=solid}
import groovy.beans.ListenerList

interface MessageListener {
  void messageReceived(byte[] msg)
}

class MessageProducer {
  @ListenerList
  List<MessageListener> listeners

  void produce(String msg) {
    fireMessageReceived(msg.getBytes())
  }
}

producer = new MessageProducer()
producer.addMessageListener({ println it } as MessageListener)
producer.produce('Groovy')
{code}

{code:title=Stacktrace|borderStyle=solid}
Exception thrown

java.lang.NoSuchMethodError: MessageProducer.fireMessageReceived([B)V
        at MessageProducer$fireMessageReceived$0.callCurrent(Unknown
Source) at MessageProducer.produce(ConsoleScript0:12)
        at MessageProducer$produce.call(Unknown Source)
        at ConsoleScript0.run(ConsoleScript0:18
{code}



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Reply via email to