cocoon-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From holger.willenb...@armacell.com
Subject AW: AW: AW: Antwort: Saving the Outputstream
Date Thu, 15 Sep 2005 11:38:21 GMT
Jan,

I am sorry I couldn't find the snippet.

> So, how do I tell myoutoutstream that it has an OutputStream with 
> the same content as the original OutoutStream but is pointing to a 
> completely different filelocation.

You simply make your OutputStream write into 2 streams and replace the 
original stream with your "double stream", that's why you need to override 
setOutputStream(). The Serializer should use your custom OutputStreamClass 
instead of the original.

>From the outside it looks like one stream, the inside writes into 2 
different streams. I remember I wrote a class which overwrites all of the 
write() methods of OutputStream

Check this: 
http://java.sun.com/j2se/1.4.2/docs/api/java/io/OutputStream.html

One example:

class OutOutStream extends FileOutputStream {
        OUtputStream os;

        // Create the "double" outputstream: Constructor is taking the 
original stream

        public OutOutStream(OutputStream streamone, File outputfile) {
                super(outputfile); // don't know exactly how...
                this.os = streamone;
        }

        // Override all other write() methods like this:
        public void write(byte[] b) {
                os.write(b); // original stream
                this.write(b); // secondary stream
        }

}

---

class yourserializer extends ...Serializer {
        ...
        setOutputStream() {
                // create and use the "double stream"
                output = new OutOutStream(super.output, new 
File("myoutput.dfile"));
        }

}

Let me know if this works, I haven't tried this.

Regards
Holger

Jan Kohnert <J.Kohnert@swisslab.de> schrieb am 15.09.2005 11:05:32:

> Holger,
> 
> thanks for the hint!
> One point that is unclear for me is, how to tell a OutoutStream 
> where it is supposed to point on except by using the contructor.
> So, how do I tell myoutoutstream that it has an OutputStream with 
> the same content as the original OutoutStream but is pointing to a 
> completely different filelocation.
> 
> "I remember I have a kind of CopyStream class somewhere. I'll have a 
look."
> 
> Would be cool if you finde it!
> 
> Regards,
> Jan
> 
> Von: holger.willenborg@armacell.com 
[mailto:holger.willenborg@armacell.com] 
> Gesendet: Mittwoch, 14. September 2005 13:52
> An: users@cocoon.apache.org
> Betreff: AW: AW: Antwort: Saving the Outputstream

