cocoon-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Rob Berens (JIRA)" <j...@apache.org>
Subject [jira] Commented: (COCOON-1811) [PATCH] Flow Script: Allow dynamic loading of JavaScript objects even when scope is locked
Date Mon, 03 Apr 2006 09:46:43 GMT
    [ http://issues.apache.org/jira/browse/COCOON-1811?page=comments#action_12372922 ] 

Rob Berens commented on COCOON-1811:
------------------------------------

See the internal class ThreadScope in FOM_JavaScriptInterpreter.java. This class has a locked
flag to indicate that it is no longer allowed to add global variables to the scope. This is
checked in the put(String , Scriptable, Object) method. The lock is set after the global scope
of the scripts has been loaded and thus before any methods in the scripts are executed.
Also the statement:
function myObject() 
is implicitly interpreted as the the declaration of the var myObject and therefore the before
mentioned put method will throw an exception when a script containing this statement is loaded
fromt within the method in another script:

main.js:

cocoon.load("myScript1"); // when called from here no problem.


Alternatively:

main2.js:

function someMethod() {
    cocoon.load("myScript1"); // when called from here exception is thrown
}.


> [PATCH] Flow Script: Allow dynamic loading of JavaScript objects even when scope is locked
> ------------------------------------------------------------------------------------------
>
>          Key: COCOON-1811
>          URL: http://issues.apache.org/jira/browse/COCOON-1811
>      Project: Cocoon
>         Type: Improvement

>   Components: Blocks: Forms
>     Versions: 2.2-dev (Current SVN), 2.1.9-dev (current SVN)
>     Reporter: Rob Berens
>     Priority: Minor
>  Attachments: FOM_JavaScriptInterpreter.txt
>
> Currently it is not possible to add variables to the scope of a FOM_JavaScriptInterpreter,
unless the scope is not locked yet or when still in the main loading process or when loading
native java classes. Therefore it is not possible to dynamically load JavaScript classes like
the one below:.
> -------------------------------
> function myObject() {                // at this point the current
> implementation throws the exception
>      // constructor for myObject
> }
> myObject.prototype.myMethod = function() {
>     // implementation of myMethod
> }
> -------------------------------
> from within a script fragment like this one:
> -------------------------------
> function loadScript() {
>     var scriptURI = "determineScriptURIFromRequest";
>     cocoon.load(scriptURI);
> }
> -------------------------------
> The attached patch solves this by allowing also objects of the type org.mozilla.javascript.Function
to be loaded into a locked scope.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira


Mime
View raw message