You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@groovy.apache.org by "Huan Tu Tat (JIRA)" <ji...@apache.org> on 2019/04/16 17:20:00 UTC
[jira] [Closed] (GROOVY-9088) Groovy with @Compilestatic problem
[ https://issues.apache.org/jira/browse/GROOVY-9088?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Huan Tu Tat closed GROOVY-9088.
-------------------------------
Resolution: Fixed
Fix Version/s: 2.5.6
This issue is resolved with groovy 2.5.6
> Groovy with @Compilestatic problem
> ----------------------------------
>
> Key: GROOVY-9088
> URL: https://issues.apache.org/jira/browse/GROOVY-9088
> Project: Groovy
> Issue Type: Bug
> Components: Compiler, Static compilation
> Affects Versions: 2.4.15
> Reporter: Huan Tu Tat
> Priority: Major
> Fix For: 2.5.6
>
>
> When I compile to class, Groovy pass my *RetryPolicy* to *Failsafe*.*with*(Policy... policies) function as *Object*[]. However, I expect that Groovy will pass it as *RetryPolicy*[] instead of *Object*[].
> When it's *Object*[], my application will be wrong because I need to pass a *Policy*[] in to this function.
> (I'm using Failsafe lib [in here|[https://github.com/jhalterman/failsafe])
> My code:
>
> {code:java}
> final RetryPolicy<Object> RETRY_POLICY = new RetryPolicy<>()
> .withDelay(Duration.ofSeconds(5))
> .withMaxRetries(60)
> .onFailedAttempt({ error -> log.warn("@An error must be retried:", error.getLastFailure()) })
> .onRetry({ error -> log.info("@Failure #{}. Retrying...", error.getAttemptCount()) })
> Failsafe.with(RETRY_POLICY){code}
>
> Complicated code .class file:
>
> {code:java}
> Failsafe.with(new Object[]{RETRY_POLICY});{code}
>
> Complicated code .class file when I don't use @CompileStatic
>
> {code:java}
> RetryPolicy RETRY_POLICY = (RetryPolicy)ScriptBytecodeAdapter.castToType(var2[9].call(var2[10].call(var2[11].call(var2[12].call(var2[13].callConstructor(RetryPolicy.class), var2[14].call(Duration.class, 5)), 60), new _fillWebsiteInfo_closure1(this, this)), new _fillWebsiteInfo_closure2(this, this)), RetryPolicy.class);
> var2[15].call(Failsafe.class, RETRY_POLICY);{code}
>
>
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)