cziegeler 2002/10/11 01:36:30 Modified: src/java/org/apache/cocoon/components/pipeline AbstractProcessingPipeline.java src/java/org/apache/cocoon/components/pipeline/impl AbstractCachingProcessingPipeline.java Log: Hopefully fixing caching of readers...Thanks to Volker ([EMAIL PROTECTED]) Revision Changes Path 1.24 +6 -10 xml-cocoon2/src/java/org/apache/cocoon/components/pipeline/AbstractProcessingPipeline.java Index: AbstractProcessingPipeline.java =================================================================== RCS file: /home/cvs/xml-cocoon2/src/java/org/apache/cocoon/components/pipeline/AbstractProcessingPipeline.java,v retrieving revision 1.23 retrieving revision 1.24 diff -u -r1.23 -r1.24 --- AbstractProcessingPipeline.java 17 Sep 2002 08:09:35 -0000 1.23 +++ AbstractProcessingPipeline.java 11 Oct 2002 08:36:30 -0000 1.24 @@ -475,11 +475,8 @@ if (this.checkLastModified( environment )) { return true; } - try { - return this.processReader(environment, environment.getOutputStream(this.outputBufferSize)); - } catch (IOException ioe) { - throw new ProcessingException("Processing of reader pipeline failed.", ioe); - } + + return this.processReader(environment); } else { this.setupPipeline(environment); this.connectPipeline(environment); @@ -564,8 +561,7 @@ * Process the pipeline using a reader. * @throws ProcessingException if */ - protected boolean processReader(Environment environment, - OutputStream outputStream) + protected boolean processReader(Environment environment) throws ProcessingException { try { if (this.reader.shouldSetContentLength()) { @@ -574,9 +570,9 @@ this.reader.generate(); byte[] data = os.toByteArray(); environment.setContentLength(data.length); - outputStream.write(data); + environment.getOutputStream(0).write(data); } else { - this.reader.setOutputStream(outputStream); + this.reader.setOutputStream(environment.getOutputStream(this.outputBufferSize)); this.reader.generate(); } } catch ( SocketException se ) { 1.8 +19 -5 xml-cocoon2/src/java/org/apache/cocoon/components/pipeline/impl/AbstractCachingProcessingPipeline.java Index: AbstractCachingProcessingPipeline.java =================================================================== RCS file: /home/cvs/xml-cocoon2/src/java/org/apache/cocoon/components/pipeline/impl/AbstractCachingProcessingPipeline.java,v retrieving revision 1.7 retrieving revision 1.8 diff -u -r1.7 -r1.8 --- AbstractCachingProcessingPipeline.java 13 Sep 2002 06:46:29 -0000 1.7 +++ AbstractCachingProcessingPipeline.java 11 Oct 2002 08:36:30 -0000 1.8 @@ -604,7 +604,7 @@ /** Process the pipeline using a reader. * @throws ProcessingException if an error occurs */ - protected boolean processReader(Environment environment) + protected boolean processReader(Environment environment) throws ProcessingException { try { boolean usedCache = false; @@ -706,10 +706,24 @@ } } - if (outputStream == null) { - outputStream = environment.getOutputStream(this.outputBufferSize); + + if (this.reader.shouldSetContentLength()) { + ByteArrayOutputStream os = new ByteArrayOutputStream(); + this.reader.setOutputStream(os); + this.reader.generate(); + byte[] data = os.toByteArray(); + environment.setContentLength(data.length); + if (outputStream == null) { + outputStream = environment.getOutputStream(0); + } + environment.getOutputStream(0).write(data); + } else { + if (outputStream == null) { + outputStream = environment.getOutputStream(this.outputBufferSize); + } + this.reader.setOutputStream(outputStream); + this.reader.generate(); } - super.processReader( environment, outputStream ); // store the response if (pcKey != null) {
---------------------------------------------------------------------- In case of troubles, e-mail: [EMAIL PROTECTED] To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]