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 2001/12/10 13:56:23 UTC
cvs commit: xml-cocoon2/src/org/apache/cocoon/sitemap sitemap.roles
sylvain 01/12/10 04:56:23
Modified: . changes.xml
src/org/apache/cocoon cocoon.roles
src/org/apache/cocoon/components/language/markup/sitemap/java
sitemap.xsl
src/org/apache/cocoon/components/pipeline
AbstractEventPipeline.java
AbstractStreamPipeline.java
CachingEventPipeline.java
CachingStreamPipeline.java EventPipeline.java
StreamPipeline.java
src/org/apache/cocoon/sitemap sitemap.roles
Log:
The cache works again as expected.
Also made StreamPipeline and EventPipeline Recomposable instead of just Composable (sitemap.xsl changes the component manager initially set).
Revision Changes Path
1.55 +5 -1 xml-cocoon2/changes.xml
Index: changes.xml
===================================================================
RCS file: /home/cvs/xml-cocoon2/changes.xml,v
retrieving revision 1.54
retrieving revision 1.55
diff -u -r1.54 -r1.55
--- changes.xml 2001/12/09 17:08:17 1.54
+++ changes.xml 2001/12/10 12:56:22 1.55
@@ -4,7 +4,7 @@
<!--
History of Cocoon changes
- $Id: changes.xml,v 1.54 2001/12/09 17:08:17 gianugo Exp $
+ $Id: changes.xml,v 1.55 2001/12/10 12:56:22 sylvain Exp $
-->
<changes title="History of Changes">
@@ -28,6 +28,10 @@
</devs>
<release version="2.1-dev" date="@date@">
+ <action dev="SW" type="fix">
+ Made the cach work again by updating cocoon.roles, sitemap.roles and making EventPipeline
+ and StreamPipeline implement Recomposable instead of just Composable.
+ </action>
<action dev="GR" type="add">
Added the XML:DB pseudo protocol
</action>
1.32 +0 -29 xml-cocoon2/src/org/apache/cocoon/cocoon.roles
Index: cocoon.roles
===================================================================
RCS file: /home/cvs/xml-cocoon2/src/org/apache/cocoon/cocoon.roles,v
retrieving revision 1.31
retrieving revision 1.32
diff -u -r1.31 -r1.32
--- cocoon.roles 2001/12/09 21:36:42 1.31
+++ cocoon.roles 2001/12/10 12:56:22 1.32
@@ -133,7 +133,6 @@
shorthand="xscript"
default-class="org.apache.cocoon.components.xscript.XScriptManagerImpl"/>
- <!-- sitemap roles -->
<role name="org.apache.cocoon.components.pipeline.StreamPipeline"
shorthand="stream-pipeline"
default-class="org.apache.cocoon.components.pipeline.NonCachingStreamPipeline"/>
@@ -144,34 +143,6 @@
<role name="org.apache.cocoon.components.saxconnector.SAXConnector"
shorthand="sax-connector"/>
-
- <role name="org.apache.cocoon.acting.ActionSelector"
- shorthand="action"
- default-class="org.apache.cocoon.sitemap.SitemapComponentSelector"/>
-
- <role name="org.apache.cocoon.selection.SelectorSelector"
- shorthand="selector"
- default-class="org.apache.cocoon.sitemap.SitemapComponentSelector"/>
-
- <role name="org.apache.cocoon.matching.MatcherSelector"
- shorthand="matcher"
- default-class="org.apache.cocoon.sitemap.SitemapComponentSelector"/>
-
- <role name="org.apache.cocoon.generation.GeneratorSelector"
- shorthand="generator"
- default-class="org.apache.cocoon.sitemap.SitemapComponentSelector"/>
-
- <role name="org.apache.cocoon.transformation.TransformerSelector"
- shorthand="transformer"
- default-class="org.apache.cocoon.sitemap.SitemapComponentSelector"/>
-
- <role name="org.apache.cocoon.serialization.SerializerSelector"
- shorthand="serializer"
- default-class="org.apache.cocoon.sitemap.SitemapComponentSelector"/>
-
- <role name="org.apache.cocoon.reading.ReaderSelector"
- shorthand="reader"
- default-class="org.apache.cocoon.sitemap.SitemapComponentSelector"/>
<role name="org.apache.avalon.excalibur.monitor.Monitor"
shorthand="monitor"
1.54 +16 -16 xml-cocoon2/src/org/apache/cocoon/components/language/markup/sitemap/java/sitemap.xsl
Index: sitemap.xsl
===================================================================
RCS file: /home/cvs/xml-cocoon2/src/org/apache/cocoon/components/language/markup/sitemap/java/sitemap.xsl,v
retrieving revision 1.53
retrieving revision 1.54
diff -u -r1.53 -r1.54
--- sitemap.xsl 2001/12/10 09:05:54 1.53
+++ sitemap.xsl 2001/12/10 12:56:22 1.54
@@ -126,7 +126,7 @@
*
* @author <a href="mailto:giacomo@apache.org">Giacomo Pati</a>
* @author <a href="mailto:bloritsch@apache.org">Berin Loritsch</a>
- * @version CVS $Id: sitemap.xsl,v 1.53 2001/12/10 09:05:54 haul Exp $
+ * @version CVS $Id: sitemap.xsl,v 1.54 2001/12/10 12:56:22 sylvain Exp $
*/
public class <xsl:value-of select="@file-name"/> extends AbstractSitemap {
static final String LOCATION = "<xsl:value-of select="translate(@file-path, '/', '.')"/>.<xsl:value-of select="@file-name"/>";
@@ -625,8 +625,8 @@
EventPipeline eventPipeline, boolean internalRequest)
throws Exception {
// set the correct component manager
- pipeline.compose(this.manager);
- eventPipeline.compose(this.manager);
+ pipeline.recompose(this.manager);
+ eventPipeline.recompose(this.manager);
/* the <code>List</code> objects to hold the replacement values
delivered from matchers and selectors to replace occurences of
@@ -1395,21 +1395,21 @@
<xsl:choose>
<xsl:when test="map:parameter">
- map = new HashMap(<xsl:value-of select="count(map:parameter)"/>);
+ map = new HashMap(<xsl:value-of select="count(map:parameter)"/>);
- <xsl:for-each select="map:parameter">
- <xsl:variable name="name">
- <xsl:call-template name="get-parameter">
- <xsl:with-param name="parname">name</xsl:with-param>
- </xsl:call-template>
- </xsl:variable>
- <xsl:variable name="value">
- <xsl:call-template name="get-parameter">
- <xsl:with-param name="parname">value</xsl:with-param>
- </xsl:call-template>
- </xsl:variable>
- map.put("<xsl:value-of select="$name"/>", substitute(listOfMaps, "<xsl:value-of select="$value"/>"));
- </xsl:for-each>
+ <xsl:for-each select="map:parameter">
+ <xsl:variable name="name">
+ <xsl:call-template name="get-parameter">
+ <xsl:with-param name="parname">name</xsl:with-param>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name="value">
+ <xsl:call-template name="get-parameter">
+ <xsl:with-param name="parname">value</xsl:with-param>
+ </xsl:call-template>
+ </xsl:variable>
+ map.put("<xsl:value-of select="$name"/>", substitute(listOfMaps, "<xsl:value-of select="$value"/>"));
+ </xsl:for-each>
</xsl:when>
1.18 +56 -43 xml-cocoon2/src/org/apache/cocoon/components/pipeline/AbstractEventPipeline.java
Index: AbstractEventPipeline.java
===================================================================
RCS file: /home/cvs/xml-cocoon2/src/org/apache/cocoon/components/pipeline/AbstractEventPipeline.java,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -r1.17 -r1.18
--- AbstractEventPipeline.java 2001/11/28 11:18:45 1.17
+++ AbstractEventPipeline.java 2001/12/10 12:56:22 1.18
@@ -31,34 +31,42 @@
/**
* @author <a href="mailto:Giacomo.Pati@pwr.ch">Giacomo Pati</a>
* @author <a href="mailto:cziegeler@Carsten Ziegeler">Carsten Ziegeler</a>
- * @version CVS $Revision: 1.17 $ $Date: 2001/11/28 11:18:45 $
+ * @author <a href="mailto:sylvain@apache.org">Sylvain Wallez</a>
+ * @version CVS $Revision: 1.18 $ $Date: 2001/12/10 12:56:22 $
*/
public abstract class AbstractEventPipeline
-extends AbstractXMLProducer
-implements EventPipeline, Disposable {
+ extends AbstractXMLProducer
+ implements EventPipeline, Disposable {
+ // Generator stuff
protected Generator generator;
protected Parameters generatorParam;
protected String generatorSource;
protected ComponentSelector generatorSelector;
- protected ComponentSelector transformerSelector;
+
+ // Transformer stuff
protected ArrayList transformers = new ArrayList();
protected ArrayList transformerParams = new ArrayList();
protected ArrayList transformerSources = new ArrayList();
+ protected ArrayList transformerSelectors = new ArrayList();
+
protected ArrayList connectors = new ArrayList();
- /** the component manager */
+ /** the component manager set with compose() */
protected ComponentManager manager;
+
+ /** the component manager set with compose() and recompose() */
+ protected ComponentManager newManager;
- /** is a SAXConnector configured? */
- protected boolean configuredSAXConnector;
-
public void compose (ComponentManager manager)
throws ComponentException {
this.manager = manager;
- generatorSelector = (ComponentSelector) this.manager.lookup(Generator.ROLE + "Selector");
- transformerSelector = (ComponentSelector) this.manager.lookup(Transformer.ROLE + "Selector");
- this.configuredSAXConnector = this.manager.hasComponent(SAXConnector.ROLE);
+ this.newManager = manager;
+ }
+
+ public void recompose (ComponentManager manager)
+ throws ComponentException {
+ this.newManager = manager;
}
public void setGenerator (String role, String source, Parameters param, Exception e)
@@ -77,7 +85,8 @@
if (this.generator != null) {
throw new ProcessingException ("Generator already set. You can only select one Generator (" + role + ")");
}
- this.generator = (Generator) generatorSelector.select(role);
+ this.generatorSelector = (ComponentSelector) this.newManager.lookup(Generator.ROLE + "Selector");
+ this.generator = (Generator) this.generatorSelector.select(role);
this.generatorSource = source;
this.generatorParam = param;
}
@@ -88,9 +97,11 @@
public void addTransformer (String role, String source, Parameters param)
throws Exception {
- this.transformers.add ((Transformer)transformerSelector.select(role));
- this.transformerSources.add (source);
- this.transformerParams.add (param);
+ ComponentSelector selector = (ComponentSelector) this.newManager.lookup(Transformer.ROLE + "Selector");
+ this.transformerSelectors.add(selector);
+ this.transformers.add((Transformer)selector.select(role));
+ this.transformerSources.add(source);
+ this.transformerParams.add(param);
}
public boolean process(Environment environment) throws Exception {
@@ -177,16 +188,19 @@
/** Connect the pipeline.
*/
protected void connectPipeline(Environment environment) throws ProcessingException {
- XMLProducer prev = (XMLProducer) this.generator;
+ XMLProducer prev = (XMLProducer)this.generator;
XMLConsumer next;
+
+ // Looked up in manager and not newManager (it's not a sitemap component)
+ boolean configuredSAXConnector = this.manager.hasComponent(SAXConnector.ROLE);
try {
Iterator itt = this.transformers.iterator();
while ( itt.hasNext() ) {
- if (this.configuredSAXConnector == true) {
+ if (configuredSAXConnector) {
// connect SAXConnector
SAXConnector connect = (SAXConnector) this.manager.lookup(SAXConnector.ROLE);
- connect.setup(environment,environment.getObjectModel(),null,null);
+ connect.setup(environment,environment.getObjectModel(), null, null);
this.connectors.add(connect);
next = connect;
prev.setConsumer(next);
@@ -199,10 +213,10 @@
prev = trans;
}
- if (this.configuredSAXConnector == true) {
+ if (configuredSAXConnector) {
// insert SAXConnector
SAXConnector connect = (SAXConnector) this.manager.lookup(SAXConnector.ROLE);
- connect.setup(environment,environment.getObjectModel(),null,null);
+ connect.setup(environment,environment.getObjectModel(), null, null);
this.connectors.add(connect);
next = connect;
prev.setConsumer(next);
@@ -229,32 +243,22 @@
}
- public void dispose() {
- if(generatorSelector != null){
- manager.release(generatorSelector);
- generatorSelector = null;
- }
- if(transformerSelector != null){
- manager.release(transformerSelector);
- transformerSelector = null;
- }
- }
-
public void recycle() {
super.recycle();
try {
// Release generator.
- if ( generatorSelector != null && this.generator != null ) {
+ if ( generatorSelector != null ) {
generatorSelector.release(this.generator);
}
// Release transformers
- if ( transformerSelector != null ) {
- Iterator itt = this.transformers.iterator();
- while ( itt.hasNext() ) {
- transformerSelector.release((Component)itt.next());
- }
+ int size = this.transformerSelectors.size();
+ for (int i = 0; i < size; i++)
+ {
+ ((ComponentSelector)this.transformerSelectors.get(i)).release(
+ (Component)this.transformers.get(i)
+ );
}
// Release connectors
@@ -267,12 +271,21 @@
"Failed to release components from event pipeline.",
e
);
+ } finally {
+
+ // FIXME : in theory selectors should be released on their respective managers
+ // but this causes no harm since they're ThreadSafe
+ this.generatorSelector = null;
+ this.generator = null;
+ this.transformerSelectors.clear();
+ this.transformers.clear();
+ this.transformerParams.clear();
+ this.transformerSources.clear();
+ this.connectors.clear();
}
-
- this.generator = null;
- this.transformers.clear();
- this.transformerParams.clear();
- this.transformerSources.clear();
- this.connectors.clear();
+ }
+
+ public void dispose() {
+ // Nothing here
}
}
1.12 +24 -17 xml-cocoon2/src/org/apache/cocoon/components/pipeline/AbstractStreamPipeline.java
Index: AbstractStreamPipeline.java
===================================================================
RCS file: /home/cvs/xml-cocoon2/src/org/apache/cocoon/components/pipeline/AbstractStreamPipeline.java,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -r1.11 -r1.12
--- AbstractStreamPipeline.java 2001/10/11 07:28:18 1.11
+++ AbstractStreamPipeline.java 2001/12/10 12:56:22 1.12
@@ -30,7 +30,8 @@
* </UL>
* @author <a href="mailto:Giacomo.Pati@pwr.ch">Giacomo Pati</a>
* @author <a href="mailto:cziegeler@apache.org">Carsten Ziegeler</a>
- * @version CVS $Revision: 1.11 $ $Date: 2001/10/11 07:28:18 $
+ * @author <a href="mailto:sylvain@apache.org">Sylvain Wallez</a>
+ * @version CVS $Revision: 1.12 $ $Date: 2001/12/10 12:56:22 $
*/
public abstract class AbstractStreamPipeline extends AbstractLoggable implements StreamPipeline, Disposable {
protected EventPipeline eventPipeline;
@@ -47,8 +48,11 @@
protected SitemapComponentSelector readerSelector;
protected SitemapComponentSelector serializerSelector;
- /** the component manager */
+ /** the component manager set with compose() */
protected ComponentManager manager;
+
+ /** the component manager set with compose() and recompose() */
+ protected ComponentManager newManager;
/**
* Pass the <code>ComponentManager</code> to the <code>Composable</code>.
@@ -61,10 +65,14 @@
* @throws ComponentException */
public void compose (ComponentManager manager) throws ComponentException {
this.manager = manager;
- readerSelector = (SitemapComponentSelector) this.manager.lookup(Reader.ROLE + "Selector");
- serializerSelector = (SitemapComponentSelector) this.manager.lookup(Serializer.ROLE + "Selector");
+ this.newManager = manager;
}
+ public void recompose (ComponentManager manager)
+ throws ComponentException {
+ this.newManager = manager;
+ }
+
public void setEventPipeline (EventPipeline eventPipeline) throws Exception {
if (this.eventPipeline != null) {
throw new ProcessingException ("EventPipeline already set. You can only select one EventPipeline ");
@@ -86,6 +94,7 @@
if (this.reader != null) {
throw new ProcessingException ("Reader already set. You can only select one Reader (" + role + ")");
}
+ this.readerSelector = (SitemapComponentSelector) this.newManager.lookup(Reader.ROLE + "Selector");
this.reader = (Reader)readerSelector.select(role);
this.readerSource = source;
this.readerParam = param;
@@ -103,6 +112,7 @@
if (this.serializer != null) {
throw new ProcessingException ("Serializer already set. You can only select one Serializer (" + role + ")");
}
+ this.serializerSelector = (SitemapComponentSelector) this.newManager.lookup(Serializer.ROLE + "Selector");
this.serializer = (Serializer)serializerSelector.select(role);
this.serializerSource = source;
this.serializerParam = param;
@@ -241,41 +251,38 @@
}
public void dispose() {
- if(readerSelector != null)
- manager.release(readerSelector);
- if(serializerSelector != null)
- manager.release(serializerSelector);
+ // Nothing here
}
public void recycle() {
try {
// release reader.
if ( this.readerSelector != null) {
- if ( this.reader != null ) {
- readerSelector.release(this.reader);
- }
+ readerSelector.release(this.reader);
}
- this.reader = null;
// release eventPipeline
this.eventPipeline = null;
// release serializer
if ( this.serializerSelector != null ) {
- if ( this.serializer != null ) {
- serializerSelector.release(this.serializer);
- }
+ serializerSelector.release(this.serializer);
}
- this.serializer = null;
+
} catch ( Exception e ) {
getLogger().warn(
"Failed to release components from AbstractStreamPipeline.",
e
);
} finally {
+ // FIXME : in theory selectors should be released on their respective managers
+ // but this causes no harm since they're ThreadSafe
+ this.readerSelector = null;
this.reader = null;
- this.eventPipeline = null;
+ this.serializerSelector = null;
this.serializer = null;
+
+ this.eventPipeline = null;
}
}
}
1.20 +6 -5 xml-cocoon2/src/org/apache/cocoon/components/pipeline/CachingEventPipeline.java
Index: CachingEventPipeline.java
===================================================================
RCS file: /home/cvs/xml-cocoon2/src/org/apache/cocoon/components/pipeline/CachingEventPipeline.java,v
retrieving revision 1.19
retrieving revision 1.20
diff -u -r1.19 -r1.20
--- CachingEventPipeline.java 2001/10/11 07:28:18 1.19
+++ CachingEventPipeline.java 2001/12/10 12:56:22 1.20
@@ -41,7 +41,7 @@
* does not cache! (If it would cache, the response would be cached twice!)
*
* @author <a href="mailto:cziegeler@apache.org">Carsten Ziegeler</a>
- * @version CVS $Revision: 1.19 $ $Date: 2001/10/11 07:28:18 $
+ * @version CVS $Revision: 1.20 $ $Date: 2001/12/10 12:56:22 $
*/
public class CachingEventPipeline
extends AbstractEventPipeline
@@ -304,12 +304,14 @@
XMLProducer prev = this.producer;
XMLConsumer next;
+ boolean configuredSAXConnector = this.manager.hasComponent(SAXConnector.ROLE);
+
try {
int cacheableTransformerCount = this.firstNotCacheableTransformerIndex;
Iterator itt = usedTransformers.iterator();
while ( itt.hasNext() ) {
- if (this.configuredSAXConnector == true) {
+ if (configuredSAXConnector) {
// connect SAXConnector
SAXConnector connect = (SAXConnector) this.manager.lookup(SAXConnector.ROLE);
connect.setup(environment,environment.getObjectModel(),null,null);
@@ -333,7 +335,7 @@
prev = (XMLProducer) next;
}
- if (this.configuredSAXConnector == true) {
+ if (configuredSAXConnector) {
// insert SAXConnector
SAXConnector connect = (SAXConnector) this.manager.lookup(SAXConnector.ROLE);
connect.setup(environment,environment.getObjectModel(),null,null);
@@ -386,8 +388,7 @@
}
public void dispose() {
- if(this.eventCache != null)
- this.manager.release((Component)this.eventCache);
+ this.manager.release((Component)this.eventCache);
super.dispose();
}
}
1.14 +2 -3 xml-cocoon2/src/org/apache/cocoon/components/pipeline/CachingStreamPipeline.java
Index: CachingStreamPipeline.java
===================================================================
RCS file: /home/cvs/xml-cocoon2/src/org/apache/cocoon/components/pipeline/CachingStreamPipeline.java,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -r1.13 -r1.14
--- CachingStreamPipeline.java 2001/10/11 07:28:18 1.13
+++ CachingStreamPipeline.java 2001/12/10 12:56:22 1.14
@@ -41,7 +41,7 @@
* </ul>
*
* @author <a href="mailto:cziegeler@apache.org">Carsten Ziegeler</a>
- * @version CVS $Revision: 1.13 $ $Date: 2001/10/11 07:28:18 $
+ * @version CVS $Revision: 1.14 $ $Date: 2001/12/10 12:56:22 $
*/
public class CachingStreamPipeline extends AbstractStreamPipeline {
@@ -61,8 +61,7 @@
}
public void dispose() {
- if (this.streamCache != null)
- this.manager.release((Component)this.streamCache);
+ this.manager.release(this.streamCache);
super.dispose();
}
1.10 +64 -8 xml-cocoon2/src/org/apache/cocoon/components/pipeline/EventPipeline.java
Index: EventPipeline.java
===================================================================
RCS file: /home/cvs/xml-cocoon2/src/org/apache/cocoon/components/pipeline/EventPipeline.java,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- EventPipeline.java 2001/10/11 07:28:18 1.9
+++ EventPipeline.java 2001/12/10 12:56:22 1.10
@@ -9,27 +9,83 @@
import org.apache.avalon.excalibur.pool.Recyclable;
import org.apache.avalon.framework.component.Component;
-import org.apache.avalon.framework.component.Composable;
+import org.apache.avalon.framework.component.Recomposable;
import org.apache.avalon.framework.parameters.Parameters;
import org.apache.cocoon.environment.Environment;
import org.apache.cocoon.generation.Generator;
+import org.apache.cocoon.xml.XMLProducer;
/**
+ * A pipeline that produces SAX events using a <code>Generator</code> and
+ * zero or more <code>Transformer</code>s.
+ * <p>
+ * An <code>EventPipeline</code> is <code>Recomposable</code> since the
+ * <code>ComponentManager</code> used to get the generator and transformers
+ * depends on the pipeline assembly engine where they are defined (i.e. a given
+ * sitemap file).
+ *
* @author <a href="mailto:Giacomo.Pati@pwr.ch">Giacomo Pati</a>
- * @version CVS $Revision: 1.9 $ $Date: 2001/10/11 07:28:18 $
+ * @version CVS $Revision: 1.10 $ $Date: 2001/12/10 12:56:22 $
*/
-public interface EventPipeline extends Component, Composable, Recyclable {
+public interface EventPipeline extends XMLProducer, Component, Recomposable, Recyclable {
String ROLE = "org.apache.cocoon.components.pipeline.EventPipeline";
/**
- * Process the given <code>Environment</code> producing the output
+ * Process the given <code>Environment</code>, producing the output.
*/
- boolean process(Environment environment)
- throws Exception;
-
- void setGenerator (String role, String source, Parameters param, Exception e) throws Exception;
+ boolean process(Environment environment) throws Exception;
+
+ /**
+ * Set the generator that will be used as the initial step in the pipeline.
+ * The generator role is given : the actual <code>Generator</code> is fetched
+ * from the latest <code>ComponentManager</code> given by <code>compose()</code>
+ * or <code>recompose()</code>.
+ *
+ * @param role the generator role in the component manager.
+ * @param source the source where to produce XML from, or <code>null</code> if no
+ * source is given.
+ * @param param the parameters for the generator.
+ * @throws Exception if the generator couldn't be obtained.
+ */
void setGenerator (String role, String source, Parameters param) throws Exception;
+
+ /**
+ * Same as {@link #setGenerator(String, String, Parameters)} with an additional
+ * <code>Exception</code> parameter. This is used for setting the special
+ * {link org.apache.cocoon.sitemap.ErrorNotifier} generator used to generate
+ * input for error pages.
+ *
+ * @param role the generator role in the component manager.
+ * @param source the source where to produce XML from (e.g. xml file), or
+ * <code>null</code> if no source is given.
+ * @param param the parameters for the generator.
+ * @param e the exception to generate.
+ * @throws Exception if the generator couldn't be obtained.
+ * @see org.apache.cocoon.sitemap.ErrorNotifier
+ */
+ void setGenerator (String role, String source, Parameters param, Exception e) throws Exception;
+
+ /**
+ * Get the generator used by this pipeline. Access to the generator is needed for
+ * content aggregation since the aggregation generator is fed by the pipeline engine
+ * with the different parts.
+ *
+ * @return the generator
+ */
Generator getGenerator ();
+
+ /**
+ * Add a transformer at the end of the pipeline.
+ * The transformer role is given : the actual <code>Transformer</code> is fetched
+ * from the latest <code>ComponentManager</code> given by <code>compose()</code>
+ * or <code>recompose()</code>.
+ *
+ * @param role the transformer role in the component manager.
+ * @param source the source used to setup the transformer (e.g. XSL file), or
+ * <code>null</code> if no source is given.
+ * @param param the parameters for the transfomer.
+ * @throws Exception if the generator couldn't be obtained.
+ */
void addTransformer (String role, String source, Parameters param) throws Exception;
}
1.9 +14 -8 xml-cocoon2/src/org/apache/cocoon/components/pipeline/StreamPipeline.java
Index: StreamPipeline.java
===================================================================
RCS file: /home/cvs/xml-cocoon2/src/org/apache/cocoon/components/pipeline/StreamPipeline.java,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- StreamPipeline.java 2001/10/11 07:28:18 1.8
+++ StreamPipeline.java 2001/12/10 12:56:22 1.9
@@ -9,20 +9,26 @@
import org.apache.avalon.excalibur.pool.Recyclable;
import org.apache.avalon.framework.component.Component;
-import org.apache.avalon.framework.component.Composable;
+import org.apache.avalon.framework.component.Recomposable;
import org.apache.avalon.framework.parameters.Parameters;
import org.apache.cocoon.environment.Environment;
-/** A <CODE>StreamPipeline</CODE> either
- * <UL>
- * <LI>collects a <CODE>Reader</CODE> and let it produce a character stream</LI>
- * <LI>or connects a <CODE>EventPipeline</CODE> with a
- * <CODE>Serializer</CODE> and let them produce the character stream
+/** A <code>StreamPipeline</code> either
+ * <ul>
+ * <li>collects a <code>Reader</code> and let it produce a character stream</li>
+ * <li>or connects an <code>EventPipeline</code> with a
+ * <code>Serializer</code> and let them produce the byte stream</li>
* </UL>
+ * <p>
+ * A <code>StreamPipeline</code> is <code>Recomposable</code> since the
+ * <code>ComponentManager</code> used to get the reader or serializer
+ * depends on the pipeline assembly engine where they are defined (i.e.
+ * a given sitemap file).
+ *
* @author <a href="mailto:Giacomo.Pati@pwr.ch">Giacomo Pati</a>
- * @version CVS $Revision: 1.8 $ $Date: 2001/10/11 07:28:18 $
+ * @version CVS $Revision: 1.9 $ $Date: 2001/12/10 12:56:22 $
*/
-public interface StreamPipeline extends Component, Composable, Recyclable {
+public interface StreamPipeline extends Component, Recomposable, Recyclable {
String ROLE = "org.apache.cocoon.components.pipeline.StreamPipeline";
1.6 +0 -10 xml-cocoon2/src/org/apache/cocoon/sitemap/sitemap.roles
Index: sitemap.roles
===================================================================
RCS file: /home/cvs/xml-cocoon2/src/org/apache/cocoon/sitemap/sitemap.roles,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- sitemap.roles 2001/11/09 05:33:48 1.5
+++ sitemap.roles 2001/12/10 12:56:23 1.6
@@ -13,16 +13,6 @@
]>
<role-list>
- <role name="org.apache.cocoon.components.pipeline.StreamPipeline"
- shorthand="stream-pipeline"
- default-class="org.apache.cocoon.components.pipeline.NonCachingStreamPipeline"/>
-
- <role name="org.apache.cocoon.components.pipeline.EventPipeline"
- shorthand="event-pipeline"
- default-class="org.apache.cocoon.components.pipeline.NonCachingEventPipeline"/>
-
- <role name="org.apache.cocoon.components.saxconnector.SAXConnector"
- shorthand="sax-connector"/>
<role name="org.apache.cocoon.acting.ActionSelector"
shorthand="action"
----------------------------------------------------------------------
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