I would like to clarify that in this first pass I focused on "moving code 
around" keeping the same exact behavior currently implemented: now all the code 
that had a dependency on Groovy or Beanshell packages has been converted to be 
only dependent on ScriptUtil class.
In order to implement JSR-223 we may have to change some of the current 
behavior (the different way Beanshell and Groovy are preparsed/executed) and 
also check if we can always assume that if the code inside of ${...} starts 
with a string (no spaces) followed by a colon (and a blank character?) then the 
string is the scripting language: I didn't check the impact on existing scripts 
but it should be easy to write a reg exp to find all of them (I expect that the 
number will be small) and modify them to be compatible with the convention. I 
intentionally didn't focus on this second step.

Jacopo

On Mar 4, 2012, at 10:27 PM, Jacques Le Roux wrote:

> I must says I only cursorily reviewed the code Jacopo committed and did not 
> look into JSR-223 details.
> So I thought at some point you have to check which language wich is used?
> 
> Like in
> +        if ("groovy".equals(language)) {
> +            if (scriptClass == null) {
> +                scriptClass = ScriptUtil.parseScript(language, script);
> +            }
> +            if (scriptClass != null) {
> +                result = InvokerHelper.createScript(scriptClass, 
> GroovyUtil.getBinding(inputMap)).run();
> +            }
> +        } else if ("bsh".equals(language)) {
> +            result = BshUtil.eval(script, 
> UtilMisc.makeMapWritable(inputMap));
> +        }
> 
> In other words from Jacopo's code here, it seems you have to differentiate 
> how scritps are parsed?
> 
> Jacques
> 
> From: "Adrian Crum" <adrian.c...@sandglass-software.com>
>> Groovy supports JSR-223, so there is no reason to treat it differently. My 
>> question has nothing to do with which scripting engine
>> is supplied with OFBiz.
>> 
>> -Adrian
>> 
>> On 3/4/2012 8:43 PM, Jacques Le Roux wrote:
>>> I don't want to interfer with Jacopo's answer, but I guess it's because 
>>> Groovy will be implemented OOTB. The others could be but
>>> Groovy is already part of the framework (the inital subject from Erwan was 
>>> to completely remove BeanShell OOTB usage), I mean
>>> it's the idea and what Jacopo said already.
>>> 
>>> I second this idea. Everybody can use her/his preferred scripting language 
>>> in custom projects. But using only one language OOTB
>>> seems to be common sense. We chose groovy...
>>> 
>>> Jacques
>>> 
>>> From: "Adrian Crum" <adrian.c...@sandglass-software.com>
>>>> The code changes tested fine.
>>>> 
>>>> I noticed in your code comments that Groovy should be handled 
>>>> independently from other scripting languages. Why do you think
>>>> that?
>>>> 
>>>> -Adrian
>>>> 
>>>> 
>>>> On 3/4/2012 7:27 AM, Jacopo Cappellato wrote:
>>>>> My changes are in commit 1296762
>>>>> 
>>>>> Help with reviews and tests will be very much appreciated.
>>>>> 
>>>>> Jacopo
>>>>> 
>>>>> On Mar 3, 2012, at 1:45 PM, Jacopo Cappellato wrote:
>>>>> 
>>>>>> On Mar 1, 2012, at 10:51 AM, Adrian Crum wrote:
>>>>>> 
>>>>>>> As far as I know, most scripting engines have some sort of embedded 
>>>>>>> cache. The problem will be that we can't clear the
>>>>>>> embedded
>>>>>>> cache like we can with our own cache implementation. I don't see that 
>>>>>>> as a show stopper - it's mostly inconvenient.
>>>>>>> 
>>>>>>> I can help out with the conversion. I don't think the task will be that 
>>>>>>> hard.
>>>>>> Adrian, FYI I am enhancing some of the existing framework code that uses 
>>>>>> the GroovyUtil class to simplify this task.
>>>>>> I will commit my code changes today.
>>>>>> 
>>>>>> Regards,
>>>>>> 
>>>>>> Jacopo
>>>>>> 
>>>>>> 
>>>>>> 

Reply via email to