cziegeler 2003/01/09 03:27:59
Modified: src/java/org/apache/cocoon/components/pipeline
ProcessingPipeline.java
AbstractProcessingPipeline.java
src/java/org/apache/cocoon/components/source/impl
SitemapSource.java
src/java/org/apache/cocoon Cocoon.java
Log:
Caching now works again, if internal requests are aggregated
Revision Changes Path
1.13 +10 -1
xml-cocoon2/src/java/org/apache/cocoon/components/pipeline/ProcessingPipeline.java
Index: ProcessingPipeline.java
===================================================================
RCS file:
/home/cvs/xml-cocoon2/src/java/org/apache/cocoon/components/pipeline/ProcessingPipeline.java,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -r1.12 -r1.13
--- ProcessingPipeline.java 5 Dec 2002 10:10:45 -0000 1.12
+++ ProcessingPipeline.java 9 Jan 2003 11:27:59 -0000 1.13
@@ -160,8 +160,17 @@
throws ProcessingException;
/**
+ * Prepare an internal processing
+ * @param environment The current environment.
+ * @throws ProcessingException
+ */
+ void prepareInternal(Environment environment)
+ throws ProcessingException;
+
+ /**
* Process the given <code>Environment</code>, but do not use the
* serializer. Instead the sax events are streamed to the XMLConsumer.
+ * Make sure to call {@link #prepareInternal(Environment) beforehand.
*/
boolean process(Environment environment, XMLConsumer consumer)
throws ProcessingException;
1.26 +35 -14
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.25
retrieving revision 1.26
diff -u -r1.25 -r1.26
--- AbstractProcessingPipeline.java 5 Dec 2002 10:10:45 -0000 1.25
+++ AbstractProcessingPipeline.java 9 Jan 2003 11:27:59 -0000 1.26
@@ -460,6 +460,24 @@
*/
public boolean process(Environment environment)
throws ProcessingException {
+ this.preparePipeline(environment);
+ if ( this.reader != null ) {
+ if (this.checkLastModified( environment )) {
+ return true;
+ }
+
+ return this.processReader(environment);
+ } else {
+ this.connectPipeline(environment);
+ return this.processXMLPipeline(environment);
+ }
+ }
+
+ /**
+ * Prepare the pipeline
+ */
+ protected void preparePipeline(Environment environment)
+ throws ProcessingException {
if ( !checkPipeline() ) {
throw new ProcessingException("Attempted to process incomplete
pipeline.");
}
@@ -473,18 +491,22 @@
}
if ( this.reader != null ) {
this.setupReader( environment );
- if (this.checkLastModified( environment )) {
- return true;
- }
-
- return this.processReader(environment);
} else {
this.setupPipeline(environment);
- this.connectPipeline(environment);
- return this.processXMLPipeline(environment);
}
}
-
+
+ /**
+ * Prepare an internal processing
+ * @param environment The current environment.
+ * @throws ProcessingException
+ */
+ public void prepareInternal(Environment environment)
+ throws ProcessingException {
+ this.lastConsumer = null;
+ this.preparePipeline(environment);
+ }
+
/**
* Process the SAX event pipeline
*/
@@ -640,15 +662,14 @@
*/
public boolean process(Environment environment, XMLConsumer consumer)
throws ProcessingException {
- if ( !checkPipeline() ) {
- throw new ProcessingException("Attempted to process incomplete
pipeline.");
- }
+ this.lastConsumer = consumer;
if ( this.reader != null ) {
// FIXME (CZ) We *could* use the xmlizer here...but does this make
sense?!?
throw new ProcessingException("Streaming of pipeline is not possible
with a reader.");
+ } else {
+ this.connectPipeline(environment);
+ return this.processXMLPipeline(environment);
}
- this.lastConsumer = consumer;
- return this.process( environment );
}
/**
1.32 +2 -1
xml-cocoon2/src/java/org/apache/cocoon/components/source/impl/SitemapSource.java
Index: SitemapSource.java
===================================================================
RCS file:
/home/cvs/xml-cocoon2/src/java/org/apache/cocoon/components/source/impl/SitemapSource.java,v
retrieving revision 1.31
retrieving revision 1.32
diff -u -r1.31 -r1.32
--- SitemapSource.java 9 Jan 2003 10:34:29 -0000 1.31
+++ SitemapSource.java 9 Jan 2003 11:27:59 -0000 1.32
@@ -336,6 +336,7 @@
this.processKey =
CocoonComponentManager.startProcessing(this.environment);
this.environment.setURI(this.prefix, this.uri);
this.processingPipeline =
this.processor.processInternal(this.environment);
+ this.processingPipeline.prepareInternal(this.environment);
this.pipelineProcessor = this.environment.changeToLastContext();
String redirectURL = this.environment.getRedirectURL();
if (redirectURL == null) {
1.44 +5 -1 xml-cocoon2/src/java/org/apache/cocoon/Cocoon.java
Index: Cocoon.java
===================================================================
RCS file: /home/cvs/xml-cocoon2/src/java/org/apache/cocoon/Cocoon.java,v
retrieving revision 1.43
retrieving revision 1.44
diff -u -r1.43 -r1.44
--- Cocoon.java 4 Dec 2002 09:48:40 -0000 1.43
+++ Cocoon.java 9 Jan 2003 11:27:59 -0000 1.44
@@ -586,6 +586,9 @@
environment.setComponents( this.sourceResolver, this.xmlizer );
Object key = CocoonComponentManager.startProcessing(environment);
try {
+ CocoonComponentManager.enterEnvironment(environment,
+ environment.getObjectModel(),
+ this);
boolean result;
if (this.getLogger().isDebugEnabled()) {
++activeRequestCount;
@@ -611,6 +614,7 @@
environment.tryResetResponse();
throw any;
} finally {
+ CocoonComponentManager.leaveEnvironment();
CocoonComponentManager.endProcessing(environment, key);
if (this.getLogger().isDebugEnabled()) {
--activeRequestCount;
----------------------------------------------------------------------
In case of troubles, e-mail: [EMAIL PROTECTED]
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]