You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@cocoon.apache.org by "Steven Dolg (JIRA)" <ji...@apache.org> on 2009/01/30 21:16:59 UTC
[jira] Updated: (COCOON3-23) StackOverflowError on
CachingPipeline.setup(OutputStream)
[ https://issues.apache.org/jira/browse/COCOON3-23?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Steven Dolg updated COCOON3-23:
-------------------------------
Attachment: cocoon3-23.patch
This implementation makes no sense of course.
The method is already correctly implemented in the base class AbstractPipeline and actually there is no need to overwrite it.
I provided a patch, that completely removes the method setup(Outputstream) of the CachingPipeline and adds a unit test to check that calling setup(Outputstream) on a CachingPipeline works correctly.
The patch is just for the case that someone wants to apply it locally. I'll commit this change right away.
Thanks for finding this one...
> StackOverflowError on CachingPipeline.setup(OutputStream)
> ---------------------------------------------------------
>
> Key: COCOON3-23
> URL: https://issues.apache.org/jira/browse/COCOON3-23
> Project: Cocoon 3
> Issue Type: Bug
> Components: cocoon-pipeline
> Affects Versions: 3.0.0-alpha-1
> Reporter: Alexander Daniel
> Assignee: Steven Dolg
> Fix For: 3.0.0-alpha-2
>
> Attachments: cocoon3-23.patch
>
>
> CachingPipeline.setup(OutputStream) calls itself resulting in a StackOverflowError [1]. I suppose that it should create a CachingOutputStream first and then call super.setup like setup(OutputStream outputStream, Map<String, Object> parameters) does [2]. [3] is a short code fragment to reproduce.
> [1]
> @Override
> public void setup(OutputStream outputStream) {
> this.setup(outputStream);
> }
> [2]
> @Override
> public void setup(OutputStream outputStream, Map<String, Object> parameters) {
> // create a caching output stream to intercept the result
> this.cachingOutputStream = new CachingOutputStream(outputStream);
> super.setup(this.cachingOutputStream, parameters);
> }
> [3]
> Pipeline pipeline = new CachingPipeline();
> pipeline.addComponent(new StringGenerator("<x></x>"));
> pipeline.addComponent(new XMLSerializer());
> ByteArrayOutputStream baos = new ByteArrayOutputStream();
> pipeline.setup(baos);
> pipeline.execute();
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.