Stream Generator
http://xml.apache.org/http://www.apache.org/http://www.w3.org/

Main
User Documentation

Generators
Overview

Default
File Generator

Core
Directory Generator
Fragment Extractor Generator
HTML Generator
Image Directory Generator
JSP Generator
Notifying Generator
Request Generator
Script Generator
Search Generator
Server Pages Generator
Status Generator
Stream Generator
Velocity Generator

Optional
PHP Generator
XML:DB Generator
XML:DB Collection Generator

Stream Generator

The StreamGenerator is a class that reads XML from an HttpRequest InputStream and generates SAX Events. StreamGenerator expects XML data coming as POST message.

  • Name : stream
  • Class: org.apache.cocoon.generation.StreamGenerator
  • Cacheable: no.

For POST requests with mimetype of application/x-www-form-urlencoded, the xml data expects to be associated with the name specified in the sitemap parameter.

For POST requests with mimetypes: text/plain, text/xml, application/xml the xml data is in the body of the POST request and its length is specified by the value returned by getContentLength() method.

PostInputStream

The StreamGenerator uses helper class org.apache.cocoon.util.PostInputStream for InputStream reading operations. At the time that Parser reads the data out of InputStream - Parser has no knowledge about the length of data to be read. The only way to signal to the Parser that all data was read from the InputStream is to control reading operation - PostInputStream- and to return to the requestor -1 when the number of bytes read is equal to the getContentLength() value.

See it in Action

The Generator is a generic object, i.e. it can process any stream out of the POST message there are two ways to see StreamGenerator in action:

  • To invoke URL http://localhost:8080/cocoon/Order
  • To use telnet program to generate POST request

The first option is not a "pure" stream invocation, but it is quick way to observe desired effects. The result of this invocation is a form containing the XML document embedded in the textarea of the form. Submission of this form will invoke StreamGenerator. The testarea name/value par is specified as a parameter in the sitemap definition for the StreamGenerator. The expected result is the submitted xml document send back to the browser.

The second or "pure" option of testing StreamGenerator "in action," requires the use of Telnet program or any other process able to generate correct POST message. The procedure is:

  • To invoke telnet, connect to localhost 8080 and to use content of telnet.txt file as a post message.
  • Here, the Copy-Paste method should be used.
  • Remember to hit the enter button twice enter after the contents of the post are set in telnet.

It is important because Content-len is calculated assuming two "enter" in the end of http message. Once again, the performed task results in the mirror of the original document being sent back to the requestor.

The "pure" stream generation can be observed using the telnet utility where you can invoke a message targeting my processing. Any other method is good (URL object connection) as long the message is well formed.

     
  <map:generate type="stream"/>
     
Copyright © 1999-2002 The Apache Software Foundation. All Rights Reserved.