Good, if nobody complains, I'll commit the change later today.

Thanks,
Alex

On 08/23/2010 11:00 AM, Alex Busenius wrote:
> Hello,
> 
> 
> I'd like to refactor AbstractScriptMacro in order to be able to change
> script behavior in the future without fanout violations. Here is the
> plan emerged after several discussions with ThomasM:
> 
> 
> Introduce a notion of cancelable events. Such events can be canceled by
> the receiver (providing an optional reason), the actual canceling is
> performed by the sender.
> 
> http://dev.xwiki.org/xwiki/bin/view/Design/CancelableEvents
> 
> 
> Send a cancelable event ScriptEvaluationStartsEvent in
> AbstractScriptMacro just before evaluating the script and a
> ScriptEvaluationFinishedEvent right after evaluation has finished (in
> finally block).
> 
> 
> Add the following 3 listeners to those events (into
> rendering.internal.macro.script) and move the corresponding code from
> AbstractScriptMacro there:
> 
> ScriptClassLoaderHandlerListener
> * does class loader manipulations currently performed by
>   AbstractScriptMacro#getClassLoader & Co
> 
> PermissionCheckerListener
> * Aborts execution of scripts that need PR if the document is not saved
>   with PR
> * To distinguish velocity and PR scripts, introduce a new interface
>   PrivilegedScriptMacro extends ScriptMacro and let
>   AbstractJSR223ScriptMacro implement it
> 
> NestedScriptMacroValidatorListener
> * Replaces NestedScriptMacroValidator (ScriptMacroValidator component
>   is removed completely)
> 
> 
> The refactoring will remove the following methods (breaks API):
> 
> AbstractJSR223ScriptMacro:
> * protected boolean canExecuteScript()
> * public List execute(JSR223ScriptMacroParameters, String,
>   MacroTransformationContext)
> 
> AbstractScriptMacro:
> * protected boolean canHaveJarsParameters()
> * protected ClassLoader getClassLoader(String, ClassLoader)
> 
> 
> WDYT?
> 
> 
> Alex
> _______________________________________________
> devs mailing list
> [email protected]
> http://lists.xwiki.org/mailman/listinfo/devs
> 
_______________________________________________
devs mailing list
[email protected]
http://lists.xwiki.org/mailman/listinfo/devs

Reply via email to