ovidiu 02/04/09 17:41:56
Modified: src/scratchpad/schecoon/src/org/apache/cocoon/components/flow/javascript
JavaScriptInterpreter.java
Log:
Setup parameters so they can be accessed as a native JavaScript array
using cocoon.parameters.
Revision Changes Path
1.2 +36 -6
xml-cocoon2/src/scratchpad/schecoon/src/org/apache/cocoon/components/flow/javascript/JavaScriptInterpreter.java
Index: JavaScriptInterpreter.java
===================================================================
RCS file:
/home/cvs/xml-cocoon2/src/scratchpad/schecoon/src/org/apache/cocoon/components/flow/javascript/JavaScriptInterpreter.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- JavaScriptInterpreter.java 2 Apr 2002 05:37:16 -0000 1.1
+++ JavaScriptInterpreter.java 10 Apr 2002 00:41:56 -0000 1.2
@@ -146,6 +146,18 @@
return source;
}
+ /**
+ * Calls a JavaScript function, passing <code>params</code> as its
+ * arguments. In addition to this, it makes available the parameters
+ * through the <code>cocoon.parameters</code> JavaScript array
+ * (indexed by the parameter names).
+ *
+ * @param funName a <code>String</code> value
+ * @param params a <code>List</code> value
+ * @param environment an <code>Environment</code> value
+ * @param ctx an <code>InvokeContext</code> value
+ * @exception Exception if an error occurs
+ */
public void callFunction(String funName, List params,
Environment environment, InvokeContext ctx)
throws Exception
@@ -156,6 +168,7 @@
try {
thrScope = enterContext(environment, ctx);
+ JSCocoon cocoon = (JSCocoon)thrScope.get("cocoon", thrScope);
Object callFunction = scope.get("callFunction", thrScope);
if (callFunction == Scriptable.NOT_FOUND)
@@ -172,15 +185,19 @@
int size = (params != null ? params.size() : 0);
Object[] funArgs = new Object[size];
+ NativeArray funArgsArray = new NativeArray(funArgs);
+ NativeArray parameters = new NativeArray(size);
+
if (size != 0) {
for (int i = 0; i < size; i++) {
- Object obj = ((Interpreter.Argument)params.get(i)).value;
- funArgs[i] = ScriptRuntime.toObject(cx, thrScope, obj);
+ Interpreter.Argument arg = (Interpreter.Argument)params.get(i);
+ funArgs[i] = ScriptRuntime.toObject(cx, thrScope, arg.value);
+ parameters.put(arg.name, parameters, arg.value);
}
}
- NativeArray funArgsArray = new NativeArray(funArgs);
- Object callFunArgs[] = { fun, funArgsArray };
+ cocoon.setParameters(parameters);
+ Object callFunArgs[] = { fun, funArgsArray };
((Function) callFunction).call(cx, thrScope, thrScope, callFunArgs);
}
finally {
@@ -188,8 +205,8 @@
}
}
- public void handleContinuation(String id,
- Environment environment, InvokeContext ctx)
+ public void handleContinuation(String id, List params,
+ Environment environment, InvokeContext ctx)
throws Exception
{
WebContinuation wk = continuationsMgr.lookupWebContinuation(id);
@@ -217,6 +234,19 @@
+ "(system.js not loaded?)");
Object args[] = { jswk };
+
+ int size = (params != null ? params.size() : 0);
+ NativeArray parameters = new NativeArray(size);
+
+ if (size != 0) {
+ for (int i = 0; i < size; i++) {
+ Interpreter.Argument arg = (Interpreter.Argument)params.get(i);
+ parameters.put(arg.name, parameters, arg.value);
+ }
+ }
+
+ cocoon.setParameters(parameters);
+
try {
((Function)handleContFunction).call(context, kScope, kScope, args);
}
----------------------------------------------------------------------
In case of troubles, e-mail: [EMAIL PROTECTED]
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]