ovidiu 02/03/21 15:23:30 Modified: src/scratchpad/schecoon/src/org/apache/cocoon/components/flow/javascript JSCocoon.java Log: Added setter and getter for the ContinuationsManager. (jsFunction_processPipeline): Check if the pipeline was already executed. (jsFunction_lookupContinuation, jsFunction_diplayAllContinuations): New methods. Revision Changes Path 1.4 +57 -1 xml-cocoon2/src/scratchpad/schecoon/src/org/apache/cocoon/components/flow/javascript/JSCocoon.java Index: JSCocoon.java =================================================================== RCS file: /home/cvs/xml-cocoon2/src/scratchpad/schecoon/src/org/apache/cocoon/components/flow/javascript/JSCocoon.java,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- JSCocoon.java 19 Mar 2002 09:38:21 -0000 1.3 +++ JSCocoon.java 21 Mar 2002 23:23:30 -0000 1.4 @@ -2,7 +2,11 @@ import java.util.HashMap; import java.util.Map; +import org.apache.avalon.framework.component.ComponentManager; import org.apache.cocoon.components.flow.AbstractInterpreter; +import org.apache.cocoon.components.flow.ContinuationsManager; +import org.apache.cocoon.components.flow.ContinuationsManagerImpl; +import org.apache.cocoon.components.flow.WebContinuation; import org.apache.cocoon.components.treeprocessor.InvokeContext; import org.apache.cocoon.environment.Context; import org.apache.cocoon.environment.Environment; @@ -14,6 +18,7 @@ import org.mozilla.javascript.ScriptableObject; import org.mozilla.javascript.Wrapper; + /** * JavaScript interface to various Cocoon abstractions. * @@ -25,6 +30,9 @@ protected AbstractInterpreter interp; protected Environment environment; protected InvokeContext context; + protected ComponentManager manager; + protected ContinuationsManager continuationsMgr; + protected boolean responseSent = false; public JSCocoon() {} @@ -38,12 +46,24 @@ this.interp = interp; } - public void setContext(Environment environment, InvokeContext ctx) + public void setContext(ComponentManager manager, Environment environment, + InvokeContext ctx) { + this.manager = manager; this.environment = environment; this.context = ctx; } + public void setContinuationsManager(ContinuationsManager mgr) + { + this.continuationsMgr = mgr; + } + + ContinuationsManager getContinuationsManager() + { + return continuationsMgr; + } + public AbstractInterpreter jsGet_interpreter() { return interp; @@ -100,10 +120,22 @@ return null; } + public String jsFunction_toString() + { + return "[object " + toString() + "]"; + } + public void jsFunction_processPipeline(String name, Object pipelineArgs, Object bizData) throws Exception { + if (responseSent) { + System.out.println("Response was already sent!"); + return; + } + else + responseSent = true; + if (pipelineArgs instanceof Wrapper) pipelineArgs = ((Wrapper)pipelineArgs).unwrap(); else if (pipelineArgs instanceof Scriptable) @@ -122,6 +154,30 @@ finally { environment.removeAttribute("bean-dict"); } + } + + public Scriptable jsFunction_lookupContinuation(String id) + throws Exception + { + WebContinuation wk = continuationsMgr.lookupWebContinuation(id); + JSWebContinuation jswk = null; + if (wk != null) + jswk = (JSWebContinuation)wk.getUserObject(); + return jswk; + } + + public void jsFunction_diplayAllContinuations() + { + if (continuationsMgr instanceof ContinuationsManagerImpl) + ((ContinuationsManagerImpl)continuationsMgr).displayAllContinuations(); + } + + // All right, this breaks the encapsulation, but I couldn't + // find any better way to obtain the ComponentManager from a + // JSWebContinuation. + ComponentManager getComponentManager() + { + return manager; } public static Map jsobjectToMap(Scriptable jsobject)
---------------------------------------------------------------------- In case of troubles, e-mail: [EMAIL PROTECTED] To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]