cziegeler 02/05/27 04:12:13 Modified: src/java/org/apache/cocoon/components/treeprocessor InvokeContext.java src/java/org/apache/cocoon/components/treeprocessor/sitemap ComponentsSelector.java Log: One step further... Revision Changes Path 1.4 +13 -3 xml-cocoon2/src/java/org/apache/cocoon/components/treeprocessor/InvokeContext.java Index: InvokeContext.java =================================================================== RCS file: /home/cvs/xml-cocoon2/src/java/org/apache/cocoon/components/treeprocessor/InvokeContext.java,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- InvokeContext.java 27 May 2002 10:52:08 -0000 1.3 +++ InvokeContext.java 27 May 2002 11:12:13 -0000 1.4 @@ -54,6 +54,7 @@ import org.apache.avalon.framework.component.Recomposable; import org.apache.avalon.framework.component.ComponentManager; import org.apache.avalon.framework.component.ComponentException; +import org.apache.avalon.framework.component.ComponentSelector; import org.apache.avalon.framework.thread.ThreadSafe; import org.apache.avalon.framework.logger.Loggable; @@ -77,7 +78,7 @@ * * @author <a href="mailto:[EMAIL PROTECTED]">Sylvain Wallez</a> * @author <a href="mailto:[EMAIL PROTECTED]">Carsten Ziegeler</a> - * @version CVS $Id: InvokeContext.java,v 1.3 2002/05/27 10:52:08 cziegeler Exp $ + * @version CVS $Id: InvokeContext.java,v 1.4 2002/05/27 11:12:13 cziegeler Exp $ */ public class InvokeContext implements Recomposable, Disposable, Loggable { @@ -108,6 +109,9 @@ /** The ProcessingPipeline used */ protected ProcessingPipeline processingPipeline; + /** The Selector for the processing pipeline */ + protected ComponentSelector pipelineSelector; + /** * Create an <code>InvokeContext</code> without existing pipelines. This also means * the current request is external. @@ -191,7 +195,8 @@ public ProcessingPipeline getProcessingPipeline() throws Exception { if (this.processingPipeline == null) { - this.processingPipeline = (ProcessingPipeline)this.pipelinesManager.lookup(ProcessingPipeline.ROLE); + this.pipelineSelector = (ComponentSelector)this.pipelinesManager.lookup(ProcessingPipeline.ROLE+"Selector"); + this.processingPipeline = (ProcessingPipeline)this.pipelineSelector.select(this.processingPipelineName); // FIXME - Setup pipeline this.processingPipeline.recompose( this.pipelinesManager ); } @@ -284,7 +289,12 @@ this.pipelinesManager.release(this.eventPipeline); this.pipelinesManager.release(this.streamPipeline); - this.pipelinesManager.release(this.processingPipeline); + if ( this.pipelineSelector != null) { + this.pipelineSelector.release(this.processingPipeline); + this.processingPipeline = null; + this.pipelinesManager.release( this.pipelineSelector ); + this.pipelineSelector = null; + } this.pipelinesManager = null; } } 1.2 +34 -29 xml-cocoon2/src/java/org/apache/cocoon/components/treeprocessor/sitemap/ComponentsSelector.java Index: ComponentsSelector.java =================================================================== RCS file: /home/cvs/xml-cocoon2/src/java/org/apache/cocoon/components/treeprocessor/sitemap/ComponentsSelector.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- ComponentsSelector.java 5 Mar 2002 08:26:23 -0000 1.1 +++ ComponentsSelector.java 27 May 2002 11:12:13 -0000 1.2 @@ -58,6 +58,7 @@ import org.apache.avalon.framework.configuration.DefaultConfiguration; import org.apache.cocoon.components.pipeline.OutputComponentSelector; +import org.apache.cocoon.components.pipeline.ProcessingPipeline; import org.apache.cocoon.components.ExtendedComponentSelector; import org.apache.cocoon.acting.Action; @@ -75,10 +76,11 @@ * Component selector for sitemap components. * * @author <a href="mailto:[EMAIL PROTECTED]">Sylvain Wallez</a> - * @version CVS $Id: ComponentsSelector.java,v 1.1 2002/03/05 08:26:23 sylvain Exp $ + * @version CVS $Id: ComponentsSelector.java,v 1.2 2002/05/27 11:12:13 cziegeler Exp $ */ -public class ComponentsSelector extends ExtendedComponentSelector implements OutputComponentSelector, SitemapComponentSelector { +public class ComponentsSelector extends ExtendedComponentSelector +implements OutputComponentSelector, SitemapComponentSelector { public static final int UNKNOWN = -1; public static final int GENERATOR = 0; @@ -88,6 +90,7 @@ public static final int MATCHER = 4; public static final int SELECTOR = 5; public static final int ACTION = 6; + public static final int PIPELINE = 7; public static final String[] SELECTOR_ROLES = { Generator.ROLE + "Selector", @@ -96,7 +99,8 @@ Reader.ROLE + "Selector", Matcher.ROLE + "Selector", Selector.ROLE + "Selector", - Action.ROLE + "Selector" + Action.ROLE + "Selector", + ProcessingPipeline.ROLE + "Selector" }; public static final String[] COMPONENT_NAMES = { @@ -106,7 +110,8 @@ "reader", "matcher", "selector", - "action" + "action", + "pipeline" }; /** The role as an integer */ @@ -170,7 +175,7 @@ if (this.roleId == SERIALIZER || this.roleId == READER) { this.hintMimeTypes = new HashMap(); } - + this.hintLabels = new HashMap(); super.configure(config); @@ -193,7 +198,7 @@ this.hintMimeTypes.put(hint, mimeType); } } - + String label = config.getAttribute("label", null); if (label != null) { // Empty '' attribute will result in empty array, @@ -213,36 +218,36 @@ */ public void initialize() /*throws Exception*/ { - // FIXME : need to catch exceptions since ECS doesn't propagate the throws clause of Initializable - try { + // FIXME : need to catch exceptions since ECS doesn't propagate the throws clause of Initializable + try { - Configuration emptyConfig = new DefaultConfiguration("", ""); + Configuration emptyConfig = new DefaultConfiguration("", ""); - // Ensure all system-defined hints exist. - // NOTE : checking this here means they can be user-defined in the sitemap - switch(this.roleId) { - case GENERATOR : - ensureExists("!notifying-generator!", - org.apache.cocoon.sitemap.NotifyingGenerator.class, emptyConfig); + // Ensure all system-defined hints exist. + // NOTE : checking this here means they can be user-defined in the sitemap + switch(this.roleId) { + case GENERATOR : + ensureExists("!notifying-generator!", + org.apache.cocoon.sitemap.NotifyingGenerator.class, emptyConfig); - ensureExists("!content-aggregator!", - org.apache.cocoon.sitemap.ContentAggregator.class, emptyConfig); - break; + ensureExists("!content-aggregator!", + org.apache.cocoon.sitemap.ContentAggregator.class, emptyConfig); + break; - case TRANSFORMER : - ensureExists("!link-translator!", - org.apache.cocoon.sitemap.LinkTranslator.class, emptyConfig); - break; - } + case TRANSFORMER : + ensureExists("!link-translator!", + org.apache.cocoon.sitemap.LinkTranslator.class, emptyConfig); + break; + } - super.initialize(); + super.initialize(); - // Don't keep known hints (they're no more needed) - this.knownHints = null; + // Don't keep known hints (they're no more needed) + this.knownHints = null; - } catch(Exception e) { - throw new CascadingRuntimeException("Cannot setup default components", e); - } + } catch(Exception e) { + throw new CascadingRuntimeException("Cannot setup default components", e); + } }
---------------------------------------------------------------------- In case of troubles, e-mail: [EMAIL PROTECTED] To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]