I encountered a strange bug in an application combining flow and aggegation : each page is an aggregation of navigation+content, and the content is a call to a flowscript.
The bug seems to be related to multiple cocoon: related. I isolated it from the flow :
<map:match pattern="test1.xml">
<map:aggregate element="root">
<map:part src="cocoon:/flow-call.xml"/>
<!-- other parts removed -->
</map:aggregate>
<map:serialize type="xml"/>
</map:match><map:match pattern="flow-call.xml"> <map:redirect-to uri="cocoon:/flow-view.xml"/> </map:match>
<map:match pattern="flow-view.xml"> <map:generate src="test.xml"/> <map:serialize type="xml"/> </map:match>
The "flow-call.xml" URI simulates the behaviour of a flowscript, since sendPageAndWait("foo") does an internal redirect to "cocoon:/foo".
The exception is :
org.apache.cocoon.ProcessingException: Attempted to process incomplete pipeline.
at
org.apache.cocoon.components.source.impl.SitemapSource.init(SitemapSource.java:419)
at
org.apache.cocoon.components.source.impl.SitemapSource.<init>(SitemapSource.java:248)
at
org.apache.cocoon.components.source.impl.SitemapSourceFactory.getSource(SitemapSourceFactory.java:99)
at
org.apache.excalibur.source.impl.SourceResolverImpl.resolveURI(SourceResolverImpl.java:247)
at
org.apache.cocoon.components.CocoonComponentManager.resolveURI(CocoonComponentManager.java:503)
at
org.apache.cocoon.components.CocoonComponentManager.resolveURI(CocoonComponentManager.java:503)
at
org.apache.cocoon.environment.AbstractEnvironment.resolveURI(AbstractEnvironment.java:513)
at
org.apache.cocoon.environment.AbstractEnvironment.resolveURI(AbstractEnvironment.java:500)
at
org.apache.cocoon.sitemap.ContentAggregator.setup(ContentAggregator.java:322)
at
org.apache.cocoon.components.pipeline.AbstractProcessingPipeline.setupPipeline(AbstractProcessingPipeline.java:381)
at
org.apache.cocoon.components.pipeline.impl.AbstractCachingProcessingPipeline.setupPipeline(AbstractCachingProcessingPipeline.java:652)
at
org.apache.cocoon.components.pipeline.AbstractProcessingPipeline.preparePipeline(AbstractProcessingPipeline.java:508)
at
org.apache.cocoon.components.pipeline.AbstractProcessingPipeline.process(AbstractProcessingPipeline.java:470)
at
org.apache.cocoon.components.treeprocessor.sitemap.SerializeNode.invoke(SerializeNode.java:147)
...Replacing the part uri by "cocoon:/flow-view.xml" works as expected. So I suspect a bug related to chained "cocoon:/" calls, but only within an aggregation, since replacing <map:aggregate> by <map:redirect-to uri="flow-call.xml"> works correctly.
Any idea anyone ?
Thanks, Sylvain
-- Sylvain Wallez Anyware Technologies http://www.apache.org/~sylvain http://www.anyware-tech.com { XML, Java, Cocoon, OpenSource }*{ Training, Consulting, Projects } Orixo, the opensource XML business alliance - http://www.orixo.com
