Hi,

Yes I did (of course ;)) I did not get a chance to have another look yet, still 
planned...

Jacques

Le 25/08/2015 05:47, Keegan Witt a écrit :
OK, so we've ruled out an AST I think. Dumb question, but did you recompile GroovyUtil.java after changing the Groovy versions? Because it is compiled against Groovy and maybe something was changed between versions.

-Keegan

On Thu, Aug 20, 2015 at 12:11 PM, Jacques Le Roux <jacques.le.r...@les7arts.com 
<mailto:jacques.le.r...@les7arts.com>> wrote:

    You are welcome Jacopo,

    Being (almost) in vacation, I did not find the time to explain how we use 
Groovy, thanks!

    I hope to have another look before Monday...

    Jacques


    Le 20/08/2015 16:52, Jacopo Cappellato a écrit :

        Jacques, Cédric, Keegan.

        I apologize if I jump in this conversation but I am interested in this 
issue reported by Jacques and I would like to share more information
        about how the code is used in OFBiz.

        The GroovyBaseScript.groovy [*] is in the classpath, and here is how we 
use it (I have simplified the code for readability):

        CompilerConfiguration conf = new CompilerConfiguration();
        conf.setScriptBaseClass("org.ofbiz.service.engine.GroovyBaseScript");
        GroovyClassLoader groovyClassLoader = new 
GroovyClassLoader(GroovyUtil.class.getClassLoader(), conf);

        Then we use "groovyClassLoader" to parse our scripts with something 
like this:

        groovyClassLoader.parseClass(UtilIO.readString(in), location);

        Kind regards,

        Jacopo


        [*] You can review the content of GroovyBaseScript.groovy here:

        
http://svn.apache.org/repos/asf/ofbiz/trunk/framework/service/src/org/ofbiz/service/engine/GroovyBaseScript.groovy

        On Aug 14, 2015, at 2:32 PM, Keegan Witt <keeganw...@gmail.com 
<mailto:keeganw...@gmail.com>> wrote:

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






Reply via email to