cocoon-cvs mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From reinh...@apache.org
Subject svn commit: r896957 [4/7] - in /cocoon/site/site/3.0: ./ css/ images/ reference/ reference/html-single/ reference/html-single/css/ reference/html-single/graphics/ reference/html/ reference/html/css/ reference/html/graphics/ reference/pdf/ student-proje...
Date Thu, 07 Jan 2010 18:47:20 GMT
Added: cocoon/site/site/3.0/reference/html-single/introduction.html
URL: http://svn.apache.org/viewvc/cocoon/site/site/3.0/reference/html-single/introduction.html?rev=896957&view=auto
==============================================================================
--- cocoon/site/site/3.0/reference/html-single/introduction.html (added)
+++ cocoon/site/site/3.0/reference/html-single/introduction.html Thu Jan  7 18:47:18 2010
@@ -0,0 +1,20 @@
+<html><head>
+      <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+   <title>Chapter&nbsp;1.&nbsp;Introduction</title><link rel="stylesheet" href="css/html.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.72.0"><link rel="start" href="index.html" title="Cocoon 3.0 ALPHA - Reference Documentation"><link rel="up" href="index.html" title="Cocoon 3.0 ALPHA - Reference Documentation"><link rel="prev" href="index.html" title="Cocoon 3.0 ALPHA - Reference Documentation"><link rel="next" href="pipelines.html" title="Chapter&nbsp;2.&nbsp;Pipelines"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div xmlns:fo="http://www.w3.org/1999/XSL/Format" id="top"><div id="header"><div class="projectlogo"><a href="./"><img class="logoImage" src="images/cocoon_logo.jpg" alt="Apache Cocoon" border="0"></a></div></div></div><div xmlns:fo="http://www.w3.org/1999/XSL/Format" class="mhSpacer"></div><div class="chapter" lang="en"><div class="titlepage"><div><div><h2 class="title"><a name="introdu
 ction"></a>Chapter&nbsp;1.&nbsp;Introduction</h2></div></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="introduction.why-cocoon3"></a>1.1.&nbsp;Why Cocoon 3 - Motivation</h2></div></div></div><p>
+      The main idea behind Cocoon is the concept of pipelines. Cocoon 1.x and 2.x
+      applied this idea with a focus on web applications.
+      But sometimes pipelines would be useful although you don't develop a web application.
+      Those former Cocoon versions don't really help you in that case. 
+    </p><p>
+      In contrast, Cocoon 3 follows a layered approach so that its basic module - 
+      the pipeline module - can be used from within any Java environment without 
+      requiring you adding a huge stack of dependencies. 
+    </p><p>
+      On top of this, Cocoon 3 has the goal to make the development of 
+      RESTful web services and web applications a simple task.
+    </p></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="introduction.previous-versions"></a>1.2.&nbsp;Relationship to previous versions</h2></div></div></div><p>
+      Cocoon 3 has been built completely from scratch and doesn't have any dependencies
+      on Cocoon 2.x or 1.x. 
+    </p></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="introduction.requirements"></a>1.3.&nbsp;Requirements</h2></div></div></div><p>
+      Cocoon 3 requires Java 5 or higher.
+    </p></div></div><div xmlns:fo="http://www.w3.org/1999/XSL/Format" class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="index.html">Prev</a>&nbsp;</td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right">&nbsp;<a accesskey="n" href="pipelines.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Cocoon 3.0 ALPHA - Reference Documentation&nbsp;</td><td width="20%" align="center"><span style="color:white;font-size:85%;"><a href="http://cocoon.apache.org/3.0/" title="The Apache Cocoon community">The Apache Cocoon community</a></span></td><td width="40%" align="right" valign="top">&nbsp;Chapter&nbsp;2.&nbsp;Pipelines</td></tr></table></div></body></html>

Propchange: cocoon/site/site/3.0/reference/html-single/introduction.html
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: cocoon/site/site/3.0/reference/html-single/introduction.html
------------------------------------------------------------------------------
    svn:mime-type = text/html

Added: cocoon/site/site/3.0/reference/html-single/pipelines.html
URL: http://svn.apache.org/viewvc/cocoon/site/site/3.0/reference/html-single/pipelines.html?rev=896957&view=auto
==============================================================================
--- cocoon/site/site/3.0/reference/html-single/pipelines.html (added)
+++ cocoon/site/site/3.0/reference/html-single/pipelines.html Thu Jan  7 18:47:18 2010
@@ -0,0 +1,271 @@
+<html><head>
+      <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+   <title>Chapter&nbsp;2.&nbsp;Pipelines</title><link rel="stylesheet" href="css/html.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.72.0"><link rel="start" href="index.html" title="Cocoon 3.0 ALPHA - Reference Documentation"><link rel="up" href="index.html" title="Cocoon 3.0 ALPHA - Reference Documentation"><link rel="prev" href="introduction.html" title="Chapter&nbsp;1.&nbsp;Introduction"><link rel="next" href="sitemap.html" title="Chapter&nbsp;3.&nbsp;Sitemaps"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div xmlns:fo="http://www.w3.org/1999/XSL/Format" id="top"><div id="header"><div class="projectlogo"><a href="./"><img class="logoImage" src="images/cocoon_logo.jpg" alt="Apache Cocoon" border="0"></a></div></div></div><div xmlns:fo="http://www.w3.org/1999/XSL/Format" class="mhSpacer"></div><div class="chapter" lang="en"><div class="titlepage"><div><div><h2 class="title"><a name="pipelines"></a>
 Chapter&nbsp;2.&nbsp;Pipelines</h2></div></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="pipelines.definition"></a>2.1.&nbsp;What is a pipeline?</h2></div></div></div><p>
