You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@groovy.apache.org by "Paul King (JIRA)" <ji...@apache.org> on 2015/06/11 09:22:01 UTC

[jira] [Updated] (GROOVY-7379) listeners.each { UDPListener -> ... fails with exception runtime on List when used in an inner class.

     [ https://issues.apache.org/jira/browse/GROOVY-7379?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Paul King updated GROOVY-7379:
------------------------------
    Priority: Major  (was: Critical)

> listeners.each { UDPListener -> ... fails with exception runtime on List<UDPListener> when used in an inner class.
> ------------------------------------------------------------------------------------------------------------------
>
>                 Key: GROOVY-7379
>                 URL: https://issues.apache.org/jira/browse/GROOVY-7379
>             Project: Groovy
>          Issue Type: Bug
>          Components: Compiler, groovy-runtime
>    Affects Versions: 2.3.6, 2.3.11
>         Environment: Mac OS X 10.10.2, JDK 1.7.0_71
>            Reporter: Tommy Svensson
>
> Exception in thread "Thread-1" java.lang.VerifyError: (class: se/natusoft/osgi/aps/tcpipsvc/UDPReceiver$_ReceiverThread_run_closure1, method: doCall signature: (Lse/natusoft/osgi/aps/api/net/tcpip/UDPListener;)Ljava/lang/Object;) Incompatible object argument for function call
> 	at se.natusoft.osgi.aps.tcpipsvc.UDPReceiver$ReceiverThread.run(UDPReceiver.groovy:219)
> Caused by the following code:
> {noformat}
>                this.listeners.each { UDPListener listener ->
>                     try {
>                         listener.udpDataReceived(config.name, dp)
>                     }
>                     catch (Exception e) {
>                         getSafeLogger().error("Listener call failed for '" + config.name + "'! (" + listener + ")", e)
>                     }
>                 }
> {noformat}
> The above code block fails with the above exception when the class the code block is part of is an inner class. When the whole inner class is moved up into its own top level class, this works fine, and there is no exception. I've noticed this behavior before, there are several Groovy features that simply fails when they are part of an inner class, but works fine in a top level class. 
> I guess that the lesson here is to avoid inner classes in Groovy for now at least. 
> I really love Groovy as a language, it sovles a lot of the problem with Java. Unfortunately the stability and quality of Java releases and Grovvy releases are on separate sides of the universe. Due to this I don't dare reccomend to a customer to use Groovy until it has more stable and backwards compatible releases. 



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)