ok,
what you will need is a datapump which converts an output stream to an input stream.
See: http://ostermiller.org/convert_java_outputstream_inputstream.html
Method 1 is the simplest: let velocity write to abytearrayoutputstream and use the byte array to construct an input stream object. voila.
regards
c)hristian


The thing is that I don't know how to get my OutputStreamWriter into
InputStream so that StreamResponse is able to stream it to the user. This is
probably a very basic problem but I'm not very experienced with that.
Right now there is nothing streaming but writing to System.out. But I want
to do something like this:

StreamResponse onSubmitFromDescription() {
        InputMaker iMaker = new InputMaker(description);
        InputStream is = iMaker.makeDescription();
        return TextStreamResponse(is,"Description");
}

Then, this method should return, of course, an InputStream:

public void makeDescription(){
          try {
configure(engine); } catch (Exception e) {}
          try {
                  Template template =
Velocity.getTemplate("src/main/resources/templates/description.vm");
                  VelocityContext velocityContext = new VelocityContext();
                  OutputStreamWriter osw = new
OutputStreamWriter(System.out);
                  velocityContext.put("desc", this.description);
template.merge(velocityContext, osw); osw.flush();
                  osw.close();
} catch (Exception e) {} }

And, to be complete, my TextStreamResponse Class:

public class TextStreamResponse implements StreamResponse {
        private InputStream is;
        private String filename = "default";
        
        public TextStreamResponse(InputStream is, String filename){
                this.is = is;
                this.filename = filename;
        }
        public String getContentType() {
                return "text/plain";
        }
        public InputStream getStream() throws IOException {
                return is;
        }
        public void prepareResponse(Response arg0) {
                arg0.setHeader("Content-Disposition", "attachment; filename=" + 
filename +
".txt");
        }
}

Thanks a lot for helping me with that!

Moritz


Christian Gorbach wrote:
sure. if you post your streaming snippet we can take a look...
Hello,

I'm trying to stream a text file I created with Velocity very similar to
the
way it is done http://wiki.apache.org/tapestry/Tapestry5HowToCreateADynamicPDF here but
it
doesn't work. The text is stored in a OutputStreamWriter object. Is it possible to stream something else than binary data with tapestry?

Thanks,

Moritz
---------------------------------------------------------------------
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