+      A Cocoon 3 pipeline expects one or more component(s). These components get linked with each other in the
+      order they were added. There is no restriction on the content that flows through the pipeline.
+    </p><p>
+      A pipeline works based on two fundamental concepts:
+      </p><div class="itemizedlist"><ul type="disc"><li><p>The first component of a pipeline is of type 
+            <code class="literal">org.apache.cocoon.pipeline.component.Starter</code>.
+            The last component is of type <code class="literal">org.apache.cocoon.pipeline.component.Finisher</code>.
+          </p></li><li><p>
+            In order to link components with each other, the first has to be a 
+            <code class="literal">org.apache.cocoon.pipeline.component.Finisher</code>, the latter
+            <code class="literal">org.apache.cocoon.pipeline.component.Producer</code>.
+          </p></li></ul></div><p>
+      When the pipeline links the components, it merely checks whether the above mentioned interfaces are present. So the
+      pipeline does not know about the specific capabilities or the compatibility of the components. It is the
+      responsibility of the <code class="literal">Producer</code> to decide whether a specific <code class="literal">Consumer</code> 
+      can be linked to it or not (that is, whether it can produce output in the desired format of the <code class="literal">Consumer</code> 
+      or not). It is also conceivable that a <code class="literal">Producer</code> is capable of accepting different types of 
+      <code class="literal">Consumer</code> and adjust the output format
+    </p><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="d0e88"></a>2.1.1.&nbsp;Linear pipelines</h3></div></div></div><p>
+        A Cocoon 3 pipeline always goes through the same sequence of components to produce its output. There is no
+        support for conditionals, loops, tees or alternative flows in the case of errors. The reason for this restriction
+        is simplicity and that non-linear pipelines are more difficult (or even impossible) to be cached. In practice this means
+        that a pipeline has to be contructed completely at build-time.
+      </p><p>
+        If non-linear XML pipes with runtime-support for conditionals, loops, tees and error-flows are a requirement for you, 
+        see the <a xmlns:xlink="http://www.w3.org/1999/xlink" href="http://en.wikipedia.org/wiki/XProc" target="_top">XProc</a> standard of the W3C. There
+        are several available implementations for it.
+      </p></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="d0e98"></a>2.1.2.&nbsp;Pipelines by example</h3></div></div></div><p>
+        But let's get more specific by giving an example: Cocoon has become famous for its SAX pipelines that consist 
+        of exactly one SAX-based XML generator, zero, one or more SAX-based XML transformers and exactly one SAX-based 
+        XML serializer. Of course, these specific SAX-based XML pipelines can be build by using general
+        Cocoon 3 pipelines: generators, transformers and serializers are pipeline components. A generator is a 
+        <code class="literal">Starter</code> and a <code class="literal">Producer</code>, a transformer can't be neither a 
+        <code class="literal">Starter</code>, nor a <code class="literal">Finisher</code> but is always a <code class="literal">Producer</code> 
+        and a <code class="literal">Consumer</code> and a serializer is a <code class="literal">Consumer</code> and a <code class="literal">Finisher</code>.
+      </p><p>
+        Here is some Java code that demonstrates how a pipeline can be utilized with SAX-based XML components:      
+      </p><div class="programlistingco"><pre class="programlisting">Pipeline&lt;SAXPipelineComponent&gt; pipeline = <span class="hl-keyword">new</span> NonCachingPipeline&lt;SAXPipelineComponent&gt;();<span class="co"><img src="images/callouts/1.png" alt="(1)"></span>
+pipeline.addComponent(<span class="hl-keyword">new</span> StringGenerator(<span class="hl-string">"&lt;x&gt;&lt;/x&gt;"</span>));                                   <span class="co"><img src="images/callouts/2.png" alt="(2)"></span>
+pipeline.addComponent(<span class="hl-keyword">new</span> XSLTTransformer(<span class="hl-keyword">this</span>.getClass().getResource(<span class="hl-string">"/test1.xslt"</span>)));  <span class="co"><img src="images/callouts/3.png" alt="(3)"></span>
+pipeline.addComponent(<span class="hl-keyword">new</span> XSLTTransformer(<span class="hl-keyword">this</span>.getClass().getResource(<span class="hl-string">"/test2.xslt"</span>)));  <span class="co"><img src="images/callouts/4.png" alt="(4)"></span>
+pipeline.addComponent(<span class="hl-keyword">new</span> XMLSerializer());                                              <span class="co"><img src="images/callouts/5.png" alt="(5)"></span>
+
+pipeline.setup(System.out);                                                              <span class="co"><img src="images/callouts/6.png" alt="(6)"></span>
+pipeline.execute();                                                                      <span class="co"><img src="images/callouts/7.png" alt="(7)"></span>
+</pre><div class="calloutlist"><table border="0" summary="Callout list"><tr><td width="5%" valign="top" align="left"><img src="images/callouts/1.png" alt="1" border="0"></td><td valign="top" align="left"><p>
+              Create a <code class="literal">NonCachingPipeline</code>. It's the simplest available pipeline implementation. The 
+              <code class="literal">org.apache.cocoon.pipeline.Pipeline</code> interface doesn't impose any restrictions on the
+              content that flows in it.
+            </p></td></tr><tr><td width="5%" valign="top" align="left"><img src="images/callouts/2.png" alt="2" border="0"></td><td valign="top" align="left"><p>
+              Add a generator, that implements the <code class="literal">org.apache.cocoon.pipeline.component.PipelineComponent</code> interface to the
+              pipeline by using the pipeline's <code class="literal">addComponent(pipelineComponent)</code> interface.
+            </p><p>
+              The <code class="literal">StringGenerator</code> expects a <code class="literal">java.lang.String</code> object and produces SAX events by using a SAX parser.
+              Hence it has to implement the <code class="literal">org.apache.cocoon.sax.component.SAXProducer</code> interface.
+            </p><p>
+              The <code class="literal">SAXProducer</code> interface extends the <code class="literal">org.apache.cocoon.pipeline.component.Producer</code> interface. This
+              means that it expects the next (or the same!) component to implement the <code class="literal">org.apache.cocoon.pipeline.component.Consumer</code>
+              interface. The check that the next pipeline component is of type <code class="literal">org.apache.cocoon.sax.component.SAXConsumer</code>
+              isn't done at interface level but by the implementation (see the <code class="literal">org.apache.cocoon.sax.component.AbstractXMLProducer</code>
+              for details which the <code class="literal">StringGenerator</code> is inherited from).
+            </p><p>
+              Since a generator is the first component of a pipeline, it also has to implement the <code class="literal">Starter</code> interface.
+            </p></td></tr><tr><td width="5%" valign="top" align="left"><img src="images/callouts/3.png" alt="3" border="0"></td><td valign="top" align="left"><p>
+              Add a transformer, that implements the <code class="literal">org.apache.cocoon.pipeline.component.PipelineComponent</code> interface, to the
+              pipeline by using the pipeline's <code class="literal">addComponent(pipelineComponent)</code> method.
+            </p><p>
+              This <code class="literal">XSLTTransformer</code> expects the <code class="literal">java.net.URL</code> of an XSLT stylesheet. It uses the rules of the stylesheet
+              to add, change or delete nodes of the XML SAX stream.
+            </p><p>
+              Since it implements the <code class="literal">org.apache.cocoon.pipeline.component.Consumer</code> interface, it fulfills the general contract that a <code class="literal">Consumer</code>
+              is linked with a <code class="literal">Producer</code>. By implementing the <code class="literal">org.apache.cocoon.sax.component.SAXConsumer</code> interface,
+              it fulfills the specific requirement of the previous <code class="literal">StringGenerator</code> that expects a next pipeline component of that type. 
+            </p><p>
+              This transformer also implements the <code class="literal">org.apache.cocoon.sax.component.SAXProducer</code> interface. This interface extends the
+              <code class="literal">org.apache.cocoon.pipeline.component.Producer</code> interface which means that the next component has to be a 
+              <code class="literal">org.apache.cocoon.pipeline.component.Consumer</code>. Like the previous <code class="literal">StringGenerator</code>, the <code class="literal">XSLTTransformer</code>
+              inherits from the <code class="literal">org.apache.cocoon.sax.component.AbstractXMLProducer</code> which contains the check that the next component
+              is of type <code class="literal">org.apache.cocoon.sax.component.SAXConsumer</code>. 
+            </p></td></tr><tr><td width="5%" valign="top" align="left"><img src="images/callouts/4.png" alt="4" border="0"></td><td valign="top" align="left"><p>
+              Add another transformer to the pipeline. A pipeline can contain any number of components that implement the <code class="literal">Producer</code> and 
+              <code class="literal">Consumer</code> interfaces at the same time. However, they mustn't be neither of type <code class="literal">Starter</code> nor <code class="literal">Finisher</code>.
+            </p></td></tr><tr><td width="5%" valign="top" align="left"><img src="images/callouts/5.png" alt="5" border="0"></td><td valign="top" align="left"><p>
+              Add a serializer, that implements the <code class="literal">org.apache.cocoon.pipeline.component.PipelineComponent</code> interface to the
+              pipeline by using the pipeline's <code class="literal">addComponent(pipelineComponent)</code> interface.
+            </p><p>
+              The XML serializer receives SAX events and serializes them into an <code class="literal">java.io.OutputStream</code>.
+            </p><p>
+              A serializer component is the last component of a pipeline and hence it has to implement the <code class="literal">org.apache.cocoon.pipeline.Finisher</code>
+              interface.
+            </p><p>
+              Since it receives SAX events, it implements the <code class="literal">org.apache.cocoon.pipeline.sax.SAXConsumer</code> interface.
+            </p></td></tr><tr><td width="5%" valign="top" align="left"><img src="images/callouts/6.png" alt="6" border="0"></td><td valign="top" align="left"><p>
+              A pipeline has to be initialized first by calling its <code class="literal">setup(outputStream)</code> method. This method expects the output stream
+              where the pipeline result should be streamed.
+            </p></td></tr><tr><td width="5%" valign="top" align="left"><img src="images/callouts/7.png" alt="7" border="0"></td><td valign="top" align="left"><p>
+              After the pipeline has been initialized, it can be executed by invoking its <code class="literal">execute()</code> method. The first pipeline component, a <code class="literal">Starter</code>,
+              will be invoked which will trigger the next component and so on. Finally the last pipeline component, a <code class="literal">Finisher</code> will be reached which is responsible 
+              for the serialization of the pipeline content.
+            </p><p>
+              Once the pipeline has been started, it either succeeds or fails. There is no way to react on any (error) conditions.
+            </p></td></tr></table></div></div><div class="table"><a name="pipeline.components.sax"></a><p class="title"><b>Table&nbsp;2.1.&nbsp;SAX components and their interfaces</b></p><div class="table-contents"><table summary="SAX components and their interfaces" width="100%" border="1"><colgroup><col><col align="center"><col align="center"><col><col></colgroup><thead><tr><th>Component type</th><th align="center">Structural interfaces</th><th align="center">Content-specific interfaces</th><td class="auto-generated">&nbsp;</td><td class="auto-generated">&nbsp;</td></tr></thead><tbody><tr><td>SAX generator</td><td align="center">Starter, Producer, PipelineComponent</td><td align="center">SAXProducer</td><td class="auto-generated">&nbsp;</td><td class="auto-generated">&nbsp;</td></tr><tr><td>SAX transformer</td><td align="center">Producer, Consumer, PipelineComponent</td><td align="center">SAXProducer, SAXConsumer</td><td class="auto-generated">&nbsp;</td><td class="auto-ge
 nerated">&nbsp;</td></tr><tr><td>SAX serializer</td><td align="center">Finisher, Consumer, PipelineComponent</td><td align="center">SAXConsumer</td><td class="auto-generated">&nbsp;</td><td class="auto-generated">&nbsp;</td></tr></tbody></table></div></div><br class="table-break"></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="pipelines.implementations"></a>2.2.&nbsp;Pipeline implementations</h2></div></div></div><p>TBW: noncaching, caching, async-caching, expires caching, own implementations</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="pipelines.embedding"></a>2.3.&nbsp;Embedding a pipeline</h2></div></div></div><p>TBW: Passing parameters to the pipeline and its components, finsih() method</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="pipeline.sax"></a>2
 .4.&nbsp;SAX components</h2></div></div></div><p>concept, writing custom SAX components, link to Javadocs</p><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="d0e363"></a>2.4.1.&nbsp;Available components</h3></div></div></div><p>Link to Javadocs</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="d0e368"></a>2.4.2.&nbsp;Writing custom components</h3></div></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="d0e371"></a>2.4.2.1.&nbsp;SAX generator</h4></div></div></div><p>explain from a user's point of view, what she needs to do to implement one
+              (available abstract classes)
+        </p></div><div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="d0e376"></a>2.4.2.2.&nbsp;SAX transformer</h4></div></div></div><p>explain from a user's point of view, what she needs to do to implement one</p><p>buffering</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="d0e383"></a>2.4.2.3.&nbsp;SAX serializer</h4></div></div></div><p>explain from a user's point of view, what she needs to do to implement one</p></div></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="pipeline.stax"></a>2.5.&nbsp;StAX components</h2></div></div></div><p>StAX pipelines provide an alternative API for writing pipeline components. Altough they are not as fast as SAX, they provide easier state handling as the component can control when to pull the next events. This allows an implicit state rather than have to manage the state in the
  various content handler methods of SAX.</p><p>The most visible difference of StAX components in contrast to SAX is that the component itself has controls the parsing of the input whereas in SAX the parser controls the pipeline by calling the component.
