Thanks, but I couldn't figure out how the SourceWritingTransformer might work.

What about the copy-source action ( http://cocoon.apache.org/2.1/apidocs/org/apache/cocoon/acting/CopySourceAction.html ) ?

Found that here:
http://www.mail-archive.com/[email protected]/msg24664.html

Regards
Holger

[EMAIL PROTECTED] schrieb am 16.09.2005 11:49:22:

> Can't you just use the SourceWritingTransformer in your pipeline, and
> set the serializer that it should use? Should be possible without any
> java coding.
>
> Upayavira
>
> [EMAIL PROTECTED] wrote:
> > Holger,
> >  
> > so far I wrote the following code. Works pretty fine except that I get
> > an empty file on the servers harddrive :(
> > Do you have any Idea what I m doing wrong?
> > Thanks !
> >  
> > Regards,
> > Jan
> >  
> > code:
> > package swl.test.cocoon.serialization;
> >  
> > import java.io.FileOutputStream;
> > import java.io.IOException;
> > import java.io.OutputStream;
> >  
> > import org.apache.cocoon.serialization.FOPSerializer;
> > import org.xml.sax.SAXException;
> >  
> > public class Swlfo2pdf extends FOPSerializer {
> >  
> >  MyOutputStream output;
> >  
> >
> //--------------------------------------------------------------------------------------------------------
> >  public void startDocument() throws SAXException {
> >   output = new MyOutputStream(output, "c:/temp/myout.pdf");
> >   super.startDocument();
> >  }
> >
> //--------------------------------------------------------------------------------------------------------
> >  public void endDocument() throws SAXException {
> >   super.endDocument();
> >  }
> >  
> >
> //*********************************************************************************************************
> >  public static class MyOutputStream extends OutputStream {
> >  
> >   private OutputStream origOut;
> >   private OutputStream tmpfileOut;  
> >  
> >   public MyOutputStream(OutputStream out, String tmp) {
> >    origOut = out;
> >    try {
> >     tmpfileOut = new FileOutputStream(tmp);
> >    } catch (IOException ex) {
> >    }
> >   }
> >
> //--------------------------------------------------------------------------------------------------------
> >   public void write(int b) throws IOException {
> >    try {
> >     if (tmpfileOut != null)
> >      tmpfileOut.write(b);
> >    }
> >    catch (IOException ex) {
> >    }
> >    origOut.write(b);
> >   }
> >
> //--------------------------------------------------------------------------------------------------------
> >   public void write(byte[] b) throws IOException{
> >    try{
> >     if (tmpfileOut != null)
> >      tmpfileOut.write(b);    
> >    }
> >    catch (IOException ex){    
> >    }
> >    origOut.write(b);
> >   }
> >
> //--------------------------------------------------------------------------------------------------------
> >   public void write(byte[] b, int off, int len) throws IOException{
> >    try{
> >     if (tmpfileOut != null)
> >      tmpfileOut.write(b, off, len);    
> >    }
> >    catch (IOException ex){    
> >    }
> >    origOut.write(b, off, len);  
> >   }
> >
> //--------------------------------------------------------------------------------------------------------
> >   public void close() throws IOException {
> >    try {
> >     tmpfileOut.close();
> >    } catch (IOException ex) {
> >    }
> >    //origOut.close();
> >   }
> >
> //--------------------------------------------------------------------------------------------------------
> >  }
> > }
> >
> > ------------------------------------------------------------------------
> > *Von:* [EMAIL PROTECTED]
> > [mailto:[EMAIL PROTECTED]
> > *Gesendet:* Donnerstag, 15. September 2005 13:38
> > *An:* [email protected]
> > *Betreff:* AW: AW: AW: Antwort: Saving the Outputstream
> >
> >
> > 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 <[EMAIL PROTECTED]> 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: [EMAIL PROTECTED]
> > [mailto:[EMAIL PROTECTED]
> >  > Gesendet: Mittwoch, 14. September 2005 13:52
> >  > An: [email protected]
> >  > 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 <[EMAIL PROTECTED]> 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=""> > >  > 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=""> > >  > > serialization.FOPSerializer" mime-type="application/pdf"/>
> >  > >             <map:serializer name="Swlfo2pdf" src=""> > >  > > 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=""> > >  > > /worknt/hausn/xbefund/xml/{1}/{3}.xml"/>
> >  > >                 <map:transform type="xslt-saxon" src=""> > >  > > /worknt/hausn/xbefund/stylesheets/{1}/{2}.xsl"/>
> >  > >                 <map:serialize type="Swlfo2pdf"/>
> >  > >             </map:match>
> >  > >         </map:pipeline>
> >  > >     </map:pipelines>
> >  > > </map:sitemap>
> >  > >  
> >  > >  
> >  > > Thanks, Jan
> >  > >  
> >  > >
> >  > > Von: [EMAIL PROTECTED]
> > [mailto:[EMAIL PROTECTED]
> >  > > Gesendet: Mittwoch, 14. September 2005 11:00
> >  > > An: [email protected]
> >  > > Cc: '[email protected]'; users-return-82225-holger.
> >  > > [EMAIL PROTECTED]
> >  > > 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
> >  > >
> >  > > [EMAIL PROTECTED]
> >  > > 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: [EMAIL PROTECTED]
> >  > > > For additional commands, e-mail: [EMAIL PROTECTED]
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>

Reply via email to