This could work but I was thinking to something more like having some "core"
packages (like entity and service) always imported in groovy scripts/services;
or having the "delegator" and "dispatcher" objects properly casted to their
interfaces (to take advantage of IDE autocompletion features); etc...
But I don't have a clear list at the moment so please do not consider my notes
a blocker.
I am working at a POC for a "best practice" Groovy service implementation and
this should end up with a "wish list" of features I would like to have. Then we
can discuss the best way to achieve this.
Jacopo
On Mar 5, 2012, at 9:14 AM, Adrian Crum wrote:
> If you don't mind, I would like to get all of the issues resolved during the
> design phase.
>
> I will wait for the private email to understand what you mean by a "secure"
> scripting package.
>
> What I was suggesting is a script utility object that can be put in the
> context so that all scripting languages can use it. Whatever methods you have
> in mind could be implemented in a generic way and reused. Personally, I would
> like to use something like:
>
> // Groovy, JavaScript
> partyValue = script.entityOne("Party");
> if (partyValue)...
>
> In other words, have an object in the context that gives us the convenience
> of mini-language.
>
> -Adrian
>
> On 3/5/2012 8:01 AM, Jacopo Cappellato wrote:
>> On Mar 5, 2012, at 8:46 AM, Adrian Crum wrote:
>>
>>> It seems to me if there is a security issue using Groovy, then there would
>>> be an issue using any scripting language.
>> Yes, but what we would bundle ootb would be a secured packaged ready to run
>> Groovy scripts in a "secure" way and already packaged with hundreds of
>> scripts.
>> If the user will add a new jar to support a different script (and the user
>> will also have to implement the custom scripts) then this will be less
>> secure but there isn't much we could do as we delegate to JSR-223 the
>> implementation of security.
>>
>>> Why can't we put the "friendly methods" in the context, so all scripting
>>> languages can use them?
>>>
>> I am not sure I understand what you are proposing (the method would be
>> language specific) but for now we can postpone this discussion at when (if
>> it will ever happen) we will discuss about this approach.
>>
>> Jacopo
>>
>>> -Adrian
>>>
>>> On 3/5/2012 6:46 AM, Jacopo Cappellato wrote:
>>>> On Mar 4, 2012, at 9:16 PM, Adrian Crum wrote:
>>>>
>>>>> 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?
>>>> First of all, I apologize for having added my personal opinion to those
>>>> comments :-) but I thought that in this way it was easier to exchange
>>>> design ideas; the comments can actually be removed.
>>>>
>>>> The reasons I think we could treat Groovy in a special way (but I don't
>>>> have a strong opinion on this) are:
>>>>
>>>> * ootb OFBiz will still be packaged with Groovy jars (they are required by
>>>> all the existing scripts and by some other code like the implementation of
>>>> "Groovy service engine" and "Groovy event handler") and so the dependency
>>>> on Groovy will still be there even if we run it with JSR-223
>>>> * the code to run Groovy in the special way is now all contained in the
>>>> ScriptUtil class and there are actually a few lines of code to maintain
>>>> for it
>>>> * keeping a custom way for Groovy has two main advantages that are not
>>>> currently used but I would like to consider in the short term (and I don't
>>>> think they are supported thru JSR-223... but I am not sure):
>>>> ** security: I would like to restrict the JVM security settings for
>>>> dynamic Groovy snippets like ${groovy: ...}; I have some concerns in this
>>>> area that I will address in a separate email soon; in this way we will
>>>> "secure" the ootb system (packaged with several groovy scripts and the
>>>> groovy jars) but of course if the user will add to it jars files for a new
>>>> scripting language (executed using JSR-223) then the security issue will
>>>> still be there, but at least the user will know about it
>>>> ** I would like to inject some OFBiz friendly methods to all Groovy
>>>> scripts, so that they can be used by Groovy scripts to run services, use
>>>> the delegator etc...
>>>>
>>>> We should also consider the impact on performance, even if the best way to
>>>> go is probably to run some performance tests on the system running Groovy
>>>> with current code and with the system running Groovy using a custom method
>>>> and then compare the results.
>>>>
>>>> Jacopo
>>>>
>>>>> -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
>>>>>>>
>>>>>>>
>>>>>>>