+    Our implementation of StAX pipelines uses just StAX interfaces for retrieving events - the writing interface is proprietary in order to avoid multihreading or continuations.
+    So it is really a hybrid process - the StAX component is called to generate the next events, but it is also allowed to read as much data from the previous pipeline component as it wants. But as the produced events are kept in-memory until a later component pulls for them, the components should not emit large amounts of events during one invocation.
+    </p><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="d0e395"></a>2.5.1.&nbsp;Available components</h3></div></div></div><div class="itemizedlist"><ul type="disc"><li><code class="literal">StAXGenerator</code> is a Starter and normally parses a XML from an InputStream.</li><li><code class="literal">StAXSerializer</code> is a Finisher and writes the StAX Events to an OutputStream.</li><li><code class="literal">AbstractStAXTransformer</code> is the abstract base class for new transformers. It simplifies the task by providing a template method for generating the new events.</li><li><code class="literal">StAXCleaningTransformer</code> is an transformer, which cleans the document from whitespaces and comments.</li><li><code class="literal">IncludeTransformer</code> includes the contents of another document.</li></ul></div><p>For further information refer to the <a xmlns:xlink="http://www.w3.org/1999/xlink" href="http://cocoon.apache.or
 g/3.0/apidocs/org/apache/cocoon/stax/package-summary.html" target="_top">javadoc</a></p></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="d0e424"></a>2.5.2.&nbsp;Writing custom components</h3></div></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="d0e427"></a>2.5.2.1.&nbsp;StAX generator</h4></div></div></div><p>The <code class="literal">StAXGenerator</code> is a <code class="literal">Starter</code> component and produces XMLEvents.
