You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@cocoon.apache.org by pi...@apache.org on 2003/02/26 18:15:42 UTC

cvs commit: xml-cocoon2/src/java/org/apache/cocoon/components/flow/javascript JSCocoon.java system.js

pier        2003/02/26 09:15:41

  Modified:    src/java/org/apache/cocoon/components/flow
                        AbstractInterpreter.java
               src/java/org/apache/cocoon/components/flow/javascript
                        JSCocoon.java system.js
  Log:
  Added subrequest processing from the JavaScript flow.
  
  Revision  Changes    Path
  1.12      +56 -0     xml-cocoon2/src/java/org/apache/cocoon/components/flow/AbstractInterpreter.java
  
  Index: AbstractInterpreter.java
  ===================================================================
  RCS file: /home/cvs/xml-cocoon2/src/java/org/apache/cocoon/components/flow/AbstractInterpreter.java,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- AbstractInterpreter.java	31 Jan 2003 22:51:24 -0000	1.11
  +++ AbstractInterpreter.java	26 Feb 2003 17:15:40 -0000	1.12
  @@ -57,10 +57,14 @@
   import org.apache.avalon.framework.logger.AbstractLogEnabled;
   import org.apache.avalon.framework.thread.SingleThreaded;
   import org.apache.cocoon.Constants;
  +import org.apache.cocoon.Processor;
  +import org.apache.cocoon.components.CocoonComponentManager;
   import org.apache.cocoon.components.treeprocessor.sitemap.PipelinesNode;
   import org.apache.cocoon.environment.Context;
   import org.apache.cocoon.environment.Environment;
  +import org.apache.cocoon.environment.wrapper.EnvironmentWrapper;
   
  +import java.io.OutputStream;
   import java.util.ArrayList;
   
   /**
  @@ -154,6 +158,58 @@
     {
       synchronized(this) {
         needResolve.add(source);
  +    }
  +  }
  +
  +  /**
  +   * Call the Cocoon sitemap for the given URI, sending the output of the
  +   * eventually matched pipeline to the specified outputstream.
  +   *
  +   * @param uri The URI for which the request should be generated.
  +   * @param biz Extra data associated with the subrequest.
  +   * @param out An OutputStream where the output should be written to.
  +   * @param env The environment of the original request.
  +   * @return Whatever the Cocoon processor returns (????).
  +   * @exception Exception If an error occurs.
  +   */
  +  public boolean process(String uri, Object biz, OutputStream out, Environment env)
  +  throws Exception {
  +    if (out == null) {
  +        throw new NullPointerException("No outputstream specified for process");
  +    }
  +
  +    // Create a wrapper environment for the subrequest to be processed.
  +    EnvironmentWrapper wrapper = new EnvironmentWrapper(env, uri, "", getLogger());
  +    wrapper.setURI("",uri);
  +    wrapper.setOutputStream(out);
  +    wrapper.setAttribute("bean-dict", biz);
  +
  +    // Attermpt to start processing the wrapper environment
  +    Object key = CocoonComponentManager.startProcessing(wrapper);
  +
  +    Processor processor = null;
  +    boolean result = false;
  +    try {
  +        // Retrieve a processor instance
  +        processor = (Processor)this.manager.lookup(Processor.ROLE);
  +
  +        // Enter the environment
  +        CocoonComponentManager.enterEnvironment(wrapper, wrapper.getObjectModel(), processor);
  +
  +        // Process the subrequest
  +        result = processor.process(wrapper);
  +        wrapper.commitResponse();
  +        out.flush();
  +
  +        // Return whatever the processor returned us
  +        return(result);
  +    } catch (Exception any) {
  +        throw(any);
  +    } finally {
  +        // Leave the environment, terminate processing and release processor
  +        CocoonComponentManager.leaveEnvironment();
  +        CocoonComponentManager.endProcessing(wrapper, key);
  +        this.manager.release(processor);
       }
     }
   
  
  
  
  1.17      +22 -0     xml-cocoon2/src/java/org/apache/cocoon/components/flow/javascript/JSCocoon.java
  
  Index: JSCocoon.java
  ===================================================================
  RCS file: /home/cvs/xml-cocoon2/src/java/org/apache/cocoon/components/flow/javascript/JSCocoon.java,v
  retrieving revision 1.16
  retrieving revision 1.17
  diff -u -r1.16 -r1.17
  --- JSCocoon.java	23 Feb 2003 19:26:57 -0000	1.16
  +++ JSCocoon.java	26 Feb 2003 17:15:41 -0000	1.17
  @@ -45,6 +45,7 @@
   */
   package org.apache.cocoon.components.flow.javascript;
   
  +import java.io.OutputStream;
   import java.util.Map;
   import java.util.HashMap;
   
  @@ -226,7 +227,28 @@
       if (cont != null)
         kont = ((JSWebContinuation)cont).getWebContinuation();
   
  +    if (bizData != null) System.err.println("FWD:" + bizData.getClass().getName());
  +
       interpreter.forwardTo(uri, bizData, kont, environment);
  +  }
  +
  +  /**
  +   * Call the Cocoon sitemap for the given URI, sending the output of the
  +   * eventually matched pipeline to the specified outputstream.
  +   *
  +   * @param uri The URI for which the request should be generated.
  +   * @param biz Extra data associated with the subrequest.
  +   * @param out An OutputStream where the output should be written to.
  +   * @return Whatever the Cocoon processor returns (????).
  +   * @exception Exception If an error occurs.
  +   */
  +  public boolean jsFunction_process(String uri, Object biz, Object out)
  +    throws Exception
  +  {
  +    out = jsobjectToObject(out);
  +    biz = jsobjectToObject(biz);
  +    if (biz != null) System.err.println("PRC:"+biz.getClass().getName());
  +    return interpreter.process(uri, biz, (OutputStream)out, environment);
     }
   
     /**
  
  
  
  1.8       +5 -0      xml-cocoon2/src/java/org/apache/cocoon/components/flow/javascript/system.js
  
  Index: system.js
  ===================================================================
  RCS file: /home/cvs/xml-cocoon2/src/java/org/apache/cocoon/components/flow/javascript/system.js,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- system.js	23 Feb 2003 19:20:25 -0000	1.7
  +++ system.js	26 Feb 2003 17:15:41 -0000	1.8
  @@ -43,6 +43,11 @@
                      bizData, null);
   }
   
  +function process(uri, bizData, output)
  +{
  +  cocoon.process(uri, bizData, output);
  +}
  +
   // This function is called to restart a previously saved continuation
   // passed as argument.
   function handleContinuation(kont)