You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@cocoon.apache.org by sy...@apache.org on 2002/02/01 16:14:54 UTC

cvs commit: xml-cocoon2/src/java/org/apache/cocoon/environment/wrapper EnvironmentWrapper.java

sylvain     02/02/01 07:14:54

  Modified:    .        changes.xml
               src/java/org/apache/cocoon/components/source
                        SitemapSource.java
               src/java/org/apache/cocoon/environment/wrapper
                        EnvironmentWrapper.java
  Log:
  Calling getInputStream() on a "cocoon:" source now returns the same output
  as an external call instead of always using an XML serializer.
  This also allows to get internally data produced by a Reader.
  
  Revision  Changes    Path
  1.93      +6 -1      xml-cocoon2/changes.xml
  
  Index: changes.xml
  ===================================================================
  RCS file: /home/cvs/xml-cocoon2/changes.xml,v
  retrieving revision 1.92
  retrieving revision 1.93
  diff -u -r1.92 -r1.93
  --- changes.xml	1 Feb 2002 14:53:46 -0000	1.92
  +++ changes.xml	1 Feb 2002 15:14:54 -0000	1.93
  @@ -4,7 +4,7 @@
   
   <!--
     History of Cocoon changes
  -  $Id: changes.xml,v 1.92 2002/02/01 14:53:46 vgritsenko Exp $
  +  $Id: changes.xml,v 1.93 2002/02/01 15:14:54 sylvain Exp $
   -->
   
   <changes title="History of Changes">
  @@ -31,6 +31,11 @@
    </devs>
   
    <release version="@version@" date="@date@">
  +  <action dev="SW" type="update">
  +    Calling getInputStream() on a "cocoon:" source now returns the same output
  +    as an external call instead of always using an XML serializer.
  +    This also allows to get internally data produced by a Reader.
  +  </action>
     <action dev="VG" type="fix">
       Fixed memory leaks in XScript engine. Fixed global and session scope
       variables: now they are shared between XScript pages as it should be.
  
  
  
  1.4       +14 -15    xml-cocoon2/src/java/org/apache/cocoon/components/source/SitemapSource.java
  
  Index: SitemapSource.java
  ===================================================================
  RCS file: /home/cvs/xml-cocoon2/src/java/org/apache/cocoon/components/source/SitemapSource.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- SitemapSource.java	31 Jan 2002 16:44:23 -0000	1.3
  +++ SitemapSource.java	1 Feb 2002 15:14:54 -0000	1.4
  @@ -39,13 +39,14 @@
   import java.io.ByteArrayOutputStream;
   import java.io.IOException;
   import java.io.InputStream;
  +import java.io.OutputStream;
   import java.util.Map;
   
   /**
    * Description of a source which is defined by a pipeline.
    *
    * @author <a href="mailto:cziegeler@apache.org">Carsten Ziegeler</a>
  - * @version CVS $Revision: 1.3 $ $Date: 2002/01/31 16:44:23 $
  + * @version CVS $Revision: 1.4 $ $Date: 2002/02/01 15:14:54 $
    */
   
   public final class SitemapSource
  @@ -170,7 +171,8 @@
        * Return an <code>InputStream</code> object to read from the source.
        */
       public InputStream getInputStream()
  -    throws ProcessingException, IOException {
  +      throws ProcessingException, IOException {
  +
           if (this.needsRefresh) {
               this.refresh();
           }
  @@ -178,27 +180,24 @@
           if (this.exception != null) {
               throw this.exception;
           }
  -        ComponentSelector serializerSelector = null;
  -        Serializer serializer = null;
  +        
  +        if (this.redirectSource != null) {
  +            return this.redirectSource.getInputStream();
  +        }
  +        
           try {
  -
  -            serializerSelector = (ComponentSelector) this.manager.lookup(Serializer.ROLE + "Selector");
  -            serializer = (Serializer)serializerSelector.select("xml");
               ByteArrayOutputStream os = new ByteArrayOutputStream();
  -            serializer.setOutputStream(os);
  -
  -            this.toSAX(serializer);
  -
  +            this.environment.setOutputStream(os);
  +            this.pipeline.process(this.environment);
               return new ByteArrayInputStream(os.toByteArray());
  -        } catch (ComponentException cme) {
  -            throw new ProcessingException("could not lookup pipeline components", cme);
  +            
           } catch (ProcessingException e) {
               throw e;
           } catch (Exception e) {
               throw new ProcessingException("Exception during processing of " + this.systemId, e);
           } finally {
  -            if (serializer != null) serializerSelector.release(serializer);
  -            if (serializerSelector != null) this.manager.release(serializerSelector);
  +            // Unhide wrapped environment output stream
  +            this.environment.setOutputStream(null);
               reset();
           }
       }
  
  
  
  1.4       +15 -2     xml-cocoon2/src/java/org/apache/cocoon/environment/wrapper/EnvironmentWrapper.java
  
  Index: EnvironmentWrapper.java
  ===================================================================
  RCS file: /home/cvs/xml-cocoon2/src/java/org/apache/cocoon/environment/wrapper/EnvironmentWrapper.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- EnvironmentWrapper.java	22 Jan 2002 00:17:13 -0000	1.3
  +++ EnvironmentWrapper.java	1 Feb 2002 15:14:54 -0000	1.4
  @@ -30,7 +30,7 @@
    * contains a <code>RequestWrapper</code> object.
    *
    * @author <a href="mailto:cziegeler@apache.org">Carsten Ziegeler</a>
  - * @version $Id: EnvironmentWrapper.java,v 1.3 2002/01/22 00:17:13 vgritsenko Exp $
  + * @version $Id: EnvironmentWrapper.java,v 1.4 2002/02/01 15:14:54 sylvain Exp $
    */
   public final class EnvironmentWrapper
   extends AbstractEnvironment
  @@ -50,10 +50,15 @@
   
       /** The last context */
       private URL lastContext;
  +    
       /** The last prefix */
       private String lastPrefix;
  +    
       /** The last uri */
       private String lastURI;
  +    
  +    /** The stream to output to */
  +    private OutputStream outputStream;
   
       /**
        * Constructs an EnvironmentWrapper object from a Request
  @@ -121,7 +126,15 @@
        */
       public OutputStream getOutputStream()
       throws IOException {
  -        return this.environment.getOutputStream();
  +        return (this.outputStream == null) ? this.environment.getOutputStream() : this.outputStream;
  +    }
  +    
  +    /**
  +     * Set the output stream for this environment. It hides the one of the
  +     * wrapped environment.
  +     */
  +    public void setOutputStream(OutputStream stream) {
  +        this.outputStream = stream;
       }
   
       /**
  
  
  

----------------------------------------------------------------------
In case of troubles, e-mail:     webmaster@xml.apache.org
To unsubscribe, e-mail:          cocoon-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: cocoon-cvs-help@xml.apache.org