+  </p><div class="programlistingco"><pre class="programlisting"><span class="hl-keyword">import</span> java.io.InputStream;
+<span class="hl-keyword">import</span> java.net.URL;
+
+<span class="hl-keyword">import</span> javax.xml.stream.FactoryConfigurationError;
+<span class="hl-keyword">import</span> javax.xml.stream.XMLEventReader;
+<span class="hl-keyword">import</span> javax.xml.stream.XMLInputFactory;
+<span class="hl-keyword">import</span> javax.xml.stream.XMLStreamException;
+<span class="hl-keyword">import</span> javax.xml.stream.events.XMLEvent;
+
+<span class="hl-keyword">import</span> org.apache.cocoon.pipeline.SetupException;
+<span class="hl-keyword">import</span> org.apache.cocoon.pipeline.component.Starter;
+<span class="hl-keyword">public</span> <span class="hl-keyword">class</span> MyStAXGenerator <span class="hl-keyword">extends</span> AbstractStAXProducer <span class="hl-keyword">implements</span> Starter {           <span class="co"><img src="images/callouts/1.png" alt="(1)"></span>
+
+   <span class="hl-keyword">private</span> XMLEventReader reader;
+    
+   <span class="hl-keyword">public</span> MyStAXGenerator(InputStream inputStream) {
+      <span class="hl-keyword">try</span> {
+         <span class="hl-keyword">this</span>.reader = XMLInputFactory.newInstance().createXMLEventReader(inputStream);  <span class="co"><img src="images/callouts/2.png" alt="(2)"></span>
+      } <span class="hl-keyword">catch</span> (XMLStreamException e) {
+         <span class="hl-keyword">throw</span> <span class="hl-keyword">new</span> SetupException(<span class="hl-string">"Error during setup an XMLEventReader on the inputStream"</span>, e);
+      } <span class="hl-keyword">catch</span> (FactoryConfigurationError e) {
+         <span class="hl-keyword">throw</span> <span class="hl-keyword">new</span> SetupException(<span class="hl-string">"Error during setup the XMLInputFactory for creating an XMLEventReader"</span>, e);
+      }
+   }
+    
+   <span class="hl-keyword">public</span> <span class="hl-keyword">void</span> execute() {
+      <span class="hl-keyword">this</span>.getConsumer().initiatePullProcessing();                                       <span class="co"><img src="images/callouts/3.png" alt="(3)"></span>
+   }
+
+   <span class="hl-keyword">public</span> <span class="hl-keyword">boolean</span> hasNext() {
+      <span class="hl-keyword">return</span> <span class="hl-keyword">this</span>.reader.hasNext();                                                      <span class="co"><img src="images/callouts/4.png" alt="(4)"></span>
+   }
+
+   <span class="hl-keyword">public</span> XMLEvent nextEvent() <span class="hl-keyword">throws</span> XMLStreamException {
+      <span class="hl-keyword">return</span> <span class="hl-keyword">this</span>.reader.nextEvent();                                                    <span class="co"><img src="images/callouts/5.png" alt="(5)"></span>
+   }
+    
+   <span class="hl-keyword">public</span> XMLEvent peek() <span class="hl-keyword">throws</span> XMLStreamException {
+      <span class="hl-keyword">return</span> <span class="hl-keyword">this</span>.reader.peek();                                                         <span class="co"><img src="images/callouts/6.png" alt="(6)"></span>
+   }
+  
+} </pre><div class="calloutlist"><table border="0" summary="Callout list"><tr><td width="5%" valign="top" align="left"><img src="images/callouts/1.png" alt="1" border="0"></td><td valign="top" align="left"><p>
+        In order to implement an own <code class="literal">StAXGenerator</code> the easiest approach is to inherit from <code class="literal">AbstractStAXProducer</code>.
+            </p></td></tr><tr><td width="5%" valign="top" align="left"><img src="images/callouts/2.png" alt="2" border="0"></td><td valign="top" align="left"><p>
+        The constructor creates a new XMLEventReader for reading from the inputstream.
+            </p></td></tr><tr><td width="5%" valign="top" align="left"><img src="images/callouts/3.png" alt="3" border="0"></td><td valign="top" align="left"><p>
+        The pipeline is started using the <code class="literal">execute</code> method. As StAX is a pull based approach the last component has to start pulling.
+            </p></td></tr><tr><td width="5%" valign="top" align="left"><img src="images/callouts/4.png" alt="4" border="0"></td><td valign="top" align="left"><p>This method should return true if the generator has a next Event. </p></td></tr><tr><td width="5%" valign="top" align="left"><img src="images/callouts/5.png" alt="5" border="0"></td><td valign="top" align="left"><p>Returns the next event from the generator.</p></td></tr><tr><td width="5%" valign="top" align="left"><img src="images/callouts/6.png" alt="6" border="0"></td><td valign="top" align="left"><p>Returns the next event from the generator, without moving actually to the next event.</p></td></tr></table></div></div><p>
+  </p></div><div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="d0e477"></a>2.5.2.2.&nbsp;StAX transformer</h4></div></div></div><p>Implementing a StAX Transformer should be the most common use case. The <code class="literal">AbstractStAXTransformer</code> provides a foundation for new transformers. But in order to write new transformers even simpler, let's describe another feature first:</p><div class="section" lang="en"><div class="titlepage"><div><div><h5 class="title"><a name="d0e485"></a>2.5.2.2.1.&nbsp;Navigator</h5></div></div></div><p>Navigators allow an easier navigation in the XML document. They also simplify transformers, as usually transformers need only process some parts of the input document and the navigator helps to identify the interesting parts. There are several implementations already included:
+  </p><div class="itemizedlist"><ul type="disc"><li><code class="literal">FindStartElementNavigator</code> finds the start tag with certain properties(name,attribute)</li><li><code class="literal">FindEndElementNavigator</code> finds the end tag with certain properties(name,attribute)</li><li><code class="literal">FindCorrespondingStartEndElementPairNavigator</code> finds both the start and the corresponding end tag.</li><li><code class="literal">InSubtreeNavigator</code> finds whole subtrees, by specifying the properties of the "root" element.</li></ul></div><p>
+  For further information refer to the <a xmlns:xlink="http://www.w3.org/1999/xlink" href="http://cocoon.apache.org/3.0/apidocs/org/apache/cocoon/stax/navigation/package-summary.html" target="_top">navigator javadoc</a>
+  </p><div class="section" lang="en"><div class="titlepage"><div><div><h6 class="title"><a name="d0e511"></a>2.5.2.2.1.1.&nbsp;Using navigators</h6></div></div></div><p>
+    Using a navigator is a rather simple task. The transformer peeks or gets the next event and calls <code class="literal">Navigator.fulfillsCriteria</code> - if true is returned the transformer should be process that event somehow. 
+    </p></div><div class="section" lang="en"><div class="titlepage"><div><div><h6 class="title"><a name="d0e519"></a>2.5.2.2.1.2.&nbsp;Implementing a navigator</h6></div></div></div><p>Creating a new navigator is a rather simple task and just means implementing two methods:</p><div class="programlistingco"><pre class="programlisting"><span class="hl-keyword">import</span> javax.xml.stream.events.XMLEvent;
+
+<span class="hl-keyword">public</span> <span class="hl-keyword">class</span> MyNavigator <span class="hl-keyword">implements</span> Navigator {
+   <span class="hl-keyword">public</span> <span class="hl-keyword">boolean</span> fulfillsCriteria(XMLEvent event) {                                     <span class="co"><img src="images/callouts/1.png" alt="(1)"></span>
+      <span class="hl-keyword">return</span> false;
+   }
+    
+   <span class="hl-keyword">public</span> <span class="hl-keyword">boolean</span> isActive() {                                                           <span class="co"><img src="images/callouts/2.png" alt="(2)"></span>
+      <span class="hl-keyword">return</span> false;
+   }
+}
+  </pre><div class="calloutlist"><table border="0" summary="Callout list"><tr><td width="5%" valign="top" align="left"><img src="images/callouts/1.png" alt="1" border="0"></td><td valign="top" align="left"><p>
+        This method returns true if the event matches the criteria of the navigator.
+            </p></td></tr><tr><td width="5%" valign="top" align="left"><img src="images/callouts/2.png" alt="2" border="0"></td><td valign="top" align="left"><p>
+        Returns the result of the last invocation of fulfillsCriteria.
+      </p></td></tr></table></div></div></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h5 class="title"><a name="d0e537"></a>2.5.2.2.2.&nbsp;Implementing a transformer</h5></div></div></div><p>The next example should show you an transformer featuring navigators and implicit state handling through function calls.</p><div class="programlistingco"><pre class="programlisting"><span class="hl-keyword">public</span> <span class="hl-keyword">class</span> DaisyLinkRewriteTransformer <span class="hl-keyword">extends</span> AbstractStAXTransformer {
+  @Override
+   <span class="hl-keyword">protected</span> <span class="hl-keyword">void</span> produceEvents() <span class="hl-keyword">throws</span> XMLStreamException {
+      <span class="hl-keyword">while</span> (<span class="hl-keyword">this</span>.getParent().hasNext()) {
+         XMLEvent event = <span class="hl-keyword">this</span>.getParent().nextEvent();
+         <span class="hl-keyword">if</span> (<span class="hl-keyword">this</span>.anchorNavigator.fulfillsCriteria(event)) {                             <span class="co"><img src="images/callouts/1.png" alt="(1)"></span>
+            ArrayList&lt;XMLEvent&gt; innerContent = <span class="hl-keyword">new</span> ArrayList&lt;XMLEvent&gt;();
+            LinkInfo linkInfo = <span class="hl-keyword">this</span>.collectLinkInfo(innerContent);                      <span class="co"><img src="images/callouts/2.png" alt="(2)"></span>
+            <span class="hl-keyword">if</span>(linkInfo != null) {
+               linkInfo.setNavigationPath(<span class="hl-keyword">this</span>.getAttributeValue(event.asStartElement(), <span class="co"><img src="images/callouts/3.png" alt="(3)"></span>
+                  PUBLISHER_NS,<span class="hl-string">"navigationPath"</span>));
+
+               <span class="hl-keyword">this</span>.rewriteAttributesAndEmitEvent(event.asStartElement(),linkInfo);      <span class="co"><img src="images/callouts/4.png" alt="(4)"></span>
+
+               <span class="hl-keyword">if</span>(innerContent.size() != 0) {
+                  <span class="hl-keyword">this</span>.addAllEventsToQueue(innerContent);
+               }
+            } 
+            <span class="hl-comment">/* ... */</span>
+         } 
+         <span class="hl-comment">/* ... */</span>
+      }
+   }
+
+   <span class="hl-keyword">private</span> LinkInfo collectLinkInfo(List&lt;XMLEvent&gt; events) <span class="hl-keyword">throws</span> XMLStreamException {
+      Navigator linkInfoNavigator = <span class="hl-keyword">new</span> InSubtreeNavigator(LINK_INFO_EL);                <span class="co"><img src="images/callouts/5.png" alt="(5)"></span>
+      Navigator linkInfoPartNavigator = <span class="hl-keyword">new</span> FindStartElementNavigator(LINK_PART_INFO_EL);
+      LinkInfo linkInfo = null;
+
+      <span class="hl-keyword">while</span> (<span class="hl-keyword">this</span>.getParent().hasNext()) {
+         XMLEvent event = <span class="hl-keyword">this</span>.getParent().peek();                                       <span class="co"><img src="images/callouts/6.png" alt="(6)"></span>
+
+         <span class="hl-keyword">if</span> (linkInfoNavigator.fulfillsCriteria(event)) {
+            event = <span class="hl-keyword">this</span>.getParent().nextEvent();
+            <span class="hl-keyword">if</span> (linkInfoPartNavigator.fulfillsCriteria(event)) {
+               <span class="hl-comment">/* ... */</span>
+               String fileName = <span class="hl-keyword">this</span>.getAttributeValue(event.asStartElement(),<span class="hl-string">"fileName"</span>);
+               <span class="hl-keyword">if</span> (!<span class="hl-string">""</span>.equals(fileName)) {
+                  linkInfo.setFileName(fileName);
+               }
+            } <span class="hl-comment">/* ... */</span>
+         } <span class="hl-keyword">else</span> <span class="hl-keyword">if</span> (event.isCharacters()) {
+            events.add(<span class="hl-keyword">this</span>.getParent().nextEvent());
+         } <span class="hl-keyword">else</span> {
+            <span class="hl-keyword">return</span> linkInfo;
+         }
+      }
+      <span class="hl-keyword">return</span> linkInfo;
+   }
+
+   <span class="hl-keyword">private</span> <span class="hl-keyword">void</span> rewriteAttributesAndEmitEvent(StartElement event, LinkInfo linkInfo) ;
+
+}</pre><div class="calloutlist"><table border="0" summary="Callout list"><tr><td width="5%" valign="top" align="left"><img src="images/callouts/1.png" alt="1" border="0"></td><td valign="top" align="left"><p>The transformer checks for anchors in the XML.</p></td></tr><tr><td width="5%" valign="top" align="left"><img src="images/callouts/2.png" alt="2" border="0"></td><td valign="top" align="left"><p>If an anchor is found, it invokes a method which parses the link info if there is any. The additional array is for returning any events, which were read but do not belong to the linkinfo.</p></td></tr><tr><td width="5%" valign="top" align="left"><img src="images/callouts/3.png" alt="3" border="0"></td><td valign="top" align="left"><p>This method finally writes the start tag with the correct attributes taken from the parsed LinkInfo.</p></td></tr><tr><td width="5%" valign="top" align="left"><img src="images/callouts/4.png" alt="4" border="0"></td><td valign="top" align="left"><p>T
 he events, which were read but not parsed, are finally added to the output of the transformer.</p></td></tr><tr><td width="5%" valign="top" align="left"><img src="images/callouts/5.png" alt="5" border="0"></td><td valign="top" align="left"><p>The parser for the linkInfo object uses itself also navigators ...</p></td></tr><tr><td width="5%" valign="top" align="left"><img src="images/callouts/6.png" alt="6" border="0"></td><td valign="top" align="left"><p>... and reads more events from the parent.</p></td></tr></table></div></div></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="d0e571"></a>2.5.2.3.&nbsp;StAX serializer</h4></div></div></div><p>The <code class="literal">StAXSerializer</code> pulls and serializes the StAX events from the pipeline.</p><div class="programlistingco"><pre class="programlisting"><span class="hl-keyword">public</span> <span class="hl-keyword">class</span> NullSerializer <span class="hl-keyword">ext
 ends</span> AbstractStAXPipelineComponent <span class="hl-keyword">implements</span> StAXConsumer, Finisher {
+   <span class="hl-keyword">private</span> StAXProducer parent;                                                          <span class="co"><img src="images/callouts/1.png" alt="(1)"></span>
+
+   <span class="hl-keyword">public</span> <span class="hl-keyword">void</span> initiatePullProcessing() {                                                <span class="co"><img src="images/callouts/2.png" alt="(2)"></span>
+      <span class="hl-keyword">try</span> {
+         <span class="hl-keyword">while</span> (<span class="hl-keyword">this</span>.parent.hasNext()) {
+            XMLEvent event = <span class="hl-keyword">this</span>.parent.nextEvent();                                    <span class="co"><img src="images/callouts/3.png" alt="(3)"></span>
+            <span class="hl-comment">/* serialize Event */</span>
+         }
+      } <span class="hl-keyword">catch</span> (XMLStreamException e) {
+         <span class="hl-keyword">throw</span> <span class="hl-keyword">new</span> ProcessingException(<span class="hl-string">"Error during writing output elements."</span>, e);
+      }
+   }
+
+   <span class="hl-keyword">public</span> <span class="hl-keyword">void</span> setParent(StAXProducer parent) {                                          <span class="co"><img src="images/callouts/4.png" alt="(4)"></span>
+      <span class="hl-keyword">this</span>.parent = parent;
+   }
+
+   <span class="hl-keyword">public</span> String getContentType()  ;                                                     <span class="co"><img src="images/callouts/5.png" alt="(5)"></span>
+   <span class="hl-keyword">public</span> <span class="hl-keyword">void</span> setOutputStream(OutputStream outputStream) ;
+}</pre><div class="calloutlist"><table border="0" summary="Callout list"><tr><td width="5%" valign="top" align="left"><img src="images/callouts/1.png" alt="1" border="0"></td><td valign="top" align="left"><p>The Finisher has to pull from the previous pipeline component..</p></td></tr><tr><td width="5%" valign="top" align="left"><img src="images/callouts/2.png" alt="2" border="0"></td><td valign="top" align="left"><p>In case of StAX the last pipeline component has to start pulling for Events.</p></td></tr><tr><td width="5%" valign="top" align="left"><img src="images/callouts/3.png" alt="3" border="0"></td><td valign="top" align="left"><p>The serializer pulls the next Event from the previous component and should as next step serialize it.</p></td></tr><tr><td width="5%" valign="top" align="left"><img src="images/callouts/4.png" alt="4" border="0"></td><td valign="top" align="left"><p>During the pipeline construction the setParent is called to set the previous component of the 
 pipeline.</p></td></tr><tr><td width="5%" valign="top" align="left"><img src="images/callouts/5.png" alt="5" border="0"></td><td valign="top" align="left"><p>These two methods are defined in the Finisher and allow to set the OutputStream (if the Serializer needs any) and to retrieve the content-type of the result..</p></td></tr></table></div></div></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="d0e604"></a>2.5.3.&nbsp;Using StAX and SAX components in the same pipeline</h3></div></div></div><p>The StAX pipeline offers interoperability to SAX components to a certain degree. However due their different paradigms only two use cases are currently implemented: Wrapping a SAX component in a StAX pipeline and a StAX-to-SAX pipeline, which starts with StAX components and finishes with SAX.</p><div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="d0e609"></a>2.5.3.1.&nbsp;Wrapping a SAX compone
 nt in a StAX pipeline</h4></div></div></div><p>This allows to use existing SAX components in a StAX pipeline. Beware the overhead of the conversion of StAX-&gt;SAX-&gt;StAX - so no performance gains from a SAX component can be expected.</p><div class="programlistingco"><pre class="programlisting">