> 
> Jan, 
> 
> at a first glimpse, your class is not doing anything but creating an
> empty file. There's no link between your OutputStream and the data. 
> 
> The serializer provides its own output stream (super.output according to 
this 
> http://wiki.apache.org/cocoon/WritingSerializers ) 
> 
> Perhaps you need to replace trhe output stream by a class which 
> writes the output to both streams: The web browser and - in addition
> to that - to a file stream. 
> 
> I think an approach would be: 
> 1. try to create an OutputStream class which does the output two 2 
> streams (e.g. CopyOutputStream) 
> 2. overwrite the setOutputStream() method in the Swlfo2pdf class 
> 3. Initialize your OutputStream class using the original output 
> stream super.output as seconde output stream target
> 
> Anyone here who already did something like that? I remember I have a
> kind of CopyStream class somewhere. I'll have a look. 
> 
> Regards 
> Holger 
> 
> Jan Kohnert <J.Kohnert@swisslab.de> schrieb am 14.09.2005 13:25:55:
> 
> > Yes offcause I cant do this :) 
> > 
> > But some things have changed. Insted of using a Reader I extandet 
> > the fo2pdf Serializer. 
> > 
> > package swl.test.cocoon.serialization; 
> > 
> > import java.io.FileNotFoundException; 
> > import java.io.FileOutputStream; 
> > 
> > import org.apache.cocoon.serialization.FOPSerializer; 
> > import org.xml.sax.SAXException; 
> > 
> > public class Swlfo2pdf extends FOPSerializer { 
> > 
> > 
> >    public void endDocument(){ 
> >       try { 
> >          super.endDocument(); 
> >          FileOutputStream myout = new FileOutputStream("c:
> /temp/myout.pdf"); 
> >       } catch (SAXException e) { 
> >          // TODO Auto-generated catch block 
> >          e.printStackTrace(); 
> >       } catch (FileNotFoundException e) { 
> >          // TODO Auto-generated catch block 
> >          e.printStackTrace(); 
> >       } 
> >    } 
> > } 
> > 
> > The serializer Swlfo2pdf runs great. I m getting the requestet 
> > dokument with it, plus an empty file c:/temp/myout.pdf. But offcause
> > this is'nt all I need. Instead of an empty document I want to get a 
> > identical copy of the FOPSerializer's output on a servers directory 
> > of my choise). But so far I've no Idea how this is suposed to work :( 
> > 
> > my xmap: 
> > <map:sitemap xmlns:map="http://apache.org/cocoon/sitemap/1.0">
> >     <!-- =========================== components 
> > =================================== -->
> >     <map:components>
> >         <map:transformers default="xslt">
> >             <map:transformer name="xslt-saxon" pool-grow="2" pool-
> > max="32" pool-min="8" src="org.apache.cocoon.transformation.
> TraxTransformer">
> >                 <use-request-parameters>false</use-request-parameters>
> >                 <use-browser-capabilities-db>false</use-browser-
> > capabilities-db>
> >                 <xslt-processor-role>saxon</xslt-processor-role>
> >             </map:transformer>
> >         </map:transformers>
> >         <map:serializers default="html">
> >             <map:serializer name="fo2pdf" src="org.apache.cocoon.
> > serialization.FOPSerializer" mime-type="application/pdf"/>
> >             <map:serializer name="Swlfo2pdf" src="swl.test.cocoon.
> > serialization.Swlfo2pdf" mime-type="application/pdf"/>
> >         </map:serializers>
> >     </map:components>
> >     <!-- =========================== Views 
> > =================================== -->
> >     <map:views>
> >         <map:view name="content" from-label="content">
> >             <map:serialize type="xml"/>
> >         </map:view>
> >         <map:view name="links" from-position="last">
> >             <map:serialize type="links"/>
> >         </map:view>
> >     </map:views>
> >     <map:pipelines>
> >         <!-- =========================== Pipelines 
> > ================================= -->
> >         <map:pipeline>
> >             <!-- PDF Pipeline -->
> >             <map:match pattern="*/*/*.pdf">
> >                 <map:generate src="file://c:
> > /worknt/hausn/xbefund/xml/{1}/{3}.xml"/>
> >                 <map:transform type="xslt-saxon" src="file://c:
> > /worknt/hausn/xbefund/stylesheets/{1}/{2}.xsl"/>
> >                 <map:serialize type="Swlfo2pdf"/>
> >             </map:match>
> >         </map:pipeline>
> >     </map:pipelines>
> > </map:sitemap> 
> > 
> > 
> > Thanks, Jan 
> > 
> > 
> > Von: holger.willenborg@armacell.com 
[mailto:holger.willenborg@armacell.com] 
> > Gesendet: Mittwoch, 14. September 2005 11:00
> > An: users@cocoon.apache.org
> > Cc: 'users@cocoon.apache.org'; users-return-82225-holger.
> > willenborg=armacell.com@cocoon.apache.org
> > Betreff: Antwort: Saving the Outputstream
> 
> > 
> > Hi, 
> > 
> > Could you provide (copy/paste) the reader source and sitemap.xmap 
> > extract which you are using? 
> > 
> > Seems as if the attachment is broken. I suggest not to attach files 
> > to the mailing list. 
> > 
> > Regards 
> > Holger 
> > 
> > users-return-82225-holger.willenborg=armacell.com@cocoon.apache.org 
> > schrieb am 13.09.2005 16:04:36:
> > 
> > > Hello List,
> > > 
> > > I m creating PDF Files using cocoons fo2pdf serializer. Everything 
works
> > > fine. Now I want to save the created pdf file on a servers 
directory. I
> > > wrote a Reader to get access to the outputstream in order to save 
it. The
> > > directory name is dependent on the transferred xml files name. 
> To to this I
> > > wrote my own Reader. Sadly closely nothing happens when I try to 
save the
> > > outputstream.
> > > 
> > > In Addition my Reader sources and my xconf.
> > > 
> > > Can anyone please help me? Thanks!
> > > 
> > > 
> > > 
> > > 
> > > 
> > > 
> > > 
> > > 
> > > [Anhang "src.rar" gelöscht von Holger Willenborg/Muenster/Armacell] 
> > > 
---------------------------------------------------------------------
> > > To unsubscribe, e-mail: users-unsubscribe@cocoon.apache.org
> > > For additional commands, e-mail: users-help@cocoon.apache.org
Mime
View raw message