cocoon-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Sylvain Wallez <>
Subject Re: Flow's processPipelineTo() and FileSource
Date Thu, 31 Jul 2003 15:38:11 GMT
Gianugo Rabellino wrote:

> I'm having a hell of a time using flow with processPipelineTo() and 
> OutputStreams coming out from FileSource(s).
> The problem is that FileSource#getOutputStream() creates a temporary 
> file (... to be discussed later ...) and such file gets renamed to the 
> original one only upon OutputStream.close(). Now, AbstractInterpreter, 
> line 201, actually calls flush() but *never* close. As a result, 
> everything is kinda ... well... screwed up.
> Patch is trivial, but I'm wondering if adding out.close() in 
> might break something: any flow experts around? 

I don't see why there should be some consequences on the flow itself... 
Just replace flush() by close() !

> Now for the FileSource: I do understand *some* of the reasoning behind 
> using a temporary file, but I have to disagree on the implementation: 
> naming it [filename].tmp is a bit of a bet, since someone might 
> legitimately have such a filename around. While I understand that 
> there might be memory issues with large files, I guess that either:
> 1. keeping a ByteArrayOutputStream;
> 2. forget about it and just write the file;
> 3. use a more "clever" name that doesn't risk conflicts this much 

I would avoid 2. The reason why I used a temporary file is because of 
the streamed nature of Cocoon pipelines. If an error occurs within the 
processing, the original content is not partially overwritten. My 
preference would go to 3.

> are all better options.
> Is that OK to you if I work on it? I don't know if I have access to 
> the Excalibur CVS though... 

As a Cocoon committer, you should.


Sylvain Wallez                                  Anyware Technologies 
{ XML, Java, Cocoon, OpenSource }*{ Training, Consulting, Projects }
Orixo, the opensource XML business alliance  -

View raw message