+Pipeline&lt;StAXPipelineComponent&gt; pipeStAX = <span class="hl-keyword">new</span> NonCachingPipeline&lt;StAXPipelineComponent&gt;(<span class="co"><img src="images/callouts/1.png" alt="(1)"></span>);
+pipeStAX.addComponent(<span class="hl-keyword">new</span> StAXGenerator(input));                                         <span class="co"><img src="images/callouts/2.png" alt="(2)"></span>
+pipeStAX.addComponent(<span class="hl-keyword">new</span> SAXForStAXPipelineWrapper(<span class="hl-keyword">new</span> CleaningTransformer()));         <span class="co"><img src="images/callouts/3.png" alt="(3)"></span>
+pipeStAX.addComponent(<span class="hl-keyword">new</span> StAXSerializer());
+pipeStAX.setup(System.out);
+pipeStAX.execute();</pre><div class="calloutlist"><table border="0" summary="Callout list"><tr><td width="5%" valign="top" align="left"><img src="images/callouts/1.png" alt="1" border="0"></td><td valign="top" align="left"><p>The pipeline uses a <code class="literal">StAXGenerator</code> - which produces StAX events.</p></td></tr><tr><td width="5%" valign="top" align="left"><img src="images/callouts/2.png" alt="2" border="0"></td><td valign="top" align="left"><p>In order to embed a single SAX component in a StAX pipeline, the <code class="literal">SAXForStAXPipelineWrapper</code> is needed. The constructor argument is the SAX component.</p></td></tr><tr><td width="5%" valign="top" align="left"><img src="images/callouts/3.png" alt="3" border="0"></td><td valign="top" align="left"><p>Altough the <code class="literal">CleaningTransformer</code> would emit SAX calls - the wrapper converts them back to the appropriate StAX events the <code class="literal">StAXSerializer</code> ca
 n write..</p></td></tr></table></div></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="d0e643"></a>2.5.3.2.&nbsp;StAX-to-SAX pipeline</h4></div></div></div><p>This converter allows to mix StAX and SAX components - but is limited to starting with StAX and then switching to SAX. </p><div class="programlistingco"><pre class="programlisting">Pipeline&lt;PipelineComponent&gt; pipeStAX = <span class="hl-keyword">new</span> NonCachingPipeline&lt;StAXPipelineComponent&gt;();
+pipeStAX.addComponent(<span class="hl-keyword">new</span> StAXGenerator(input));                                         <span class="co"><img src="images/callouts/1.png" alt="(1)"></span>
+pipeStAX.addComponent(<span class="hl-keyword">new</span> StAXToSAXPipelineAdapter());                                   <span class="co"><img src="images/callouts/2.png" alt="(2)"></span>
+pipeStAX.addComponent(<span class="hl-keyword">new</span> CleaningTransformer());                                        <span class="co"><img src="images/callouts/3.png" alt="(3)"></span>
+pipeStAX.addComponent(<span class="hl-keyword">new</span> XMLSerializer());                                              <span class="co"><img src="images/callouts/4.png" alt="(4)"></span>
+pipeStAX.setup(System.out);
+pipeStAX.execute();</pre><div class="calloutlist"><table border="0" summary="Callout list"><tr><td width="5%" valign="top" align="left"><img src="images/callouts/1.png" alt="1" border="0"></td><td valign="top" align="left"><p>The pipeline starts with a <code class="literal">StAXGenerator</code>.</p></td></tr><tr><td width="5%" valign="top" align="left"><img src="images/callouts/2.png" alt="2" border="0"></td><td valign="top" align="left"><p>The adapter converts the StAX events to SAX method calls.</p></td></tr><tr><td width="5%" valign="top" align="left"><img src="images/callouts/3.png" alt="3" border="0"></td><td valign="top" align="left"><p>The <code class="literal">CleaningTransformer</code> is a SAX component.</p></td></tr><tr><td width="5%" valign="top" align="left"><img src="images/callouts/4.png" alt="4" border="0"></td><td valign="top" align="left"><p>The <code class="literal">XMLSerializer</code> writes the SAX method calls to a file.</p></td></tr></table></div></di
 v></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="d0e678"></a>2.5.4.&nbsp;Java 1.5 support</h3></div></div></div><p>In order to use StAX with Java 1.5 an additional dependency is needed in the project's <code class="literal">pom.xml</code>. 
+      </p><pre class="programlisting">&lt;<span class="hl-tag">dependency</span>&gt;
+  &lt;<span class="hl-tag">groupId</span>&gt;org.codehaus.woodstox&lt;<span class="hl-tag">/groupId</span>&gt;
+  &lt;<span class="hl-tag">artifactId</span>&gt;wstx-asl&lt;<span class="hl-tag">/artifactId</span>&gt;
+  &lt;<span class="hl-tag">version</span>&gt;3.2.7&lt;<span class="hl-tag">/version</span>&gt;
+&lt;<span class="hl-tag">/dependency</span>&gt;
+</pre><p>
+      Using woodstox is simpler, as the reference implementation depends on JAXP 1.4, which is not part of Java 1.5.
+      </p></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="pipelines.utils"></a>2.6.&nbsp;Utilities</h2></div></div></div><p>TBW: XMLUtils, TransformUtils</p></div></div><div xmlns:fo="http://www.w3.org/1999/XSL/Format" class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="introduction.html">Prev</a>&nbsp;</td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right">&nbsp;<a accesskey="n" href="sitemap.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter&nbsp;1.&nbsp;Introduction&nbsp;</td><td width="20%" align="center"><span style="color:white;font-size:85%;"><a href="http://cocoon.apache.org/3.0/" title="The Apache Cocoon community">The Apache Cocoon community</a></span></td><td width="40%" align="right" valign="top">&nbsp;Chapter&nbsp;3.&nbsp;Sitemaps</
 td></tr></table></div></body></html>

Propchange: cocoon/site/site/3.0/reference/html-single/pipelines.html
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: cocoon/site/site/3.0/reference/html-single/pipelines.html
------------------------------------------------------------------------------
    svn:mime-type = text/html

Added: cocoon/site/site/3.0/reference/html-single/sitemap.html
URL: http://svn.apache.org/viewvc/cocoon/site/site/3.0/reference/html-single/sitemap.html?rev=896957&view=auto
==============================================================================
--- cocoon/site/site/3.0/reference/html-single/sitemap.html (added)
+++ cocoon/site/site/3.0/reference/html-single/sitemap.html Thu Jan  7 18:47:18 2010
@@ -0,0 +1,3 @@
+<html><head>
+      <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+   <title>Chapter&nbsp;3.&nbsp;Sitemaps</title><link rel="stylesheet" href="css/html.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.72.0"><link rel="start" href="index.html" title="Cocoon 3.0 ALPHA - Reference Documentation"><link rel="up" href="index.html" title="Cocoon 3.0 ALPHA - Reference Documentation"><link rel="prev" href="pipelines.html" title="Chapter&nbsp;2.&nbsp;Pipelines"><link rel="next" href="webapps.html" title="Chapter&nbsp;4.&nbsp;Web applications"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div xmlns:fo="http://www.w3.org/1999/XSL/Format" id="top"><div id="header"><div class="projectlogo"><a href="./"><img class="logoImage" src="images/cocoon_logo.jpg" alt="Apache Cocoon" border="0"></a></div></div></div><div xmlns:fo="http://www.w3.org/1999/XSL/Format" class="mhSpacer"></div><div class="chapter" lang="en"><div class="titlepage"><div><div><h2 class="title"><a name="sitemap"></a>C
 hapter&nbsp;3.&nbsp;Sitemaps</h2></div></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="sitemaps.definition"></a>3.1.&nbsp;What is a sitemap?</h2></div></div></div><p>TBW</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="sitemaps.evaluation"></a>3.2.&nbsp;Sitemap evaluation?</h2></div></div></div><p>TBW</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="sitemaps.expression-languages"></a>3.3.&nbsp;Expression languages</h2></div></div></div><p>TBW</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="sitemaps.spring"></a>3.4.&nbsp;Spring integration</h2></div></div></div><p>TBW</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="sitema
 ps.embedding"></a>3.5.&nbsp;Embedding a sitemap</h2></div></div></div><p>TBW</p></div></div><div xmlns:fo="http://www.w3.org/1999/XSL/Format" class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="pipelines.html">Prev</a>&nbsp;</td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right">&nbsp;<a accesskey="n" href="webapps.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter&nbsp;2.&nbsp;Pipelines&nbsp;</td><td width="20%" align="center"><span style="color:white;font-size:85%;"><a href="http://cocoon.apache.org/3.0/" title="The Apache Cocoon community">The Apache Cocoon community</a></span></td><td width="40%" align="right" valign="top">&nbsp;Chapter&nbsp;4.&nbsp;Web applications</td></tr></table></div></body></html>

Propchange: cocoon/site/site/3.0/reference/html-single/sitemap.html
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: cocoon/site/site/3.0/reference/html-single/sitemap.html
------------------------------------------------------------------------------
    svn:mime-type = text/html

Added: cocoon/site/site/3.0/reference/html-single/webapps.html
URL: http://svn.apache.org/viewvc/cocoon/site/site/3.0/reference/html-single/webapps.html?rev=896957&view=auto
==============================================================================
--- cocoon/site/site/3.0/reference/html-single/webapps.html (added)
+++ cocoon/site/site/3.0/reference/html-single/webapps.html Thu Jan  7 18:47:18 2010
@@ -0,0 +1,34 @@
+<html><head>
+      <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+   <title>Chapter&nbsp;4.&nbsp;Web applications</title><link rel="stylesheet" href="css/html.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.72.0"><link rel="start" href="index.html" title="Cocoon 3.0 ALPHA - Reference Documentation"><link rel="up" href="index.html" title="Cocoon 3.0 ALPHA - Reference Documentation"><link rel="prev" href="sitemap.html" title="Chapter&nbsp;3.&nbsp;Sitemaps"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div xmlns:fo="http://www.w3.org/1999/XSL/Format" id="top"><div id="header"><div class="projectlogo"><a href="./"><img class="logoImage" src="images/cocoon_logo.jpg" alt="Apache Cocoon" border="0"></a></div></div></div><div xmlns:fo="http://www.w3.org/1999/XSL/Format" class="mhSpacer"></div><div class="chapter" lang="en"><div class="titlepage"><div><div><h2 class="title"><a name="webapps"></a>Chapter&nbsp;4.&nbsp;Web applications</h2></div></div></div><div class="section
 " lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="webapps.scenarios"></a>4.1.&nbsp;Usage scenarios</h2></div></div></div><p>TBW</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="webapps.servlet-service-fw"></a>4.2.&nbsp;Servlet-Service framework integration</h2></div></div></div><p>TBW: Composition, servlet: protocol, inheritence</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="webapps.http-environments"></a>4.3.&nbsp;Sitemaps in an HTTP environement</h2></div></div></div><p>TBW: Status codes, Conditional GET requests, Mime-type handling</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="webapps.system-setup"></a>4.4.&nbsp;System setup</h2></div></div></div><p>TBW: Logging, JNet, Configuration, Spring integration Deployment: Bl
 ocks as deployment units AND Creating a web archive (WAR), Devleopment with Eclispe and Maven</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="webapps.pipeline-fragments"></a>4.5.&nbsp;Connecting pipeline fragments</h2></div></div></div><p>TBW</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="webapps.rest"></a>4.6.&nbsp;RESTful web services</h2></div></div></div><p>
