cocoon-cvs mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From reinh...@apache.org
Subject svn commit: r896957 [6/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
Modified: cocoon/site/site/3.0/reference/html/webapps.html
URL: http://svn.apache.org/viewvc/cocoon/site/site/3.0/reference/html/webapps.html?rev=896957&r1=896956&r2=896957&view=diff
==============================================================================
--- cocoon/site/site/3.0/reference/html/webapps.html (original)
+++ cocoon/site/site/3.0/reference/html/webapps.html Thu Jan  7 18:47:18 2010
@@ -1,3 +1,362 @@
 <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>TBW: REST controller, Rendering views using StringTemplate, Request-wide transactions (incl. Subrequests)</p></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;Authentic
 ation</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="T
 he Apache Cocoon community">The Apache Cocoon community</a></span></td><td width="40%" align="right" valign="top">&nbsp;</td></tr></table></div></body></html>
+   <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"><link rel="next" href="wicket-integration.html" title="Chapter&nbsp;5.&nbsp;Wicket Integration"></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 na
 me="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, inheritance</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 set
 up</h2></div></div></div><p>TBW: Logging, JNet, Configuration, Spring integration Deployment: Blocks 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="d0e769"></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="d0e777"></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><p>
+          The main pieces of the JAX-RS/Cocoon-integration are
+            </p><div class="itemizedlist"><ul type="disc"><li><p>the <code class="literal">CocoonJAXRSServlet</code> Servlet-Service, which is responsible for
+              the JAX-RS integration into the Cocoon Servlet-Service framework, and </p></li><li><p>the <code class="literal">URLResponseBuilder</code> class, which allows calling  resources
+              provided by other Servlet-Services (usually Cocoon pipelines exposed by sitemaps).
+              </p></li></ul></div><p>
+        </p></div><div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="webapps.rest.jaxrs.sample"></a>4.6.2.2.&nbsp;Cocoon and JAX-RS by example</h4></div></div></div><p>
+          Adding support for JAX-RS services to your Cocoon application requires following three steps: 
+            </p><div class="itemizedlist"><ul type="disc"><li><p>Add the <code class="literal">cocoon-rest</code> module as a dependency.</p></li><li><p>Add the <code class="literal">CocoonJAXRSServlet</code> Servlet-Service</p></li><li><p>Add at least one JAX-RS root resource</p></li></ul></div><p>
+        </p><div class="section" lang="en"><div class="titlepage"><div><div><h5 class="title"><a name="webapps.rest.jaxrs.sample.dependency"></a>4.6.2.2.1.&nbsp;Cocoon-Rest dependency</h5></div></div></div><p>
+            The first step is to add the <code class="literal">cocoon-rest</code> module to your Cocoon application:
+          </p><pre class="programlisting">    &lt;<span class="hl-tag">dependency</span>&gt;
+      &lt;<span class="hl-tag">groupId</span>&gt;org.apache.cocoon.rest&lt;<span class="hl-tag">/groupId</span>&gt;
+      &lt;<span class="hl-tag">artifactId</span>&gt;cocoon-rest&lt;<span class="hl-tag">/artifactId</span>&gt;
+    &lt;<span class="hl-tag">/dependency</span>&gt;</pre></div><div class="section" lang="en"><div class="titlepage"><div><div><h5 class="title"><a name="webapps.rest.jaxrs.sample.resource"></a>4.6.2.2.2.&nbsp;JAX-RS resource</h5></div></div></div><p>
+            Then at least one JAX-RS resource is required:
+          </p><div class="programlistingco"><pre class="programlisting">@Path(<span class="hl-string">"/sample"</span>)                                                                         <span class="co"><img src="images/callouts/1.png" alt="(1)"></span>
+<span class="hl-keyword">public</span> <span class="hl-keyword">class</span> SampleRestResource {                                                        <span class="co"><img src="images/callouts/2.png" alt="(2)"></span>
+
+    <span class="hl-keyword">private</span> Settings settings;
+
+    @GET                                                                                 <span class="co"><img src="images/callouts/3.png" alt="(3)"></span>
+    @Path(<span class="hl-string">"/parameter-passing/{id}"</span>)                                                     <span class="co"><img src="images/callouts/4.png" alt="(4)"></span>
+    <span class="hl-keyword">public</span> Response anotherService(
+        @PathParam(<span class="hl-string">"id"</span>) String id,                                                      <span class="co"><img src="images/callouts/5.png" alt="(5)"></span>
+        @QueryParam(<span class="hl-string">"req-param"</span>) String reqParam,                                        <span class="co"><img src="images/callouts/6.png" alt="(6)"></span>
+        @Context UriInfo uriInfo,                                                        <span class="co"><img src="images/callouts/7.png" alt="(7)"></span>
+        @Context Request request) {                                                      <span class="co"><img src="images/callouts/8.png" alt="(8)"></span>
+        
+        Map&lt;String, Object&gt; data = <span class="hl-keyword">new</span> HashMap&lt;String, Object&gt;();                        <span class="co"><img src="images/callouts/9.png" alt="(9)"></span>
+        data.put(<span class="hl-string">"name"</span>, <span class="hl-string">"Donald Duck"</span>);
+        data.put(<span class="hl-string">"id"</span>, id);
+        data.put(<span class="hl-string">"reqparam"</span>, reqParam);
+        data.put(<span class="hl-string">"runningMode"</span>, <span class="hl-keyword">this</span>.settings.getProperty(<span class="hl-string">"testProperty"</span>));
+
+        <span class="hl-keyword">return</span> URLResponseBuilder.newInstance(<span class="hl-string">"servlet:sample:/controller/screen"</span>, data) <span class="co"><img src="images/callouts/10.png" alt="(10)"></span>
+          .build();
+    }
+
+    <span class="hl-keyword">public</span> <span class="hl-keyword">void</span> setSettings(Settings settings) {
+        <span class="hl-keyword">this</span>.settings = settings;                                                        <span class="co"><img src="images/callouts/11.png" alt="(11)"></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>The <code class="literal">@javax.ws.rs.Path</code> annotation identifies the URI path 
+                that this resource class or class method will serve requests for. The path is
+                relative to the mount point of the servlet-service that references this resource.
+              </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>A JAX-RS root resource.</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">@javax.ws.rs.GET</code> annotations indicates that
+              this method responds to HTTP GET requests.</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>Again a <code class="literal">@Path</code> annotation, but this time at
+              method level. In this example requests for <code class="literal">sample/parameter-passing/NNN</code>
+              will be handled by the <code class="literal">anotherService()</code> method.</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 <code class="literal">@PathParam</code> annoation binds the URI template
+              value of <code class="literal">id</code> to the method parameter <code class="literal">id</code>.</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>The <code class="literal">@QueryParam</code> annotation binds the request parameter
+              <code class="literal">req-param</code> to the method parameter <code class="literal">reqParam</code>.
+              </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>By annotating the <code class="literal">URIInfo</code> method parameter with the 
+                <code class="literal">@Context</code> annotations, a current instance of <code class="literal">URIInfo</code>
+                is passed to the method.</p></td></tr><tr><td width="5%" valign="top" align="left"><img src="images/callouts/8.png" alt="8" border="0"></td><td valign="top" align="left"><p>By annotating the <code class="literal">Request</code> method parameter with the 
+                <code class="literal">@Context</code> annotations, a current instance of <code class="literal">Request</code>
+                is passed to the method.</p></td></tr><tr><td width="5%" valign="top" align="left"><img src="images/callouts/9.png" alt="9" border="0"></td><td valign="top" align="left"><p>A map of <code class="literal">String/Object</code> is collected.</p></td></tr><tr><td width="5%" valign="top" align="left"><img src="images/callouts/10.png" alt="10" border="0"></td><td valign="top" align="left"><p>The <code class="literal">URLResponseBuilder</code> sends the result of the
+                passed URL as response. It allows passing a map of <code class="literal">String/Object</code> 
+                which are available in the called resource (usually a pipeline).</p><p>In this case the <code class="literal">servlet:</code> protocol is used.
+                It allows accessing URLs (that usually expose pipelines) defined by other
+                Servlet-Services.</p></td></tr><tr><td width="5%" valign="top" align="left"><img src="images/callouts/11.png" alt="11" border="0"></td><td valign="top" align="left"><p>A setter method to allow injecting the <code class="literal">Setting</code> bean.</p></td></tr></table></div></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h5 class="title"><a name="webapps.rest.jaxrs.sample.spring"></a>4.6.2.2.3.&nbsp;JAX-RS resource as Spring bean</h5></div></div></div><p>This resource has to be configured as Spring bean:</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">xsi:schemaLocation</span>=<span class="hl-value">"http://www.springframework.org/schema/beans 
+    http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"</span>&gt;
+
+  &lt;<span class="hl-tag">bean</span> <span class="hl-attribute">id</span>=<span class="hl-value">"org.apache.cocoon.sample.rest.resource.one"</span>                                  <span class="co"><img src="images/callouts/1.png" alt="(1)"></span>
+    <span class="hl-attribute">class</span>=<span class="hl-value">"org.apache.cocoon.sample.jaxrs.SampleRestResource"</span>&gt;
+    &lt;<span class="hl-tag">property</span> <span class="hl-attribute">name</span>=<span class="hl-value">"settings"</span> 
+      <span class="hl-attribute">ref</span>=<span class="hl-value">"org.apache.cocoon.configuration.Settings"</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">SampleRestResource</code> is a usual Spring bean and in this example it gets
+              the <code class="literal">org.apache.cocoon.configuration.Settings</code> bean injected.</p></td></tr></table></div></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h5 class="title"><a name="webapps.rest.jaxrs.sample.servlet-service"></a>4.6.2.2.4.&nbsp;Servlet-Service integration</h5></div></div></div><p>Finally the Spring bean has to be exposed by the <code class="literal">CocoonJAXRSServlet</code>:</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&gt;
+  
+  &lt;!-- A servlet-service that exposes JAX-RS REST endpoints. --&gt;
+  &lt;bean id="</span><span class="hl-attribute">org.apache.cocoon.sample.rest.servlet"</span>                                       <span class="co"><img src="images/callouts/1.png" alt="(1)"></span>
+    <span class="hl-attribute">class</span>=<span class="hl-value">"org.apache.cocoon.rest.jaxrs.container.CocoonJAXRSServlet"</span>&gt;
+    &lt;<span class="hl-tag">servlet:context</span> <span class="hl-attribute">mount-path</span>=<span class="hl-value">"/jax-rs"</span>                                                <span class="co"><img src="images/callouts/2.png" alt="(2)"></span>
+      <span class="hl-attribute">context-path</span>=<span class="hl-value">"blockcontext:/cocoon-sample/"</span>&gt;
+      &lt;<span class="hl-tag">servlet:connections</span>&gt;                                                              <span class="co"><img src="images/callouts/3.png" alt="(3)"></span>
+        &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">property</span> <span class="hl-attribute">name</span>=<span class="hl-value">"restResourcesList"</span>&gt;                                                  <span class="co"><img src="images/callouts/4.png" alt="(4)"></span>
+      &lt;<span class="hl-tag">list</span>&gt;
+        &lt;<span class="hl-tag">ref</span> <span class="hl-attribute">bean</span>=<span class="hl-value">"org.apache.cocoon.sample.rest.resource.one"</span> /&gt;
+      &lt;<span class="hl-tag">/list</span>&gt;
+    &lt;<span class="hl-tag">/property</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>The mount path of this Servlet-Service is <code class="literal">/jax-rs</code>.</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>Connections to other Servlet-Services.</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>A list of JAX-RS resources, which also have to be Spring beans, is
+                exposed.</p><p>Alternativly a <code class="literal">&lt;map&gt;</code> of resources can be injected
+                by the <code class="literal">restResourceMap</code> property.</p></td></tr></table></div></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.profiling"></a>4.10.&nbsp;Profiling support</h2></div></div></div><p>
+      A cocoon request goes through many components; while performing a Cocoon request, servlets, sitemaps and pipeline 
+      components are being executed.  It is also quite common that Cocoon requests are cascaded which makes it sometimes 
+      difficult to understand what exactly was happening. Cocoon Profiling enables you to profile any request to your website.</p><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="d0e1040"></a>4.10.1.&nbsp;Module configuration</h3></div></div></div><p>
+        In order to use cocoon-profiling, you simply have to include the <code class="literal">cocoon-profiling jar</code> in your classpath. 
+        Cocoon-profiling uses Spring AOP, so no further configuration is needed.
+      </p></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="d0e1048"></a>4.10.2.&nbsp;Using Cocoon Profiling</h3></div></div></div><p>
+        Cocoon-profiling provides several generators for xml and graphical output, which is used by the Firebug plugin. 
+        However, you can directly access the data using
+        </p><div class="itemizedlist"><ul type="disc"><li><p>
+              <code class="literal">yourdomain.com/controller/profiling/{id}</code>  for the xml file (xml schema see 
+              <code class="literal">profilingSchema.xsd</code> in cocoon-profiling)
+            </p></li><li><p>
+              <code class="literal">yourdomain.com/controller/profiling/{id}.png</code> for the graphical representation (example see below)
+            </p></li></ul></div><p>
+        where {id} is the id of the request. This id (<code class="literal">X-Cocoon-Profiling-ID</code>) can be found in the header of the 
+        original request.
+      </p><p>
+        This is an example for the graphical representation:
+      </p><p>
+        </p><div class="mediaobject"><img src="graphics/profilingGraph.jpg" width=""></div><p>
+      </p><div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="d0e1083"></a>4.10.2.1.&nbsp;How can I enable/disable cocoon-profiling on the fly?</h4></div></div></div><p>
+          Cocoon-profiling is enabled per default. If you just want to use it, you can skip this section. 
+        </p><p>
+          If you want to start or stop profiling while the server is running, you can use the management bean provided by cocoon-profiling. 
+          Cocoon-monitoring automatically exposes this MBean; just make sure that cocoon-monitoring is in your classpath. You can then 
+          connect to the server process using jconsole and call the "start" and "stop" method of the org.apache.cocoon.profiling MBean.
+        </p><p>
+          Keep in mind that cocoon-profiling uses Spring AOP to intercept method calls, which cannot be enabled or disabled at runtime. 
+          Therefore, a disabled cocoon-profiling still affects the performance (at least a little bit). Only removing cocoon-profiling 
+          from the classpath and restarting the server guarantees maximum performance.
+        </p></div><div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="d0e1092"></a>4.10.2.2.&nbsp;I need cocoon-profiling to profile my custom cocoon component, how can I do that?</h4></div></div></div><p>
+          Generally, you don't have to change anything. Cocoon-profiling uses Spring AOP to profile all cocoon components and servlets 
+          as well as any subclass or cocoon interface implementation.
+        </p><p>
+          Advanced users might want to add their own Profiler class to cocoon-profiling if they have a specific component with 
+          specific parameters or other bits of data they want cocoon-profiling to collect.
+        </p></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="d0e1099"></a>4.10.3.&nbsp;Using Firebug with Cocoon-profiling</h3></div></div></div><p>
+        Getting the Firebug Plugin able to work is really easy. You'll need to install Firebug 1.4X from 
+        <code class="literal">http://getfirebug.com/releases/firebug/1.4X</code> and then install the Firebug .xpi from 
+        cocoon-profiling-firebug (opening it with Firefox should suffice). The generate the xpi from the sources, 
+        simply switch to the cocoon-profiling-firebug folder and type <code class="literal">mvn install</code>. This will 
+        automatically build a new xpi. After installing the plugins, you should have a little bug on the bottom 
+        right corner of your Firefox. Clicking will open it, then you can navigate to the net-panel (you might want 
+        to be sure its activated) and there open up a request (you might need to refresh). In the request, there 
+        should be a tab called "Cocoon 3 Profiling", if you click it, and the Profiling Service works, you should 
+        now see the generated profiling data.
+      </p><p>
+        The data itself is presented in two textboxes. The left one is the tree which resembles the .xml that the 
+        profiling-component generates, the right one displays the elements, properties, return-values and the profiler
+        of a given (= selected) row in the left tree. You can navigate through the left tree, and based on which row 
+        you currently have selected, the right textbox will display the names and values. To add some visual help, pictures 
+        are being displayed, based on which kind of element is displayed.
+      </p><p>
+        The underline is:
+      </p><p>
+        </p><div class="table"><a name="webapps.profiling.firebug.table"></a><p class="title"><b>Table&nbsp;4.1.&nbsp;Icons</b></p><div class="table-contents"><table summary="Icons" border="1"><colgroup><col><col><col></colgroup><tbody><tr><td>
+                  <div class="mediaobject"><img src="graphics/profiling_firebug_argument.jpg"><div class="caption">Argument</div></div>
+                </td><td>
+                  <div class="mediaobject"><img src="graphics/profiling_firebug_component.jpg"><div class="caption">Component</div></div>
+                </td><td>
+                  <div class="mediaobject"><img src="graphics/profiling_firebug_exception.jpg"><div class="caption">Exception</div></div>
+                </td></tr><tr><td>
+                  <div class="mediaobject"><img src="graphics/profiling_firebug_invocation.jpg"><div class="caption">Invocation</div></div>
+                </td><td>
+                  <div class="mediaobject"><img src="graphics/profiling_firebug_node.jpg"><div class="caption">Node</div></div>
+                </td><td>
+                  <div class="mediaobject"><img src="graphics/profiling_firebug_profiler.jpg"><div class="caption">Profiler</div></div>
+                </td></tr><tr><td>
+                  <div class="mediaobject"><img src="graphics/profiling_firebug_property.jpg"><div class="caption">Property</div></div>
+                </td><td>
+                  <div class="mediaobject"><img src="graphics/profiling_firebug_return.jpg"><div class="caption">Return-value</div></div>
+                </td><td>
+                  <div class="mediaobject"><img src="graphics/profiling_firebug_servlet.jpg"><div class="caption">Servlet</div></div>
+                </td></tr><tr><td>
+                  <div class="mediaobject"><img src="graphics/profiling_firebug_sitemap.jpg"><div class="caption">Sitemap</div></div>
+                </td><td class="auto-generated">&nbsp;</td><td class="auto-generated">&nbsp;</td></tr></tbody></table></div></div><p><br class="table-break">
+      </p><p>
+        You also have two options which can change what you'll be able to see in the Firebug Plugin. 
+        These are located on the net Tab Option Panel, which is a little triangle. The options are marked {c3p} 
+        and allow you to Show / Hide the Sitemap and to change if the invocations element of the tree is 
+        closed or opened. These changes will require a reload, 
+        either by reloading your browser, or by clicking the "Reload"-Button in the Profiling Panel.
+      </p><p>
+        The other button on the panel will open a new tab in your Firefox in which a graphical outline will 
+        be shown which lists your components and the execution time of each of these components. Be aware, 
+        though, that the first profiling cycle will present you a kind of wrong picture (it takes a lot longer), 
+        because of the java-intern class-loading and other administrative stuff. You'll need to reload the request, 
+        not the picture, to change this.
+      </p><div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="d0e1233"></a>4.10.3.1.&nbsp;Customizing your Firebug Plugin</h4></div></div></div><p>
+          To customize your Firebug Plugin, go to the plugin folder in your Firefox, select the Profiling plugin, 
+          then navigate to <code class="literal">chrome\skin\classic\cocoon3profiling.css</code>. In this css, you can change 
+          the heigth and width of the trees and of their columns. Simply navigate to the element you want to change, 
+          and change the value in there.
+        </p></div></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="webapps.monitoring"></a>4.11.&nbsp;Monitoring support</h2></div></div></div><p>
+      This module gives you the possibility of monitoring Cocoon 3 applications. It expose a simple API
+      via <code class="literal">Spring JMX MBeans</code> and it can be user via <code class="literal">jconsole</code>
+      or other <code class="literal">JMX</code> console.
+    </p><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="webapps.monitoring.configuration"></a>4.11.1.&nbsp;Module configuration</h3></div></div></div><p>
+        All module configurations are defined in <code class="literal">META-INF/cocoon/spring/cocoon-monitoring.xml.</code>
+        Each part of module can be enabled or disabled by commenting (or removing) appropriate
+        entry in configuration file, by default all parts are enabled.    
+      </p></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="webapps.monitoring.parts"></a>4.11.2.&nbsp;Available parts</h3></div></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="webapps.monitoring.logging"></a>4.11.2.1.&nbsp;Inspect logging settings and reconfigure them</h4></div></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h5 class="title"><a name="d0e1269"></a>4.11.2.1.1.&nbsp;Inspect all configured loggers</h5></div></div></div><p>
+            The operation <code class="code">getLoggers()</code> returns a list of all configured Log4j loggers in the 
+            application, it consists of pairs: <code class="literal">&lt;class or package name&gt;</code> (category)
+            =&gt; <code class="literal">&lt;logging level&gt;</code>
+          </p></div><div class="section" lang="en"><div class="titlepage"><div><div><h5 class="title"><a name="d0e1283"></a>4.11.2.1.2.&nbsp;Permanent change of a logging level</h5></div></div></div><p>
+            For doing permanent changes of logging level for particular class or package use the operation
+            <code class="code">setLoggingLevel(String category, String newLogLevel)</code>. Where 
+            <code class="literal">Category</code> is name of <code class="literal">class</code> or <code class="literal">
+            package</code> with you want to change logging level and <code class="literal">newLogLevel
+            </code> is one of logging level: <code class="literal">OFF</code>, <code class="literal">INFO</code>,
+            <code class="literal">WARN</code>, <code class="literal">ERROR</code>, <code class="literal">FATAL</code>,
+            <code class="literal">TRACE</code>, <code class="literal">DEBUG</code>, <code class="literal">ALL</code> (this parameter
+             isn't case sensitive, so you can also use lower case names).
+          </p></div><div class="section" lang="en"><div class="titlepage"><div><div><h5 class="title"><a name="d0e1327"></a>4.11.2.1.3.&nbsp;Temporal change of a logging level</h5></div></div></div><p>
+            For doing temporal changes of logging level for particular class or package use the operation
+            <code class="code">setLoggingTempoporalLevel(String category, String temporalLogLevel, String
+            timeOut)</code>. First two parameters are same as in <code class="code">setLoggingLevel()</code>,
+            last one determinate how long this logging level should be used (after that amount of
+            time logging level would be set back to old level). <code class="literal">timeOut</code> parameter
+            should match regular expression: <code class="literal">^[0-9.]+[dhm]?$</code>, for example if value
+            of <code class="literal">timeOut</code> is set for <code class="code">1,5h</code> that means that new logging level
+            would be active for one and half hour.
+          </p></div><div class="section" lang="en"><div class="titlepage"><div><div><h5 class="title"><a name="d0e1350"></a>4.11.2.1.4.&nbsp;Load a new configuration file</h5></div></div></div><p>
+            For loading a completely new configuration file use the operation <code class="code">loadNewConfigurationFile(String path)</code>.
+            This method is capable for both <code class="literal">XML</code> and <code class="literal">properties</code> configuration
+            files. There is only one parameter <code class="literal">path</code> that should contain absolute path to new
+            configuration file located locally on the server. Before performning any action that file is validated. First of
+            all the file extension (there are only two appropriate extensions: <code class="literal">*.xml</code>
+            and <code class="literal">*.properties</code>) is checked. The next validation step is different for both files, for 
+            <code class="literal">XML</code> files its content is validated against the Log4j <code class="literal">DTD</code> or
+            <code class="literal">schema</code> then all output log files are checked that they exist and they are writable.
+            <code class="literal">Properties</code> configuration files are validated that they contain at least one
+            appender and each output file directory exists and is writable. These validations are done to
+            prevent Log4j to get into an inconsistent state. 
+          </p></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="webapps.monitoring.servletservices"></a>4.11.2.2.&nbsp;Inspect available Servlet-Services</h4></div></div></div><p>
+          Every single Servlet-Service makes his own node in JXM MBean tree. Such node contains below above functions.
+        </p><div class="section" lang="en"><div class="titlepage"><div><div><h5 class="title"><a name="d0e1390"></a>4.11.2.2.1.&nbsp;Get path of Servlet-Services</h5></div></div></div><p>
+            Function <code class="code">getServletServiceMountPaths()</code> returns Servlet-Service mount path.
+          </p></div><div class="section" lang="en"><div class="titlepage"><div><div><h5 class="title"><a name="d0e1398"></a>4.11.2.2.2.&nbsp;Get all connections for Servlet-Service</h5></div></div></div><p>
+            Function <code class="code">getServletServiceConnections()</code> returns an array of <code class="code">String</code> contains
+            all connections names for given Servlet-Service. Every connection is represented by: <code class="literal">
+            &lt;short name&gt;</code> =&gt; <code class="literal">&lt;full qualified bean name&gt;</code>
+          </p></div><div class="section" lang="en"><div class="titlepage"><div><div><h5 class="title"><a name="d0e1415"></a>4.11.2.2.3.&nbsp;Get informations about Servlet-Service</h5></div></div></div><p>
+            Function <code class="code">getServletServiceInfo()</code> returns information about Servlet-Service, such as author,
+            version, and copyright.
+          </p></div><div class="section" lang="en"><div class="titlepage"><div><div><h5 class="title"><a name="d0e1423"></a>4.11.2.2.4.&nbsp;List Servlet-Service parameters</h5></div></div></div><p>
+            Function <code class="code">getServletServiceInitParameters()</code> list all init parameters provided for that
+            Servlet-Service.
+          </p></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="webapps.monitoring.cacheoverview"></a>4.11.2.3.&nbsp;Overview of cache entries</h4></div></div></div><p>
+          This module contains three smaller submodules:
+          </p><table class="simplelist" border="0" summary="Simple list"><tr><td><a href="webapps.html#webapps.monitoring.cacheoverview.cachemonitor" title="4.11.2.3.1.&nbsp;CacheMonitor">CacheMonitor</a></td></tr><tr><td><a href="webapps.html#webapps.monitoring.cacheoverview.cacheburstactions" title="4.11.2.3.2.&nbsp;CacheBurstActions">CacheBurstActions</a></td></tr><tr><td><a href="webapps.html#webapps.monitoring.cacheoverview.cacheentrysmonitor" title="4.11.2.3.3.&nbsp;CacheEntrysMonitor">CacheEntrysMonitor</a></td></tr></table><p>
+        </p><div class="section" lang="en"><div class="titlepage"><div><div><h5 class="title"><a name="webapps.monitoring.cacheoverview.cachemonitor"></a>4.11.2.3.1.&nbsp;CacheMonitor</h5></div></div></div><p>
+            This submodule exposes all configured caches on with basic operations on every cache.
+          </p><div class="section" lang="en"><div class="titlepage"><div><div><h6 class="title"><a name="d0e1452"></a>4.11.2.3.1.1.&nbsp;Clear cache</h6></div></div></div><p>
+              Operation <code class="literal">clear()</code> remove all cache entry's from this particular cache.
+            </p></div><div class="section" lang="en"><div class="titlepage"><div><div><h6 class="title"><a name="d0e1460"></a>4.11.2.3.1.2.&nbsp;List all cache key</h6></div></div></div><p>
+              Operation <code class="literal">listKey()</code> returns list of all <code class="literal">CacheKey</code>s that are stored in this particular cache.
+            </p></div><div class="section" lang="en"><div class="titlepage"><div><div><h6 class="title"><a name="d0e1471"></a>4.11.2.3.1.3.&nbsp;Removing cache entry</h6></div></div></div><p>
+              If you want remove single cache entry you should use operation <code class="literal">removeKey(String)</code>, where parameter is
+              <code class="literal">CacheKey</code> name taken from <code class="literal">listKey()</code> result. This operation returns <code class="literal">true</code>
+              if it was successes otherwise it return <code class="literal">false</code>.
+            </p></div><div class="section" lang="en"><div class="titlepage"><div><div><h6 class="title"><a name="d0e1491"></a>4.11.2.3.1.4.&nbsp;Checking size of cache</h6></div></div></div><p>
+              It is also possible to check size of particular cache using function <code class="literal">size</code>. It will return human readable
+              size of this cache.
+            </p></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h5 class="title"><a name="webapps.monitoring.cacheoverview.cacheburstactions"></a>4.11.2.3.2.&nbsp;CacheBurstActions</h5></div></div></div><p>
+            This module add set of operations that can be performed on all caches. You can find and remove all cache entry's which meet certain
+            requirements, specified in operation parameters.
+          </p><div class="section" lang="en"><div class="titlepage"><div><div><h6 class="title"><a name="d0e1504"></a>4.11.2.3.2.1.&nbsp;Find all cache entry's that size is greater then specified value</h6></div></div></div><p>
+              Operation <code class="literal">listAllGreatherThen(long)</code> finds all cache entry's in all configured cache's that size (in bytes)
+              is greather then value passed as a parameter.
+            </p></div><div class="section" lang="en"><div class="titlepage"><div><div><h6 class="title"><a name="d0e1512"></a>4.11.2.3.2.2.&nbsp;Find all cache entry's that size is smaller then specified value</h6></div></div></div><p>
+              Operation <code class="literal">listAllSmalledThen(long)</code> finds all cache entry's in all configured cache's that size (in bytes) is
+              smaller then value passed as a parameter.
+            </p></div><div class="section" lang="en"><div class="titlepage"><div><div><h6 class="title"><a name="d0e1520"></a>4.11.2.3.2.3.&nbsp;Find all cache entry's that are older then specified date</h6></div></div></div><p>
+              Operation <code class="literal">listAllOlderThen(String)</code> finds all cache entry's in all configured cache's that are older then
+              value specified in a parameter. Parameter value must match regular expression: <code class="literal">^\d+[smhd]$</code> where each
+              letter stands for:
+              </p><table class="simplelist" border="0" summary="Simple list"><tr><td>s - second</td></tr><tr><td>m - minutes</td></tr><tr><td>h - hours</td></tr><tr><td>d - days</td></tr></table><p>
+            </p></div><div class="section" lang="en"><div class="titlepage"><div><div><h6 class="title"><a name="d0e1541"></a>4.11.2.3.2.4.&nbsp;Find all cache entry's that are younger then specified date</h6></div></div></div><p>
+              Operation <code class="literal">listAllYoungerThen(String)</code> finds all cache entry's in all configured cache's that are younger
+              then value specified in a parameter. For parameter description see <code class="literal">listAllOlderThen(String)</code>.
+            </p></div><div class="section" lang="en"><div class="titlepage"><div><div><h6 class="title"><a name="d0e1552"></a>4.11.2.3.2.5.&nbsp;More flexible cache entry's search</h6></div></div></div><p>
+              If you want to get more flexibility searching you can use <code class="literal">list(long, long, String, String, Sting, Sting)</code>.
+              First two <code class="literal">long</code> parameters limits cache entry's size, their minimum and maximum size. Second two
+              <code class="literal">String</code> parameters limits cache entry minimum and maximum age (syntax is same as in
+              <code class="literal">listAllOlderThen(Sting)</code> and <code class="literal">listAllYoungerThen(String)</code> functions). Last two
+              <code class="literal">String</code> parameters are applicable only to <code class="literal">ExpiresCacheKey</code> instances and they limit
+              result entry's on minimum and maximum experience time of entry. Every result entry meets all limitations. For excluding one
+              (or more) limitation you must pas value -1 for <code class="literal">long</code> parameters and <code class="literal">null</code> or empty
+              <code class="literal">String</code> for rest parameters.
+            </p></div><div class="section" lang="en"><div class="titlepage"><div><div><h6 class="title"><a name="d0e1587"></a>4.11.2.3.2.6.&nbsp;Remove all cache entry's that size is greater then specified value</h6></div></div></div><p>
+              Operation <code class="literal">clearAllGreatherThen(long)</code> perform same search action as <code class="literal">listAllGratherThen(long)</code>
+              but it removes cache entry's that fulfilled requirements instead of listing them. It will return <code class="literal">true</code> if
+              every cache entry was successfully removed, after first failure of removing cache entry this operation will stop and return
+              <code class="literal">false</code>.
+            </p></div><div class="section" lang="en"><div class="titlepage"><div><div><h6 class="title"><a name="d0e1604"></a>4.11.2.3.2.7.&nbsp;Remove all cache entry's that size is smaller then specified value.</h6></div></div></div><p>
+              Operation <code class="literal">clearAllSmallerThen(long)</code> perform same search action as <code class="literal">listAllSmallerThen(long)</code>
+              but it removes cache entry's that fulfilled requirements instead of listing them. It will return <code class="literal">true</code> if
+              every cache entry was successfully removed, after first failure of removing cache entry this operation will stop and return
+              <code class="literal">false</code>.
+            </p></div><div class="section" lang="en"><div class="titlepage"><div><div><h6 class="title"><a name="d0e1621"></a>4.11.2.3.2.8.&nbsp;Remove all cache entry's that are older then specified value.</h6></div></div></div><p>
+              Operation <code class="literal">clearAllOlderThen(String)</code> perform same search action as <code class="literal">listAllOlderThen(String)</code>
+              but it remove cache etry's that fulfilled requirements instead of listing them, this operation also require same parameter schema
+              as in <code class="literal">listAllOlderThen(String)</code>. It will return <code class="literal">true</code> if every cache entry was successfully
+              removed, after first failure of removing cache entry this operation will stop and return
+              <code class="literal">false</code>.
+            </p></div><div class="section" lang="en"><div class="titlepage"><div><div><h6 class="title"><a name="d0e1641"></a>4.11.2.3.2.9.&nbsp;Remove all cache entry's that are younger then specified value.</h6></div></div></div><p>
+              Operation <code class="literal">clearAllYoungerThen(String)</code> perform same search action as <code class="literal">listAllYoungerThen(String)</code>
+              but it remove cache etry's that fulfilled requirements instead of listing them, this operation also require same parameter schema
+              as in <code class="literal">listAllYoungerThen(String)</code>. It will return <code class="literal">true</code> if every cache entry was successfully
+              removed, after first failure of removing cache entry this operation will stop and return
+              <code class="literal">false</code>.
+            </p></div><div class="section" lang="en"><div class="titlepage"><div><div><h6 class="title"><a name="d0e1661"></a>4.11.2.3.2.10.&nbsp;More flexible cache entry's removing</h6></div></div></div><p>
+              Operation <code class="literal">clear(long, long, String, String, String, String)</code> perform same search action and takes same parameters
+              as described above <code class="literal">list(long, long, String, String, String)</code> please see it if you are looking for detailed description.
+            </p></div><div class="section" lang="en"><div class="titlepage"><div><div><h6 class="title"><a name="d0e1672"></a>4.11.2.3.2.11.&nbsp;Extending BurstCacheAction module</h6></div></div></div><p>
+              You can add your own burst actions. It is very simple, just obtain instance of <code class="literal">org.apache.cocoon.monitoring.cache.CacheBurstActions</code>
+              from the container and you can perform any action on cache entry's using <code class="literal">performActionOnCaches(long, long, String, String,
+              String, String, CacheAction)</code> method. Meaning of each parameter in this method is same as in <code class="literal">list(long, long, String,
+              String, String, String)</code> and <code class="literal">clear(long, long, String, String, String, String)</code> methods, but there is one
+              additional parameter, it is implementation of <code class="literal">CacheAction</code> interface. This interface has only one method
+              <code class="literal">performAction(Cache, CacheKey)</code> and it will be executed on every cache entry that match passed parameters.
+            </p></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h5 class="title"><a name="webapps.monitoring.cacheoverview.cacheentrysmonitor"></a>4.11.2.3.3.&nbsp;CacheEntrysMonitor</h5></div></div></div><p>
+            This module enables overview of cache entry's that are connected with specified pipeline. This module will only publish cache entry's for
+            those pipeline's that had <code class="literal">jmx-group-id</code> parameter set for unique value/name. This module also require additional refresh
+            action, it can be performed by user or it can be executed in some period of time eg every one minute. Behavior of refresh action can be
+            configured by <code class="literal">CacheEntrysMonitorInitializer</code> constructor parameter or on JMX.
+          </p><div class="section" lang="en"><div class="titlepage"><div><div><h6 class="title"><a name="d0e1706"></a>4.11.2.3.3.1.&nbsp;Configuring refresh action</h6></div></div></div><p>
+              <code class="literal">AutoRefresh</code> action can be enabled and disabled during runtime. This action will register new <code class="literal">MBean</code>s
+              that are connected with new cache entry's and unregister old <code class="literal">MBean</code>s that was connected with expired or removed
+              cache entry's.
+            </p><div class="section" lang="en"><div class="titlepage"><div><div><h6 class="title"><a name="d0e1720"></a>4.11.2.3.3.1.1.&nbsp;Enable <code class="literal">AutoRefresh</code> action</h6></div></div></div><p>
+                For enable <code class="literal">AutoRefresh</code> action call operation <code class="literal">enableAutoRefresh(long)</code> where <code class="literal">long</code>
+                parameter is period time (in millisecond) between each refresh. This operation will stop previously configured <code class="literal">AutoRefresh</code>
+                action and run new with new time period.
+              </p></div><div class="section" lang="en"><div class="titlepage"><div><div><h6 class="title"><a name="d0e1740"></a>4.11.2.3.3.1.2.&nbsp;Disable <code class="literal">AutoRefresh</code> action</h6></div></div></div><p>
+                Operation <code class="literal">disableAutoRefresh()</code> will stops actual running <code class="literal">AutoRefresh</code> action.
+              </p></div><div class="section" lang="en"><div class="titlepage"><div><div><h6 class="title"><a name="d0e1754"></a>4.11.2.3.3.1.3.&nbsp;Manually perform refresh action</h6></div></div></div><p>
+                Operation <code class="literal">performRefreshAction()</code> will immediately refre's published cache entry's.
+              </p></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h6 class="title"><a name="d0e1762"></a>4.11.2.3.3.2.&nbsp;Cache entry's operations</h6></div></div></div><p>
+              On each published cache entry you can perform that set of actions:
+            </p><div class="section" lang="en"><div class="titlepage"><div><div><h6 class="title"><a name="d0e1767"></a>4.11.2.3.3.2.1.&nbsp;Obtain <code class="literal">CacheKey</code> for that entry</h6></div></div></div><p>
+                Operation <code class="literal">getCacheKey()</code> will return <code class="literal">CacheKey</code> connected with that entry.
+              </p></div><div class="section" lang="en"><div class="titlepage"><div><div><h6 class="title"><a name="d0e1781"></a>4.11.2.3.3.2.2.&nbsp;Obtain cache value</h6></div></div></div><p>
+                Operation <code class="literal">getCacheValue()</code> will return value of this cache entry.
+              </p></div><div class="section" lang="en"><div class="titlepage"><div><div><h6 class="title"><a name="d0e1789"></a>4.11.2.3.3.2.3.&nbsp;Set cache value</h6></div></div></div><p>
+                Operation <code class="literal">setCacheValue(String)</code> will set new value of this cache entry.
+              </p></div><div class="section" lang="en"><div class="titlepage"><div><div><h6 class="title"><a name="d0e1797"></a>4.11.2.3.3.2.4.&nbsp;Obtain size of entry</h6></div></div></div><p>
+                Operation <code class="literal">getSize()</code> will return human readable size of current entry.
+              </p></div></div></div></div></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="webapps.tutorial"></a>4.12.&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;<a accesskey="n" href="wicket-integration.html">Next</a></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 community">The Apache Cocoon community</a></span></td><td width="40%" align="right" valign="top">&nbsp;Chapter&nbsp;5.&nbsp;W
 icket Integration</td></tr></table></div></body></html>

Added: cocoon/site/site/3.0/reference/html/wicket-integration.html
URL: http://svn.apache.org/viewvc/cocoon/site/site/3.0/reference/html/wicket-integration.html?rev=896957&view=auto
==============================================================================
--- cocoon/site/site/3.0/reference/html/wicket-integration.html (added)
+++ cocoon/site/site/3.0/reference/html/wicket-integration.html Thu Jan  7 18:47:18 2010
@@ -0,0 +1,173 @@
+<html><head>
+      <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+   <title>Chapter&nbsp;5.&nbsp;Wicket Integration</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="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="wicket-integration"></a>Chapter&nbsp;5.&nbsp;Wicket Integration</h2></div></div></
 div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="wicket.introduction"></a>5.1.&nbsp;Introduction</h2></div></div></div><p>
+      Apache Wicket has become on of the most popular web frameworks of these days.
+      Especially developers with a strong Java background benefit from its Java-centric approach because all
+      object-oriented features can be applied. This results in highly reusable code.
+    </p><p>
+      On the other side Cocoon implementing the pipe/filter pattern has its merits in the 
+      field of generating resources in different output formats. 
+    </p><p>
+      The Cocoon-Wicket integration module bridges between those two web application frameworks
+      in order to use the strenghts of both. This integration supports the integration of
+      Cocoon into Wicket as well as the integration of Wicket into Cocoon.
+    </p><p><span class="emphasis"><em>Note:</em></span> This is <span class="emphasis"><em>not</em></span> an introduction into Apache Wicket. This documentation
+      explains to the experienced Wicket user what needs to be done to integrate Cocoon 3 into a Wicket application.
+    </p></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="wicket.wicket-cocoon-integration"></a>5.2.&nbsp;Integrate Cocoon into Wicket</h2></div></div></div><p>
+      The integration of Cocoon into Wicket is available in several ways:  
+      </p><div class="itemizedlist"><ul type="disc"><li><p>A <span class="emphasis"><em>Cocoon sitemap</em></span> can be mounted as 
+          <a xmlns:xlink="http://www.w3.org/1999/xlink" href="http://wicket.apache.org/docs/1.4/org/apache/wicket/request/target/coding/IRequestTargetUrlCodingStrategy.html" target="_top"><code class="literal">IRequestTargetUrlCodingStrategy</code></a></p></li><li><p>A single <span class="emphasis"><em>Cocoon pipeline</em></span> can be mounted as <a xmlns:xlink="http://www.w3.org/1999/xlink" href="http://wicket.apache.org/docs/1.4/org/apache/wicket/request/target/coding/IRequestTargetUrlCodingStrategy.html" target="_top"><code class="literal">IRequestTargetUrlCodingStrategy</code></a> (not implemented yet)</p></li><li><p>A <span class="emphasis"><em>CocoonSAXPipeline Wicket component</em></span> can be added to a 
+          <a xmlns:xlink="http://www.w3.org/1999/xlink" href="http://wicket.apache.org/docs/1.4/org/apache/wicket/markup/html/WebPage.html" target="_top"><code class="literal">WebPage</code></a></p></li></ul></div><p>      
+    </p><p>
+      Whatever approach is chosen, the first step is adding <code class="literal">cocoon-wicket</code> and all
+      its transitive dependencies to your project's classpath:
+    </p><pre class="programlisting">&lt;<span class="hl-tag">dependency</span>&gt;
+  &lt;<span class="hl-tag">groupId</span>&gt;org.apache.cocoon.wicket&lt;<span class="hl-tag">/groupId</span>&gt;
+  &lt;<span class="hl-tag">artifactId</span>&gt;cocoon-wicket&lt;<span class="hl-tag">/artifactId</span>&gt;
+  &lt;<span class="hl-tag">version</span>&gt;3.0.0-alpha-2&lt;<span class="hl-tag">/version</span>&gt;
+&lt;<span class="hl-tag">/dependency</span>&gt;</pre><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="wicket.wicket-cocoon-integration.sitemap"></a>5.2.1.&nbsp;Mount a Cocoon sitemap</h3></div></div></div><p>
+        Mounting in the context of Wicket means a class implementing <a xmlns:xlink="http://www.w3.org/1999/xlink" href="http://wicket.apache.org/docs/1.4/org/apache/wicket/request/target/coding/IRequestTargetUrlCodingStrategy.html" target="_top"><code class="literal">IRequestTargetUrlCodingStrategy</code></a>
+        is added to a Wicket web application. This interface is implemented by <code class="literal">CocoonSitemap</code>:          
+      </p><div class="programlistingco"><pre class="programlisting"><span class="hl-keyword">import</span> org.apache.cocoon.wicket.target.CocoonSitemap;
+<span class="hl-keyword">import</span> org.apache.wicket.protocol.http.WebApplication;
+
+<span class="hl-keyword">public</span> <span class="hl-keyword">class</span> SomeWebApplication <span class="hl-keyword">extends</span> WebApplication {
+
+    @Override
+    <span class="hl-keyword">protected</span> <span class="hl-keyword">void</span> init() {
+        ...
+        <span class="hl-keyword">this</span>.mount(<span class="hl-keyword">new</span> CocoonSitemap(<span class="hl-string">"/sitemap"</span>, <span class="hl-string">"/sitemap.xmap.xml"</span>));                  <span class="co"><img src="images/callouts/1.png" alt="(1)"></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>
+             The first parameter is the mount path which is a part of the request URI that should be
+             handled by <code class="literal">CocoonSitemap</code>. The second parameter is the location of
+             the sitemap relativ to the servlet context.  
+           </p></td></tr></table></div></div><p>
+       Additionally you have to make sure that all Spring bean definitions provided by the Cocoon modules are
+       loaded into the web application's Spring application context. Cocoon's own bean definitions are located in
+       <code class="literal">META-INF/cocoon/spring/*.xml</code>.
+     </p><p>
+       The simplest solution for this task is referring to the Cocoon Spring Configurator in your main Spring application context, 
+       which is usually located in <code class="literal">[servlet-context-base-directory]/WEB-INF/applicationContext.xml</code>. It will
+       automatically load all bean definitions located in <code class="literal">META-INF/cocoon/spring/*.xml</code> of all libraries
+       on the classpath.
+       The <a xmlns:xlink="http://www.w3.org/1999/xlink" href="http://cocoon.apache.org/subprojects/configuration/1.0/spring-configurator/2.1/1303_1_1.html" target="_top">
+       Cocoon Spring Configurator documentation</a> contains further details.
+     </p><p>
+       Note that the Spring Configurator is one of the transitive dependencies of <code class="literal">cocoon-wicket</code>.
+     </p><p>
+       That's it! Everything else is the same as using Cocoon 3 outside of Wicket except that the
+       <code class="literal">servlet:/</code> protocol won't work in this environment.
+     </p></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="wicket.wicket-cocoon-integration.pipeline"></a>5.2.2.&nbsp;Mount a Cocoon pipeline</h3></div></div></div><p>
+        <span class="emphasis"><em>NOTE: This hasn't been implemented yet!</em></span>
+      </p><p>
+        Mounting a Cocoon pipeline follows the same idea as mounting a whole sitemap. However, it's only a single pipeline
+        that is added to Wicket's URI path and that this can be done without having to write any XML.
+      </p><p>
+        All that needs to be done is subclassing from <code class="literal">org.apache.cocoon.wicket.AbstractCocoonPipeline</code>
+        and implementing its <code class="literal">addComponents</code> method:
+      </p><div class="programlistingco"><pre class="programlisting"><span class="hl-keyword">import</span> com.mycompany.MyCocoonPipeline;
+<span class="hl-keyword">import</span> org.apache.wicket.protocol.http.WebApplication;
+
+<span class="hl-keyword">public</span> <span class="hl-keyword">class</span> SomeWebApplication <span class="hl-keyword">extends</span> WebApplication 
+
+    @Override
+    <span class="hl-keyword">protected</span> <span class="hl-keyword">void</span> init() {
+        ...
+        <span class="hl-keyword">this</span>.mount(<span class="hl-keyword">new</span> MyCocoonPipeline(<span class="hl-string">"/my-pipeline"</span>));                                <span class="co"><img src="images/callouts/1.png" alt="(1)"></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>
+             The only parameter is the path where the pipeline should be be mounted by Wicket.  
+           </p></td></tr></table></div></div><p>
+        In <code class="literal">MyCocoonPipeline</code> all that needs to be done is subclassing from 
+        <code class="literal">org.apache.cocoon.wicket.AbstractCocoonPipeline</code> and implementing its abstract method 
+        <code class="literal">addComponents</code>:
+      </p><div class="programlistingco"><pre class="programlisting"><span class="hl-keyword">package</span> com.mycompany;
+<span class="hl-keyword">import</span> org.apache.cocoon.wicket.AbstractCocoonPipeline;
+<span class="hl-keyword">import</span> org.apache.wicket.protocol.http.WebApplication;
+
+<span class="hl-keyword">public</span> <span class="hl-keyword">class</span> MyCocoonPipeline <span class="hl-keyword">extends</span> 
+    org.apache.cocoon.wicket.AbstractCocoonPipeline&lt;SAXPipelineComponent&gt;
+
+    @Override
+    <span class="hl-keyword">protected</span> <span class="hl-keyword">void</span> addComponents() {                                                     <span class="co"><img src="images/callouts/1.png" alt="(1)"></span>
+        <span class="hl-keyword">this</span>.addComponent(<span class="hl-keyword">new</span> FileGenerator(<span class="hl-keyword">this</span>.getClass().getResource(<span class="hl-string">"test.xml"</span>)));
+        <span class="hl-keyword">this</span>.addComponent(<span class="hl-keyword">new</span> XSLTTransformer(<span class="hl-keyword">this</span>.getClass().getResource(<span class="hl-string">"test.xsl"</span>)));        
+        <span class="hl-keyword">this</span>.addComponent(<span class="hl-keyword">new</span> XMLSerializer());        
+    }
+}</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>
+             Add all pipeline components that are required.  
+           </p></td></tr></table></div></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="wicket.wicket-cocoon-integration.component"></a>5.2.3.&nbsp;CocoonSAXPipeline Wicket component</h3></div></div></div><p>
+        The third alternative of using Cocoon in Wicket is adding a Cocoon pipeline as 
+        <a xmlns:xlink="http://www.w3.org/1999/xlink" href="http://wicket.apache.org/docs/1.4/org/apache/wicket/markup/html/WebComponent.html" target="_top"><code class="literal">WebComponent</code></a>.
+        This is as simple as instantiating <code class="literal">CocoonSAXPipeline</code> and adding
+        all generators and transformers that are required: 
+      </p><div class="programlistingco"><pre class="programlisting"><span class="hl-keyword">import</span> org.apache.cocoon.pipeline.NonCachingPipeline;
+<span class="hl-keyword">import</span> org.apache.cocoon.sax.SAXPipelineComponent;
+<span class="hl-keyword">import</span> org.apache.cocoon.sax.component.StringGenerator;
+<span class="hl-keyword">import</span> org.apache.cocoon.sax.component.XSLTTransformer;
+<span class="hl-keyword">import</span> org.apache.cocoon.wicket.CocoonSAXPipeline;
+<span class="hl-keyword">import</span> org.apache.wicket.markup.html.WebPage;
+      
+    <span class="hl-keyword">public</span> <span class="hl-keyword">class</span> Homepage <span class="hl-keyword">extends</span> WebPage {
+
+    <span class="hl-keyword">public</span> Homepage() {
+        CocoonSAXPipeline pipeline = <span class="hl-keyword">new</span> CocoonSAXPipeline(<span class="hl-string">"cocoon-pipeline-component"</span>,  <span class="co"><img src="images/callouts/1.png" alt="(1)"></span>
+                <span class="hl-keyword">new</span> NonCachingPipeline&lt;SAXPipelineComponent&gt;());
+        pipeline.addComponent(<span class="hl-keyword">new</span> StringGenerator(<span class="hl-string">"&lt;b&gt;hello, Cocoon!&lt;/b&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">"transform.xslt"</span>)));
+        <span class="hl-keyword">this</span>.add(pipeline);
+    }
+}
+</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>
+             Instantiate the 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>
+             Adding SAX pipeline components
+           </p></td></tr></table></div></div><p>
+       The pipeline's result is added to the HTML produced by this page. This is the reason
+       why only generators and transformers can be added to this component because the
+       pipeline is always serialized as XHTML. An XHTMLSerializer is added implicitly to
+       each pipeline.
+     </p></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="wicket.cocoon-wicket-integration"></a>5.3.&nbsp;Integrate Wicket into Cocoon</h2></div></div></div><p>
+      <span class="emphasis"><em>Note:</em></span> The integration of Wicket into Cocoon os mostly a proof of concept. 
+      It is experimental and has neither been optimized nor tested yet.
+    </p><p>
+      The integration of Wicket into Cocoon means that the output of Wicket is added to the content stream of a pipeline.
+      The currently available solution is a reader but alternatively a generator or a transformer would offer an even more
+      alternatives. 
+    </p><p>
+      As pointed out for the Wicket-Cocoon integration, the first step in every case is adding <code class="literal">cocoon-wicket</code> and all
+      its transitive dependencies to your project's classpath:
+    </p><pre class="programlisting">&lt;<span class="hl-tag">dependency</span>&gt;
+  &lt;<span class="hl-tag">groupId</span>&gt;org.apache.cocoon.wicket&lt;<span class="hl-tag">/groupId</span>&gt;
+  &lt;<span class="hl-tag">artifactId</span>&gt;cocoon-wicket&lt;<span class="hl-tag">/artifactId</span>&gt;
+  &lt;<span class="hl-tag">version</span>&gt;3.0.0-alpha-2&lt;<span class="hl-tag">/version</span>&gt;
+&lt;<span class="hl-tag">/dependency</span>&gt;</pre><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="wicket.cocoon-wicket.reader"></a>5.3.1.&nbsp;Wicket reader</h3></div></div></div><p>
+        By using the Wicket reader a servlet request is referred to a Wicket web application. The current implementation
+        expects exactly one Wicket web application being available as Spring bean:
+      </p><pre class="programlisting">&lt;<span class="hl-tag">beans</span>&gt;
+  &lt;<span class="hl-tag">bean</span> <span class="hl-attribute">id</span>=<span class="hl-value">"wicketWebapp"</span> 
+    <span class="hl-attribute">class</span>=<span class="hl-value">"com.mycompany.MyWicketWebapp"</span>/&gt;
+&lt;<span class="hl-tag">/beans</span>&gt;</pre><p>
+        By adding the bean definition file as resource into <code class="literal">META-INF/cocoon/spring</code> the 
+        Wicket web application bean will be loaded automatically.
+      </p><p>
+        Then the Wicket reader has be to used in the sitemap:
+      </p><div class="programlistingco"><pre class="programlisting">&lt;<span class="hl-tag">map:sitemap</span>&gt;
+  &lt;<span class="hl-tag">map:pipelines</span>&gt;    
+    &lt;<span class="hl-tag">map:pipeline</span> <span class="hl-attribute">type</span>=<span class="hl-value">"noncaching"</span>&gt;
+      &lt;<span class="hl-tag">map:match</span> <span class="hl-attribute">wildcard</span>=<span class="hl-value">"my-wicket-app/**"</span>&gt;
+        &lt;<span class="hl-tag">map:read</span> <span class="hl-attribute">type</span>=<span class="hl-value">"wicket"</span> <span class="hl-attribute">base-path</span>=<span class="hl-value">"/my-wicket-app"</span> /&gt;                            <span class="co"><img src="images/callouts/1.png" alt="(1)"></span>
+      &lt;<span class="hl-tag">/map:match</span>&gt;                                                                       <span class="co"><img src="images/callouts/2.png" alt="(2)"></span>
+    &lt;<span class="hl-tag">/map:pipeline</span>&gt;
+  &lt;<span class="hl-tag">/map:pipelines</span>&gt;
+&lt;<span class="hl-tag">/map:sitemap</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>
+             Use a <code class="literal">**</code> wildcard to match all requests that start with
+             <code class="literal">my-wicket-app</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 name of the reader is <code class="literal">wicket</code>. It's also required
+             to define the base path so that Wicket can calclulate realtive URLs correctly.
+           </p></td></tr></table></div></div></div></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="webapps.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;4.&nbsp;Web applications&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;</td></tr></table></div></body></html>

Propchange: cocoon/site/site/3.0/reference/html/wicket-integration.html
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: cocoon/site/site/3.0/reference/html/wicket-integration.html
------------------------------------------------------------------------------
    svn:mime-type = text/html

Modified: cocoon/site/site/3.0/reference/index.html
URL: http://svn.apache.org/viewvc/cocoon/site/site/3.0/reference/index.html?rev=896957&r1=896956&r2=896957&view=diff
==============================================================================
--- cocoon/site/site/3.0/reference/index.html (original)
+++ cocoon/site/site/3.0/reference/index.html Thu Jan  7 18:47:18 2010
@@ -97,6 +97,10 @@
         </li>
                   
     <li >
+              <strong>Userguide</strong>
+        </li>
+                  
+    <li >
               <a href="../features.html">Features</a>
         </li>
               </ul>
@@ -114,6 +118,10 @@
         </li>
                   
     <li >
+              <a href="../contributions.html">Contributions</a>
+        </li>
+                  
+    <li >
               <a href="../mail-lists.html">Mailing lists</a>
         </li>
                   
@@ -122,6 +130,10 @@
         </li>
                   
     <li >
+              <a href="../source-repository.html">Source Repository</a>
+        </li>
+                  
+    <li >
               <a href="../apidocs/index.html">API</a>
         </li>
                   
@@ -143,7 +155,7 @@
     <!-- end of content -->
     <div id="footer">
       <p>&#169;  
-          2008-2009
+          2008-2010
     
           The Apache Software Foundation
       </p>

Modified: cocoon/site/site/3.0/reference/pdf/cocoon3-reference.pdf
URL: http://svn.apache.org/viewvc/cocoon/site/site/3.0/reference/pdf/cocoon3-reference.pdf?rev=896957&r1=896956&r2=896957&view=diff
==============================================================================
Binary files - no diff available.

Modified: cocoon/site/site/3.0/roadmap.html
URL: http://svn.apache.org/viewvc/cocoon/site/site/3.0/roadmap.html?rev=896957&r1=896956&r2=896957&view=diff
==============================================================================
--- cocoon/site/site/3.0/roadmap.html (original)
+++ cocoon/site/site/3.0/roadmap.html Thu Jan  7 18:47:18 2010
@@ -97,6 +97,10 @@
         </li>
                   
     <li >
+              <a href="reference/index.html">Userguide</a>
+        </li>
+                  
+    <li >
               <a href="features.html">Features</a>
         </li>
               </ul>
@@ -114,6 +118,10 @@
         </li>
                   
     <li >
+              <a href="contributions.html">Contributions</a>
+        </li>
+                  
+    <li >
               <a href="mail-lists.html">Mailing lists</a>
         </li>
                   
@@ -140,14 +148,14 @@
     </li>
       </ul>
        <div class="main">
-         <div class="section"><h2>Cocoon 3 Roadmap</h2><p>If you are interested in developing and improving Cocoon, any participation is highly appreciated. The tasks listed here are only suggestions. If you have other ideas, please join us on our <a href="mail-lists.html"> developers mailing list</a>). </p><div class="section"><h3>Unscheduled simple features</h3><p>These tasks are a good starting point for everybody who wants to contribute to Cocoon 3.</p><ul><li>Improved error handling (review exception handling in general) and error reporting (cocoon-sitemap)</li><li>Improved error handling in XSLT transformer (cocoon-pipeline)</li><li>EHCache integration for caching pipelines (cocoon-pipeline)</li><li>Support custom matchers (<tt>&lt;map:match type=&quot;my-custom-matcher&quot;/&gt;</tt>)</li><li>Support the XInclude standard (cocoon-pipeline)</li><li>Enable file uploads (cocoon-servlet)</li><li>Support annotation-based REST controller URL mapping similar to JSR311 (coco
 on-rest)</li></ul></div><div class="section"><h3>Advanced unscheduled features</h3><ul><li>In the case of a conditional GET a pipeline doesn't need to be executed in every case. It would be enough to get the Last-Modified information first and decide then if a pipeline execution is necessary or not. The sitemap API has to be refactored for that purpose. (cocoon-sitemap/cocoon-servlet) </li><li>Improve caching when the servlet protocol is used (cocoon-servlet/cocoon-sitemap)</li><li>Cleanup pipeline configuration and object model:</li><li>Using SAX buffers in servlet protocol (cocoon-servlet, cocoon-servlet-service-fw-impl)</li><li>Review package structure for OSGi (all)</li><li>Support OSGi environments at service level (all) </li><li>Provide XML catalog support: find a way to make the entity resolver of the SAX parser configurable in the case of using pipeline components directly (cocoon-pipeline) as well as when they are used together with Spring (cocoon-sitemap) </li><li>
 STaX-based pipeline components for XML processing (file generator, XSLT transformer, XML serializer, abstract XML transformer for custom STaX-based transformers) (cocoon-stax)</li><li>Collect profiling information when a pipeline is being executed (cocoon-sitemap/cocoon-servlet)</li><li>Adapter to use Cocoon 2.2 sitemap components from within Cocoon 3 OR migrate some more components (e.g. FOP serializer etc.) (cocoon-pipeline)</li><li>Content-based routing in pipelines (cocoon-pipeline)</li><li>Enable nested pipelines (cocoon-pipeline)</li><li>Provide adapters that enable the mix of different component types in the same pipeline (cocoon-pipeline)</li><li>A stateless forms framework optimized for RESTful web applications. (cocoon-rest) (reinhard/steven) </li></ul></div></div>
+         <div class="section"><h2>Cocoon 3 Roadmap</h2><p>If you are interested in developing and improving Cocoon, any participation is highly appreciated. The tasks listed here are only suggestions. If you have other ideas, please join us on our <a href="mail-lists.html"> developers mailing list</a>). </p><div class="section"><h3>Unscheduled simple features</h3><p>These tasks are a good starting point for everybody who wants to contribute to Cocoon 3.</p><ul><li>[XSLT] Improved error handling in XSLT transformer. Show detailed information provided by the XSLT engine where an error occurs. (cocoon-pipeline)</li><li>[XSLT] Make the TraxTransformer a CachingPipelineComponent. (cocoon-pipeline)</li><li>[XSLT] Use the Cocoon 2.2 org.apache.cocoon.components.xslt.XSLTProcessorImpl (cocoon-pipeline)</li><li>Support custom matchers (<tt>&lt;map:match type=&quot;my-custom-matcher&quot;/&gt;</tt>)</li><li>Enable file uploads (cocoon-servlet)</li></ul></div><div class="section"><h3>U
 nscheduled advanced features</h3><ul><li>Improve caching when the servlet protocol is used (cocoon-servlet/cocoon-sitemap)</li><li>Using SAX buffers in servlet protocol (cocoon-servlet, cocoon-servlet-service-fw-impl)</li><li>Review package structure for OSGi (all)</li><li>Support OSGi environments at service level (all) </li><li>Provide XML catalog support: find a way to make the entity resolver of the SAX parser configurable in the case of using pipeline components directly (cocoon-pipeline) as well as when they are used together with Spring (cocoon-sitemap) </li><li>EHCache as caching provider for pipelines (cocoon-pipeline)</li><li>Find a general mechanism to provide global pipeline settings (see entity resolver and XML catalog support) (cocoon-pipeline)</li><li>Merge all collector components (MimeTypeCollector, StatusCodeCollector, LastModifiedCollector) into one in order to avoid those many around advices (one is enough). (cocoon-servlet). </li><li>Adapter to use Cocoo
 n 2.2 sitemap components from within Cocoon 3 OR migrate some more components (cocoon-pipeline)</li><li>Provide adapters that enable the mix of different component types in the same pipeline (cocoon-pipeline)</li><li>If an exception is thrown, show the sitemap execution path. See Cocoon 2.2 for this feature (cocoon-sitemap) </li><li>Content-based routing in pipelines (cocoon-pipeline)</li><li>Enable nested pipelines (cocoon-pipeline) </li><li>Define a sitemap directly in a Spring bean declaration where a Cocoon sitemap servlet-service is defined.</li><li>Provide an Ant task that allows to execute a Cocoon pipeline.</li></ul></div></div>
        </div>
     </div>
 
     <!-- end of content -->
     <div id="footer">
       <p>&#169;  
-          2008-2009
+          2008-2010
     
           The Apache Software Foundation
       </p>

Modified: cocoon/site/site/3.0/source-repository.html
URL: http://svn.apache.org/viewvc/cocoon/site/site/3.0/source-repository.html?rev=896957&r1=896956&r2=896957&view=diff
==============================================================================
--- cocoon/site/site/3.0/source-repository.html (original)
+++ cocoon/site/site/3.0/source-repository.html Thu Jan  7 18:47:18 2010
@@ -97,6 +97,10 @@
         </li>
                   
     <li >
+              <a href="reference/index.html">Userguide</a>
+        </li>
+                  
+    <li >
               <a href="features.html">Features</a>
         </li>
               </ul>
@@ -114,6 +118,10 @@
         </li>
                   
     <li >
+              <a href="contributions.html">Contributions</a>
+        </li>
+                  
+    <li >
               <a href="mail-lists.html">Mailing lists</a>
         </li>
                   
@@ -147,7 +155,7 @@
     <!-- end of content -->
     <div id="footer">
       <p>&#169;  
-          2008-2009
+          2008-2010
     
           The Apache Software Foundation
       </p>

Modified: cocoon/site/site/3.0/student-project-ideas.html
URL: http://svn.apache.org/viewvc/cocoon/site/site/3.0/student-project-ideas.html?rev=896957&r1=896956&r2=896957&view=diff
==============================================================================
--- cocoon/site/site/3.0/student-project-ideas.html (original)
+++ cocoon/site/site/3.0/student-project-ideas.html Thu Jan  7 18:47:18 2010
@@ -97,6 +97,10 @@
         </li>
                   
     <li >
+              <a href="reference/index.html">Userguide</a>
+        </li>
+                  
+    <li >
               <a href="features.html">Features</a>
         </li>
               </ul>
@@ -114,6 +118,10 @@
         </li>
                   
     <li >
+              <a href="contributions.html">Contributions</a>
+        </li>
+                  
+    <li >
               <a href="mail-lists.html">Mailing lists</a>
         </li>
                   
@@ -147,7 +155,7 @@
     <!-- end of content -->
     <div id="footer">
       <p>&#169;  
-          2008-2009
+          2008-2010
     
           The Apache Software Foundation
       </p>



Mime
View raw message