I was not aware of that, I see not ASTs, but I'll double-check...
Jacques
Le 14/08/2015 14:32, Keegan Witt a écrit :
FYI, it is possible to apply ASTs to scripts. Remember that at the end of the day, scripts are compiled too (just compiled on the fly). How are
you extending org.ofbiz.service.engine.GroovyBaseScript? Is it in a jar on the classpath? And are you sure there are no ASTs in it?
-Keegan
On Fri, Aug 14, 2015 at 6:19 AM, Jacques Le Roux <jacques.le.r...@les7arts.com
<mailto:jacques.le.r...@les7arts.com>> wrote:
Since we don't compile groovy code I think we don't do AST transformations.
https://glaforge.appspot.com/article/groovy-ast-transformations-tutorials
Jacques
Le 14/08/2015 11:02, Cédric Champeau a écrit :
Are you writing your own AST transformations? If so, it is likely a bug in
one of them, and the error message is there to tell you something is
wrong with it.
2015-08-14 10:52 GMT+02:00 Jacques Le Roux <jacques.le.r...@les7arts.com
<mailto:jacques.le.r...@les7arts.com>>:
Hi,
We heavily rely on Groovy in Apache OFBiz where it replaced BeanShell 7
years ago. We only use it for scripts, we don't use the compiler.
I thought upgrading from 2.2.1 to 2.4.4 would be a breeze. So I simply
deleted groovy-all-2.2.1.jar and added groovy-all-2.4.4.jar locally
before committing. But I was surprised to get this error, which exists
in all our scripts.
[java] Caused by:
org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
[java]
component://commonext/webapp/ofbizsetup/organization/changeOrgPartyId.groovy:
23: A transform used a generics containing
ClassNode org.ofbiz.service.engine.GroovyBaseScript for the super class
cha
ngeOrgPartyId directly. You are not supposed to do this. Please create
a new ClassNode referring to the old ClassNode and use the new
ClassNode instead of the old one. Otherwise the compiler will create
wrong
descriptors and a potential NullPointerException in TypeResolver in
the OpenJDK. If this is not your own doing, please report this bug to
the writer of the transform.
[java] @ line 23, column 1.
[java] partyAcctgPrefAndGroupList = [];
[java] ^
[java]
[java] 1 error
[java]
[java] at
org.codehaus.groovy.control.ErrorCollector.failIfErrors(ErrorCollector.java:310)
~[groovy-all-2.4.4.jar:2.4.4]
[java] at
org.codehaus.groovy.control.CompilationUnit.applyToPrimaryClassNodes(CompilationUnit.java:1075)
~[groovy-all-2.4.4.jar:2.4.4]
[java] at
org.codehaus.groovy.control.CompilationUnit.doPhaseOperation(CompilationUnit.java:591)
~[groovy-all-2.4.4.jar:2.4.4]
[java] at
org.codehaus.groovy.control.CompilationUnit.processPhaseOperations(CompilationUnit.java:569)
~[groovy-all-2.4.4.jar:2.4.4]
[java] at
org.codehaus.groovy.control.CompilationUnit.compile(CompilationUnit.java:546)
~[groovy-all-2.4.4.jar:2.4.4]
[java] at
groovy.lang.GroovyClassLoader.doParseClass(GroovyClassLoader.java:298)
~[groovy-all-2.4.4.jar:2.4.4]
[java] at
groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:268)
~[groovy-all-2.4.4.jar:2.4.4]
[java] at
groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:254)
~[groovy-all-2.4.4.jar:2.4.4]
[java] at
groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:212)
~[groovy-all-2.4.4.jar:2.4.4]
[java] at
org.ofbiz.base.util.GroovyUtil.parseClass(GroovyUtil.java:162)
~[ofbiz-base.jar:?]
[java] at
org.ofbiz.base.util.GroovyUtil.getScriptClassFromLocation(GroovyUtil.java:134)
~[ofbiz-base.jar:?]
[java] at
org.ofbiz.base.util.GroovyUtil.runScriptAtLocation(GroovyUtil.java:170)
~[ofbiz-base.jar:?]
[java] at
org.ofbiz.base.util.ScriptUtil.executeScript(ScriptUtil.java:342)
~[ofbiz-base.jar:?]
[java] at
org.ofbiz.base.util.ScriptUtil.executeScript(ScriptUtil.java:324)
~[ofbiz-base.jar:?]
[java] at
org.ofbiz.widget.model.AbstractModelAction$Script.runAction(AbstractModelAction.java:632)
~[ofbiz-widget.jar:?]
[java] at
org.ofbiz.widget.model.AbstractModelAction.runSubActions(AbstractModelAction.java:141)
~[ofbiz-widget.jar:?]
[java] at
org.ofbiz.widget.model.ModelScreenWidget$Section.renderWidgetString(ModelScreenWidget.java:273)
~[ofbiz-widget.jar:?]
[java] at
org.ofbiz.widget.model.ModelScreen.renderScreenString(ModelScreen.java:164)
~[ofbiz-widget.jar:?]
[java] at
org.ofbiz.widget.model.ScreenFactory.renderReferencedScreen(ScreenFactory.java:211)
~[ofbiz-widget.jar:?]
[java] at
org.ofbiz.widget.model.ModelScreenWidget$IncludeScreen.renderWidgetString(ModelScreenWidget.java:780)
~[ofbiz-widget.jar:?]
[java] at
org.ofbiz.widget.model.ModelScreenWidget.renderSubWidgetsString(ModelScreenWidget.java:98)
~[ofbiz-widget.jar:?]
[java] at
org.ofbiz.widget.model.ModelScreenWidget$Section.renderWidgetString(ModelScreenWidget.java:280)
~[ofbiz-widget.jar:?]
[java] at
org.ofbiz.widget.model.ModelScreen.renderScreenString(ModelScreen.java:164)
~[ofbiz-widget.jar:?]
[java] at
org.ofbiz.widget.model.ScreenFactory.renderReferencedScreen(ScreenFactory.java:211)
~[ofbiz-widget.jar:?]
[java] at
org.ofbiz.widget.model.ModelScreenWidget$DecoratorScreen.renderWidgetString(ModelScreenWidget.java:860)
~[ofbiz-widget.jar:?]
[java] at
org.ofbiz.widget.model.ModelScreenWidget.renderSubWidgetsString(ModelScreenWidget.java:98)
~[ofbiz-widget.jar:?]
[java] at
org.ofbiz.widget.model.ModelScreenWidget$Section.renderWidgetString(ModelScreenWidget.java:280)
~[ofbiz-widget.jar:?]
[java] at
org.ofbiz.widget.model.ModelScreen.renderScreenString(ModelScreen.java:164)
~[ofbiz-widget.jar:?]
[java] ... 28 more
I looked for similar cases on the Internet and found
https://issues.apache.org/jira/browse/GROOVY-5112
https://issues.apache.org/jira/browse/GROOVY-6691
So do you think this could be a bug in Groovy or should we rather dive
in in our code?
Thanks
Jacques