+    
+    </p><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="webapps.rest.sitemap"></a>4.6.1.&nbsp;Sitemap based RESTful web services</h3></div></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="d0e760"></a>4.6.1.1.&nbsp;Introduction</h4></div></div></div><p>
+          TBW: REST controller, Rendering views using StringTemplate, Request-wide transactions (incl. Subrequests) 
+        </p></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="webapps.rest.jaxrs"></a>4.6.2.&nbsp;JAX-RS based controllers (JSR311) </h3></div></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="d0e768"></a>4.6.2.1.&nbsp;Introduction</h4></div></div></div><p>
+          JAX-RS (JSR 311) is the Java standard for the development of RESTful web services. It provides a
+          set of annotations that, when being applied, define resources that are exposed by using Uniform Resource 
+          Identifiers (URIs).
+        </p><p>
+          The <a xmlns:xlink="http://www.w3.org/1999/xlink" href="http://wikis.sun.com/display/Jersey/Main" target="_top">wiki of the Jersey project</a> that provides 
+          the Reference Implementation of JAX-RS contains a lot of useful information about how to define REST resources.
+        </p></div><div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="d0e778"></a>4.6.2.2.&nbsp;Integration</h4></div></div></div><p>
+          Cocoon is based on the Cocoon Servlet-Service-Framework. The integration of JAX-RS is done by a special
+          servlet that exposes all REST resources:
+        </p><div class="programlistingco"><pre class="programlisting">&lt;<span class="hl-tag">beans</span> <span class="hl-attribute">xmlns</span>=<span class="hl-value">"http://www.springframework.org/schema/beans"</span>
+  <span class="hl-attribute">xmlns:xsi</span>=<span class="hl-value">"http://www.w3.org/2001/XMLSchema-instance"</span>
+  <span class="hl-attribute">xmlns:servlet</span>=<span class="hl-value">"http://cocoon.apache.org/schema/servlet"</span>
+  <span class="hl-attribute">xsi:schemaLocation</span>=<span class="hl-value">"http://www.springframework.org/schema/beans 
+    http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
+  http://cocoon.apache.org/schema/servlet 
+    http://cocoon.apache.org/schema/servlet/cocoon-servlet-1.0.xsd"</span>&gt;
+  
+  &lt;<span class="hl-comment">!-- A servlet-service that exposes JAX-RS REST endpoints. --</span>&gt;
+  &lt;<span class="hl-tag">bean</span> <span class="hl-attribute">id</span>=<span class="hl-value">"org.apache.cocoon.sample.rest.servlet"</span> 
+    <span class="hl-attribute">class</span>=<span class="hl-value">"org.apache.cocoon.rest.jaxrs.container.CocoonJAXRSServlet"</span>&gt;                   <span class="co"><img src="images/callouts/1.png" alt="(1)"></span>
+    &lt;<span class="hl-tag">servlet:context</span> <span class="hl-attribute">mount-path</span>=<span class="hl-value">"/jax-rs"</span> <span class="hl-attribute">context-path</span>=<span class="hl-value">"blockcontext:/cocoon-sample/"</span>&gt;   <span class="co"><img src="images/callouts/2.png" alt="(2)"></span>
+      &lt;<span class="hl-tag">servlet:connections</span>&gt;
+        &lt;<span class="hl-tag">entry</span> <span class="hl-attribute">key</span>=<span class="hl-value">"sample"</span> <span class="hl-attribute">value-ref</span>=<span class="hl-value">"org.apache.cocoon.sample.servlet"</span> /&gt;
+      &lt;<span class="hl-tag">/servlet:connections</span>&gt;      
+    &lt;<span class="hl-tag">/servlet:context</span>&gt;
+  &lt;<span class="hl-tag">/bean</span>&gt;  
+&lt;<span class="hl-tag">/beans</span>&gt;</pre><div class="calloutlist"><table border="0" summary="Callout list"><tr><td width="5%" valign="top" align="left"><img src="images/callouts/1.png" alt="1" border="0"></td><td valign="top" align="left"><p>The <code class="literal">CocoonJAXRSServlet</code> exposes REST resources.</p></td></tr><tr><td width="5%" valign="top" align="left"><img src="images/callouts/2.png" alt="2" border="0"></td><td valign="top" align="left"><p><code class="literal">/jax-rs</code> is the base path to the REST resources..</p></td></tr></table></div></div></div></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="webapps.caching"></a>4.7.&nbsp;Caching and conditional GET requests</h2></div></div></div><p>TBW</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="webapps.auth"></a>4.8.&nbsp;Authentication</h2></div></div>
 </div><p>TBW</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="webapps.testing"></a>4.9.&nbsp;Testing</h2></div></div></div><p>TBW: Integeration tests</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="webapps.tutorial"></a>4.10.&nbsp;Tutorial</h2></div></div></div><p>TBW</p></div></div><div xmlns:fo="http://www.w3.org/1999/XSL/Format" class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="sitemap.html">Prev</a>&nbsp;</td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right">&nbsp;</td></tr><tr><td width="40%" align="left" valign="top">Chapter&nbsp;3.&nbsp;Sitemaps&nbsp;</td><td width="20%" align="center"><span style="color:white;font-size:85%;"><a href="http://cocoon.apache.org/3.0/" title="The Apache Cocoon commu
 nity">The Apache Cocoon community</a></span></td><td width="40%" align="right" valign="top">&nbsp;</td></tr></table></div></body></html>

Propchange: cocoon/site/site/3.0/reference/html-single/webapps.html
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: cocoon/site/site/3.0/reference/html-single/webapps.html
------------------------------------------------------------------------------
    svn:mime-type = text/html

Modified: cocoon/site/site/3.0/reference/html/css/html.css
URL: http://svn.apache.org/viewvc/cocoon/site/site/3.0/reference/html/css/html.css?rev=896957&r1=896956&r2=896957&view=diff
==============================================================================
--- cocoon/site/site/3.0/reference/html/css/html.css (original)
+++ cocoon/site/site/3.0/reference/html/css/html.css Thu Jan  7 18:47:18 2010
@@ -330,7 +330,7 @@
 }
 
 div.calloutlist * td {
-    text-align: left;
+	text-align: left;
 }
 
 body {

Added: cocoon/site/site/3.0/reference/html/graphics/profilingGraph.jpg
URL: http://svn.apache.org/viewvc/cocoon/site/site/3.0/reference/html/graphics/profilingGraph.jpg?rev=896957&view=auto
==============================================================================
Binary file - no diff available.

Propchange: cocoon/site/site/3.0/reference/html/graphics/profilingGraph.jpg
------------------------------------------------------------------------------
    svn:mime-type = image/jpeg

Added: cocoon/site/site/3.0/reference/html/graphics/profiling_firebug_argument.jpg
URL: http://svn.apache.org/viewvc/cocoon/site/site/3.0/reference/html/graphics/profiling_firebug_argument.jpg?rev=896957&view=auto
==============================================================================
Binary file - no diff available.

Propchange: cocoon/site/site/3.0/reference/html/graphics/profiling_firebug_argument.jpg
------------------------------------------------------------------------------
    svn:mime-type = image/jpeg

Added: cocoon/site/site/3.0/reference/html/graphics/profiling_firebug_component.jpg
URL: http://svn.apache.org/viewvc/cocoon/site/site/3.0/reference/html/graphics/profiling_firebug_component.jpg?rev=896957&view=auto
==============================================================================
Binary file - no diff available.

Propchange: cocoon/site/site/3.0/reference/html/graphics/profiling_firebug_component.jpg
------------------------------------------------------------------------------
    svn:mime-type = image/jpeg

Added: cocoon/site/site/3.0/reference/html/graphics/profiling_firebug_exception.jpg
URL: http://svn.apache.org/viewvc/cocoon/site/site/3.0/reference/html/graphics/profiling_firebug_exception.jpg?rev=896957&view=auto
==============================================================================
Binary file - no diff available.

Propchange: cocoon/site/site/3.0/reference/html/graphics/profiling_firebug_exception.jpg
------------------------------------------------------------------------------
    svn:mime-type = image/jpeg

Added: cocoon/site/site/3.0/reference/html/graphics/profiling_firebug_invocation.jpg
URL: http://svn.apache.org/viewvc/cocoon/site/site/3.0/reference/html/graphics/profiling_firebug_invocation.jpg?rev=896957&view=auto
==============================================================================
Binary file - no diff available.

Propchange: cocoon/site/site/3.0/reference/html/graphics/profiling_firebug_invocation.jpg
------------------------------------------------------------------------------
    svn:mime-type = image/jpeg

Added: cocoon/site/site/3.0/reference/html/graphics/profiling_firebug_node.jpg
URL: http://svn.apache.org/viewvc/cocoon/site/site/3.0/reference/html/graphics/profiling_firebug_node.jpg?rev=896957&view=auto
==============================================================================
Binary file - no diff available.

Propchange: cocoon/site/site/3.0/reference/html/graphics/profiling_firebug_node.jpg
------------------------------------------------------------------------------
    svn:mime-type = image/jpeg

Added: cocoon/site/site/3.0/reference/html/graphics/profiling_firebug_profiler.jpg
URL: http://svn.apache.org/viewvc/cocoon/site/site/3.0/reference/html/graphics/profiling_firebug_profiler.jpg?rev=896957&view=auto
==============================================================================
Binary file - no diff available.

Propchange: cocoon/site/site/3.0/reference/html/graphics/profiling_firebug_profiler.jpg
------------------------------------------------------------------------------
    svn:mime-type = image/jpeg

Added: cocoon/site/site/3.0/reference/html/graphics/profiling_firebug_property.jpg
URL: http://svn.apache.org/viewvc/cocoon/site/site/3.0/reference/html/graphics/profiling_firebug_property.jpg?rev=896957&view=auto
==============================================================================
Binary file - no diff available.

Propchange: cocoon/site/site/3.0/reference/html/graphics/profiling_firebug_property.jpg
------------------------------------------------------------------------------
    svn:mime-type = image/jpeg

Added: cocoon/site/site/3.0/reference/html/graphics/profiling_firebug_return.jpg
URL: http://svn.apache.org/viewvc/cocoon/site/site/3.0/reference/html/graphics/profiling_firebug_return.jpg?rev=896957&view=auto
==============================================================================
Binary file - no diff available.

Propchange: cocoon/site/site/3.0/reference/html/graphics/profiling_firebug_return.jpg
------------------------------------------------------------------------------
    svn:mime-type = image/jpeg

Added: cocoon/site/site/3.0/reference/html/graphics/profiling_firebug_servlet.jpg
URL: http://svn.apache.org/viewvc/cocoon/site/site/3.0/reference/html/graphics/profiling_firebug_servlet.jpg?rev=896957&view=auto
==============================================================================
Binary file - no diff available.

Propchange: cocoon/site/site/3.0/reference/html/graphics/profiling_firebug_servlet.jpg
------------------------------------------------------------------------------
    svn:mime-type = image/jpeg

Added: cocoon/site/site/3.0/reference/html/graphics/profiling_firebug_sitemap.jpg
URL: http://svn.apache.org/viewvc/cocoon/site/site/3.0/reference/html/graphics/profiling_firebug_sitemap.jpg?rev=896957&view=auto
==============================================================================
Binary file - no diff available.

Propchange: cocoon/site/site/3.0/reference/html/graphics/profiling_firebug_sitemap.jpg
------------------------------------------------------------------------------
    svn:mime-type = image/jpeg

Modified: cocoon/site/site/3.0/reference/html/index.html
URL: http://svn.apache.org/viewvc/cocoon/site/site/3.0/reference/html/index.html?rev=896957&r1=896956&r2=896957&view=diff
==============================================================================
--- cocoon/site/site/3.0/reference/html/index.html (original)
+++ cocoon/site/site/3.0/reference/html/index.html Thu Jan  7 18:47:18 2010
@@ -2,7 +2,7 @@
       <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
    <title>Cocoon 3.0 ALPHA - Reference Documentation</title><link rel="stylesheet" href="css/html.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.72.0"><link rel="start" href="index.html" title="Cocoon 3.0 ALPHA - Reference Documentation"><link rel="next" href="introduction.html" title="Chapter&nbsp;1.&nbsp;Introduction"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div xmlns:fo="http://www.w3.org/1999/XSL/Format" id="top"><div id="header"><div class="projectlogo"><a href="./"><img class="logoImage" src="images/cocoon_logo.jpg" alt="Apache Cocoon" border="0"></a></div></div></div><div xmlns:fo="http://www.w3.org/1999/XSL/Format" class="mhSpacer"></div><div class="book" lang="en"><div class="titlepage"><div><div><h1 class="title"><a name="d0e2"></a>Cocoon 3.0 ALPHA - Reference Documentation</h1></div><div><div xmlns:fo="http://www.w3.org/1999/XSL/Format" class="authorgroup"><h2>Authors</h2><p></p><spa
 n class="author"><span class="firstname">Reinhard</span> <span class="surname">P&ouml;tz</span> 
             (Indoqa Software Design und Beratung GmbH)
-            </span></div></div><div><p class="releaseinfo">Cocoon 3.0 ALPHA</p></div><div><div class="legalnotice"><a name="d0e16"></a><p>Copies of this document may be made for your own use and for
+            </span></div></div><div><p class="releaseinfo">Apache Cocoon 3.0 ALPHA</p></div><div><div class="legalnotice"><a name="d0e16"></a><p>Copies of this document may be made for your own use and for
       distribution to others, provided that you do not charge any fee for such
       copies and further provided that each copy contains this Copyright
-      Notice, whether distributed in print or electronically.</p></div></div></div><hr></div><div class="toc"><dl><dt><span class="chapter"><a href="introduction.html">1. Introduction</a></span></dt><dd><dl><dt><span class="section"><a href="introduction.html#introduction.why-cocoon3">1.1. Why Cocoon 3 - Motivation</a></span></dt><dt><span class="section"><a href="introduction.html#introduction.previous-versions">1.2. Relationship to previous versions</a></span></dt><dt><span class="section"><a href="introduction.html#introduction.requirements">1.3. Requirements</a></span></dt></dl></dd><dt><span class="chapter"><a href="pipelines.html">2. Pipelines</a></span></dt><dd><dl><dt><span class="section"><a href="pipelines.html#pipelines.definition">2.1. What is a pipeline?</a></span></dt><dd><dl><dt><span class="section"><a href="pipelines.html#d0e88">2.1.1. Linear pipelines</a></span></dt><dt><span class="section"><a href="pipelines.html#d0e98">2.1.2. Pipelines by example</a></sp
 an></dt></dl></dd><dt><span class="section"><a href="pipelines.html#pipelines.implementations">2.2. Pipeline implementations</a></span></dt><dt><span class="section"><a href="pipelines.html#pipelines.embedding">2.3. Embedding a pipeline</a></span></dt><dt><span class="section"><a href="pipelines.html#pipeline.sax">2.4. SAX components</a></span></dt><dd><dl><dt><span class="section"><a href="pipelines.html#d0e363">2.4.1. Available components</a></span></dt><dt><span class="section"><a href="pipelines.html#d0e368">2.4.2. Writing custom components</a></span></dt><dd><dl><dt><span class="section"><a href="pipelines.html#d0e371">2.4.2.1. SAX generator</a></span></dt><dt><span class="section"><a href="pipelines.html#d0e376">2.4.2.2. SAX transformer</a></span></dt><dt><span class="section"><a href="pipelines.html#d0e383">2.4.2.3. SAX serializer</a></span></dt></dl></dd></dl></dd><dt><span class="section"><a href="pipelines.html#pipeline.stax">2.5. StAX components</a></span></dt><dd
 ><dl><dt><span class="section"><a href="pipelines.html#d0e393">2.5.1. Available components</a></span></dt><dt><span class="section"><a href="pipelines.html#d0e398">2.5.2. Writing custom components</a></span></dt><dd><dl><dt><span class="section"><a href="pipelines.html#d0e401">2.5.2.1. StAX generator</a></span></dt><dt><span class="section"><a href="pipelines.html#d0e406">2.5.2.2. StAX transformer</a></span></dt><dt><span class="section"><a href="pipelines.html#d0e413">2.5.2.3. StAX serializer</a></span></dt></dl></dd><dt><span class="section"><a href="pipelines.html#d0e418">2.5.3. Using StAX and SAX components in the same pipeline</a></span></dt><dt><span class="section"><a href="pipelines.html#d0e422">2.5.4. Java 1.5 support</a></span></dt></dl></dd><dt><span class="section"><a href="pipelines.html#pipelines.utils">2.6. Utilities</a></span></dt></dl></dd><dt><span class="chapter"><a href="sitemap.html">3. Sitemaps</a></span></dt><dd><dl><dt><span class="section"><a href="s
 itemap.html#sitemaps.definition">3.1. What is a sitemap?</a></span></dt><dt><span class="section"><a href="sitemap.html#sitemaps.evaluation">3.2. Sitemap evaluation?</a></span></dt><dt><span class="section"><a href="sitemap.html#sitemaps.expression-languages">3.3. Expression languages</a></span></dt><dt><span class="section"><a href="sitemap.html#sitemaps.spring">3.4. Spring integration</a></span></dt><dt><span class="section"><a href="sitemap.html#sitemaps.embedding">3.5. Embedding a sitemap</a></span></dt></dl></dd><dt><span class="chapter"><a href="webapps.html">4. Web applications</a></span></dt><dd><dl><dt><span class="section"><a href="webapps.html#webapps.scenarios">4.1. Usage scenarios</a></span></dt><dt><span class="section"><a href="webapps.html#webapps.servlet-service-fw">4.2. Servlet-Service framework integration</a></span></dt><dt><span class="section"><a href="webapps.html#webapps.http-environments">4.3. Sitemaps in an HTTP environement</a></span></dt><dt><span
  class="section"><a href="webapps.html#webapps.system-setup">4.4. System setup</a></span></dt><dt><span class="section"><a href="webapps.html#webapps.pipeline-fragments">4.5. Connecting pipeline fragments</a></span></dt><dt><span class="section"><a href="webapps.html#webapps.rest">4.6. RESTful web services</a></span></dt><dt><span class="section"><a href="webapps.html#webapps.caching">4.7. Caching and conditional GET requests</a></span></dt><dt><span class="section"><a href="webapps.html#webapps.auth">4.8. Authentication</a></span></dt><dt><span class="section"><a href="webapps.html#webapps.testing">4.9. Testing</a></span></dt><dt><span class="section"><a href="webapps.html#webapps.tutorial">4.10. Tutorial</a></span></dt></dl></dd></dl></div></div><div xmlns:fo="http://www.w3.org/1999/XSL/Format" class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left">&nbsp;</td><td width="20%" align="center">&nbsp;</td><td width="40%" align="ri
 ght">&nbsp;<a accesskey="n" href="introduction.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">&nbsp;</td><td width="20%" align="center"><span style="color:white;font-size:85%;"><a href="http://cocoon.apache.org/3.0/" title="The Apache Cocoon community">The Apache Cocoon community</a></span></td><td width="40%" align="right" valign="top">&nbsp;Chapter&nbsp;1.&nbsp;Introduction</td></tr></table></div></body></html>
+      Notice, whether distributed in print or electronically.</p></div></div></div><hr></div><div class="toc"><dl><dt><span class="chapter"><a href="introduction.html">1. Introduction</a></span></dt><dd><dl><dt><span class="section"><a href="introduction.html#introduction.why-cocoon3">1.1. Why Cocoon 3 - Motivation</a></span></dt><dt><span class="section"><a href="introduction.html#introduction.previous-versions">1.2. Relationship to previous versions</a></span></dt><dt><span class="section"><a href="introduction.html#introduction.requirements">1.3. Requirements</a></span></dt></dl></dd><dt><span class="chapter"><a href="pipelines.html">2. Pipelines</a></span></dt><dd><dl><dt><span class="section"><a href="pipelines.html#pipelines.definition">2.1. What is a pipeline?</a></span></dt><dd><dl><dt><span class="section"><a href="pipelines.html#d0e88">2.1.1. Linear pipelines</a></span></dt><dt><span class="section"><a href="pipelines.html#d0e98">2.1.2. Pipelines by example</a></sp
 an></dt></dl></dd><dt><span class="section"><a href="pipelines.html#pipelines.implementations">2.2. Pipeline implementations</a></span></dt><dt><span class="section"><a href="pipelines.html#pipelines.embedding">2.3. Embedding a pipeline</a></span></dt><dt><span class="section"><a href="pipelines.html#pipeline.sax">2.4. SAX components</a></span></dt><dd><dl><dt><span class="section"><a href="pipelines.html#d0e363">2.4.1. Available components</a></span></dt><dt><span class="section"><a href="pipelines.html#d0e368">2.4.2. Writing custom components</a></span></dt><dd><dl><dt><span class="section"><a href="pipelines.html#d0e371">2.4.2.1. SAX generator</a></span></dt><dt><span class="section"><a href="pipelines.html#d0e376">2.4.2.2. SAX transformer</a></span></dt><dt><span class="section"><a href="pipelines.html#d0e383">2.4.2.3. SAX serializer</a></span></dt></dl></dd></dl></dd><dt><span class="section"><a href="pipelines.html#pipeline.stax">2.5. StAX components</a></span></dt><dd
 ><dl><dt><span class="section"><a href="pipelines.html#d0e395">2.5.1. Available components</a></span></dt><dt><span class="section"><a href="pipelines.html#d0e429">2.5.2. Writing custom components</a></span></dt><dd><dl><dt><span class="section"><a href="pipelines.html#d0e432">2.5.2.1. StAX generator</a></span></dt><dt><span class="section"><a href="pipelines.html#d0e482">2.5.2.2. StAX transformer</a></span></dt><dt><span class="section"><a href="pipelines.html#d0e580">2.5.2.3. StAX serializer</a></span></dt></dl></dd><dt><span class="section"><a href="pipelines.html#d0e613">2.5.3. Using StAX and SAX components in the same pipeline</a></span></dt><dd><dl><dt><span class="section"><a href="pipelines.html#d0e618">2.5.3.1. Wrapping a SAX component in a StAX pipeline</a></span></dt><dt><span class="section"><a href="pipelines.html#d0e652">2.5.3.2. StAX-to-SAX pipeline</a></span></dt></dl></dd><dt><span class="section"><a href="pipelines.html#d0e687">2.5.4. Java 1.5 support</a></
 span></dt></dl></dd><dt><span class="section"><a href="pipelines.html#pipelines.utils">2.6. Utilities</a></span></dt></dl></dd><dt><span class="chapter"><a href="sitemap.html">3. Sitemaps</a></span></dt><dd><dl><dt><span class="section"><a href="sitemap.html#sitemaps.definition">3.1. What is a sitemap?</a></span></dt><dt><span class="section"><a href="sitemap.html#sitemaps.evaluation">3.2. Sitemap evaluation?</a></span></dt><dt><span class="section"><a href="sitemap.html#sitemaps.expression-languages">3.3. Expression languages</a></span></dt><dt><span class="section"><a href="sitemap.html#sitemaps.spring">3.4. Spring integration</a></span></dt><dt><span class="section"><a href="sitemap.html#sitemaps.embedding">3.5. Embedding a sitemap</a></span></dt></dl></dd><dt><span class="chapter"><a href="webapps.html">4. Web applications</a></span></dt><dd><dl><dt><span class="section"><a href="webapps.html#webapps.scenarios">4.1. Usage scenarios</a></span></dt><dt><span class="section
 "><a href="webapps.html#webapps.servlet-service-fw">4.2. Servlet-Service framework integration</a></span></dt><dt><span class="section"><a href="webapps.html#webapps.http-environments">4.3. Sitemaps in an HTTP environement</a></span></dt><dt><span class="section"><a href="webapps.html#webapps.system-setup">4.4. System setup</a></span></dt><dt><span class="section"><a href="webapps.html#webapps.pipeline-fragments">4.5. Connecting pipeline fragments</a></span></dt><dt><span class="section"><a href="webapps.html#webapps.rest">4.6. RESTful web services</a></span></dt><dd><dl><dt><span class="section"><a href="webapps.html#webapps.rest.sitemap">4.6.1. Sitemap based RESTful web services</a></span></dt><dd><dl><dt><span class="section"><a href="webapps.html#d0e769">4.6.1.1. Introduction</a></span></dt></dl></dd><dt><span class="section"><a href="webapps.html#webapps.rest.jaxrs">4.6.2. JAX-RS based controllers (JSR311) </a></span></dt><dd><dl><dt><span class="section"><a href="webap
 ps.html#d0e777">4.6.2.1. Introduction</a></span></dt><dt><span class="section"><a href="webapps.html#webapps.rest.jaxrs.sample">4.6.2.2. Cocoon and JAX-RS by example</a></span></dt></dl></dd></dl></dd><dt><span class="section"><a href="webapps.html#webapps.caching">4.7. Caching and conditional GET requests</a></span></dt><dt><span class="section"><a href="webapps.html#webapps.auth">4.8. Authentication</a></span></dt><dt><span class="section"><a href="webapps.html#webapps.testing">4.9. Testing</a></span></dt><dt><span class="section"><a href="webapps.html#webapps.profiling">4.10. Profiling support</a></span></dt><dd><dl><dt><span class="section"><a href="webapps.html#d0e1040">4.10.1. Module configuration</a></span></dt><dt><span class="section"><a href="webapps.html#d0e1048">4.10.2. Using Cocoon Profiling</a></span></dt><dd><dl><dt><span class="section"><a href="webapps.html#d0e1083">4.10.2.1. How can I enable/disable cocoon-profiling on the fly?</a></span></dt><dt><span clas
 s="section"><a href="webapps.html#d0e1092">4.10.2.2. I need cocoon-profiling to profile my custom cocoon component, how can I do that?</a></span></dt></dl></dd><dt><span class="section"><a href="webapps.html#d0e1099">4.10.3. Using Firebug with Cocoon-profiling</a></span></dt><dd><dl><dt><span class="section"><a href="webapps.html#d0e1233">4.10.3.1. Customizing your Firebug Plugin</a></span></dt></dl></dd></dl></dd><dt><span class="section"><a href="webapps.html#webapps.monitoring">4.11. Monitoring support</a></span></dt><dd><dl><dt><span class="section"><a href="webapps.html#webapps.monitoring.configuration">4.11.1. Module configuration</a></span></dt><dt><span class="section"><a href="webapps.html#webapps.monitoring.parts">4.11.2. Available parts</a></span></dt><dd><dl><dt><span class="section"><a href="webapps.html#webapps.monitoring.logging">4.11.2.1. Inspect logging settings and reconfigure them</a></span></dt><dt><span class="section"><a href="webapps.html#webapps.monit
 oring.servletservices">4.11.2.2. Inspect available Servlet-Services</a></span></dt><dt><span class="section"><a href="webapps.html#webapps.monitoring.cacheoverview">4.11.2.3. Overview of cache entries</a></span></dt></dl></dd></dl></dd><dt><span class="section"><a href="webapps.html#webapps.tutorial">4.12. Tutorial</a></span></dt></dl></dd><dt><span class="chapter"><a href="wicket-integration.html">5. Wicket Integration</a></span></dt><dd><dl><dt><span class="section"><a href="wicket-integration.html#wicket.introduction">5.1. Introduction</a></span></dt><dt><span class="section"><a href="wicket-integration.html#wicket.wicket-cocoon-integration">5.2. Integrate Cocoon into Wicket</a></span></dt><dd><dl><dt><span class="section"><a href="wicket-integration.html#wicket.wicket-cocoon-integration.sitemap">5.2.1. Mount a Cocoon sitemap</a></span></dt><dt><span class="section"><a href="wicket-integration.html#wicket.wicket-cocoon-integration.pipeline">5.2.2. Mount a Cocoon pipeline<
 /a></span></dt><dt><span class="section"><a href="wicket-integration.html#wicket.wicket-cocoon-integration.component">5.2.3. CocoonSAXPipeline Wicket component</a></span></dt></dl></dd><dt><span class="section"><a href="wicket-integration.html#wicket.cocoon-wicket-integration">5.3. Integrate Wicket into Cocoon</a></span></dt><dd><dl><dt><span class="section"><a href="wicket-integration.html#wicket.cocoon-wicket.reader">5.3.1. Wicket reader</a></span></dt></dl></dd></dl></dd></dl></div></div><div xmlns:fo="http://www.w3.org/1999/XSL/Format" class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left">&nbsp;</td><td width="20%" align="center">&nbsp;</td><td width="40%" align="right">&nbsp;<a accesskey="n" href="introduction.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">&nbsp;</td><td width="20%" align="center"><span style="color:white;font-size:85%;"><a href="http://cocoon.apache.org/3.0/" title="The Apache Coco
 on community">The Apache Cocoon community</a></span></td><td width="40%" align="right" valign="top">&nbsp;Chapter&nbsp;1.&nbsp;Introduction</td></tr></table></div></body></html>



Mime
View raw message