<?xml version="1.0" encoding="UTF-8"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:syn="http://purl.org/rss/1.0/modules/syndication/" xmlns:admin="http://webns.net/mvcb/">
  <channel about="http://blog.gmane.org/gmane.text.xml.cocoon.cvs">
    <title>gmane.text.xml.cocoon.cvs</title>
    <link>http://blog.gmane.org/gmane.text.xml.cocoon.cvs</link>
    <description/>
    <syn:updatePeriod>hourly</syn:updatePeriod>
    <syn:updateFrequency>1</syn:updateFrequency>
    <syn:updateBase>1901-01-01T00:00+00:00</syn:updateBase>
    <items>
      <rdf:Seq>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.text.xml.cocoon.cvs/27591"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.text.xml.cocoon.cvs/27590"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.text.xml.cocoon.cvs/27589"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.text.xml.cocoon.cvs/27588"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.text.xml.cocoon.cvs/27587"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.text.xml.cocoon.cvs/27586"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.text.xml.cocoon.cvs/27585"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.text.xml.cocoon.cvs/27584"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.text.xml.cocoon.cvs/27583"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.text.xml.cocoon.cvs/27582"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.text.xml.cocoon.cvs/27581"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.text.xml.cocoon.cvs/27580"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.text.xml.cocoon.cvs/27579"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.text.xml.cocoon.cvs/27578"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.text.xml.cocoon.cvs/27577"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.text.xml.cocoon.cvs/27576"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.text.xml.cocoon.cvs/27575"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.text.xml.cocoon.cvs/27574"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.text.xml.cocoon.cvs/27573"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.text.xml.cocoon.cvs/27572"/>
      </rdf:Seq>
    </items>
    <image rdf:resource="http://gmane.org/img/gmane-25t.png"/>
    <textinput rdf:resource=""/>
  </channel>
  <image rdf:about="http://gmane.org/img/gmane-25t.png">
    <title>Gmane</title>
    <url>http://gmane.org/img/gmane-25t.png</url>
    <link>http://gmane.org</link>
  </image>
  <item rdf:about="http://permalink.gmane.org/gmane.text.xml.cocoon.cvs/27591">
    <title>svn commit: r721814 - in /cocoon/cocoon3/trunk: cocoon-sample-webapp/src/test/java/org/apache/cocoon/it/ cocoon-sample/ cocoon-sample/src/main/resources/COB-INF/</title>
    <link>http://permalink.gmane.org/gmane.text.xml.cocoon.cvs/27591</link>
    <description>Author: reinhard
Date: Sun Nov 30 06:05:44 2008
New Revision: 721814

URL: http://svn.apache.org/viewvc?rev=721814&amp;view=rev
Log:
. add integration tests for caching
. tidy up samples page

Modified:
    cocoon/cocoon3/trunk/cocoon-sample-webapp/src/test/java/org/apache/cocoon/it/CachingOfPipelinesTest.java
    cocoon/cocoon3/trunk/cocoon-sample-webapp/src/test/java/org/apache/cocoon/it/ReaderTest.java
    cocoon/cocoon3/trunk/cocoon-sample/pom.xml
    cocoon/cocoon3/trunk/cocoon-sample/src/main/resources/COB-INF/overview.html

Modified: cocoon/cocoon3/trunk/cocoon-sample-webapp/src/test/java/org/apache/cocoon/it/CachingOfPipelinesTest.java
URL: http://svn.apache.org/viewvc/cocoon/cocoon3/trunk/cocoon-sample-webapp/src/test/java/org/apache/cocoon/it/CachingOfPipelinesTest.java?rev=721814&amp;r1=721813&amp;r2=721814&amp;view=diff
==============================================================================
--- cocoon/cocoon3/trunk/cocoon-sample-webapp/src/test/java/org/apache/cocoon/it/CachingOfPipelinesTest.java (original)
+++ cocoon/cocoon3/trunk/cocoon-sample-webapp/src/test/java/org/apache/cocoon/it/CachingOfPipelinesTest.java Sun Nov 30 06:05:44 2008
&lt; at &gt;&lt; at &gt; -16,8 +16,12 &lt; at &gt;&lt; at &gt;
  */
 package org.apache.cocoon.it;
 
+import org.apache.cocoon.sample.generation.CachingTimestampGenerator;
+import org.apache.cocoon.sample.generation.TimestampGenerator;
+
 /**
- * Test pipeline caching
+ * Test pipeline caching. The tests use the {&lt; at &gt;link TimestampGenerator} which always takes more 0.5 seconds to produce a
+ * result.
  */
 public class CachingOfPipelinesTest extends CocoonHtmlUnitTestCase {
 
&lt; at &gt;&lt; at &gt; -28,6 +32,7 &lt; at &gt;&lt; at &gt;
         this.loadResponse("caching-pipeline/off");
         String content1 = this.response.getContentAsString();
         assertNotNull(content1);
+
         this.loadResponse("caching-pipeline/off");
         String content2 = this.response.getContentAsString();
         assertNotNull(content2);
&lt; at &gt;&lt; at &gt; -35,16 +40,62 &lt; at &gt;&lt; at &gt;
     }
 
     /**
-     * This caching pipeline always returns the same.
+     * This caching pipeline uses the {&lt; at &gt;link CachingTimestampGenerator} that produces results valid for 1.5 seconds.
+     * This means that the second request has to return the same result but the third a different one because the cache
+     * key produced by the first result has become invalid in the meantime.
      */
     public void testCachingPipeline() throws Exception {
         this.loadResponse("caching-pipeline/on");
         String content1 = this.response.getContentAsString();
-        assertNotNull(content1);
+
         this.loadResponse("caching-pipeline/on");
         String content2 = this.response.getContentAsString();
-        assertNotNull(content2);
         assertTrue("The response has to be always the same.", content1.equals(content2));
+
+        Thread.sleep(1000);
+        this.loadResponse("caching-pipeline/on");
+        String content3 = this.response.getContentAsString();
+        assertFalse("The response has to change because the caching period has expired.", content3.equals(content2));
+    }
+
+    /**
+     * This caching pipeline returns the same result for 2 seconds (see the 'expires' parameter in the sitemap). After
+     * 2.1 it produces a different result because the first result generated has become invalid in the meantime and the
+     * refresh is being performed in the same thread.
+     * 
+     * &lt; at &gt;see {&lt; at &gt;link #testExpiresAsyncCaching()}
+     */
+    public void testExpiresCachingPipeline() throws Exception {
+        Thread.sleep(2000);
+        this.loadResponse("/expires/caching-pipeline/on");
+        String content1 = this.response.getContentAsString();
+
+        Thread.sleep(2100);
+        this.loadResponse("/expires/caching-pipeline/on");
+        String content2 = this.response.getContentAsString();
+        assertFalse("The response has to be the same as before.", content1.equals(content2));
     }
 
+    /**
+     * This async-caching pipeline returns the same result for 2 seconds (see the 'expires' parameter in the sitemap).
+     * After 2.1 seconds it still produces the same result but because the cache key of this pipeline has changed, a
+     * separate thread is started that refreshs the cache.
+     * 
+     * After waiting for another second, a fresh result is returned.
+     */
+    public void testExpiresAsyncCaching() throws Exception {
+        this.loadResponse("/expires/async-caching-pipeline/on");
+        String content1 = this.response.getContentAsString();
+
+        Thread.sleep(2100);
+        this.loadResponse("/expires/async-caching-pipeline/on");
+        String content2 = this.response.getContentAsString();
+        assertEquals("The response has to be the same as before.", content1, content2);
+
+        Thread.sleep(500);
+        this.loadResponse("/expires/async-caching-pipeline/on");
+        String content3 = this.response.getContentAsString();
+        assertFalse("The response mustn't be the same as before.", content3.equals(content2));
+
+    }
 }

Modified: cocoon/cocoon3/trunk/cocoon-sample-webapp/src/test/java/org/apache/cocoon/it/ReaderTest.java
URL: http://svn.apache.org/viewvc/cocoon/cocoon3/trunk/cocoon-sample-webapp/src/test/java/org/apache/cocoon/it/ReaderTest.java?rev=721814&amp;r1=721813&amp;r2=721814&amp;view=diff
==============================================================================
--- cocoon/cocoon3/trunk/cocoon-sample-webapp/src/test/java/org/apache/cocoon/it/ReaderTest.java (original)
+++ cocoon/cocoon3/trunk/cocoon-sample-webapp/src/test/java/org/apache/cocoon/it/ReaderTest.java Sun Nov 30 06:05:44 2008
&lt; at &gt;&lt; at &gt; -40,7 +40,7 &lt; at &gt;&lt; at &gt;
     }
 
     /**
-     * Call a pipeline that uses an unkown file extentions.
+     * Call a pipeline that uses an unknown file extensions.
      */
     public void testReadingResourceWithUnknownMimeType() throws Exception {
         this.loadResponse("read/javascript-resource-implicit.abc");
&lt; at &gt;&lt; at &gt; -55,7 +55,8 &lt; at &gt;&lt; at &gt;
         this.loadResponse("read/javascript-resource-implicit.js");
         String lastModified = this.response.getResponseHeaderValue("Last-Modified");
         assertNotNull("Last-Modified has to be set at this point!", lastModified);
-        assertFalse("Last-Modified hast to be set at this point!", "".equals(lastModified));
+        assertFalse("Last-Modified has to be set at this point!", "".equals(lastModified));
+
         this.webClient.addRequestHeader("If-Modified-Since", lastModified);
         this.loadResponse("read/javascript-resource-implicit.js");
         assertEquals(304, this.response.getStatusCode());

Modified: cocoon/cocoon3/trunk/cocoon-sample/pom.xml
URL: http://svn.apache.org/viewvc/cocoon/cocoon3/trunk/cocoon-sample/pom.xml?rev=721814&amp;r1=721813&amp;r2=721814&amp;view=diff
==============================================================================
--- cocoon/cocoon3/trunk/cocoon-sample/pom.xml (original)
+++ cocoon/cocoon3/trunk/cocoon-sample/pom.xml Sun Nov 30 06:05:44 2008
&lt; at &gt;&lt; at &gt; -80,9 +80,9 &lt; at &gt;&lt; at &gt;
     &lt;plugins&gt;
       &lt;plugin&gt;
         &lt;artifactId&gt;maven-eclipse-plugin&lt;/artifactId&gt;
-        &lt;configuration&gt;
+        &lt;!-- configuration&gt;
           &lt;useProjectReferences&gt;false&lt;/useProjectReferences&gt;
-        &lt;/configuration&gt;
+        &lt;/configuration--&gt;
       &lt;/plugin&gt;
       &lt;plugin&gt;
         &lt;groupId&gt;org.apache.cocoon&lt;/groupId&gt;

Modified: cocoon/cocoon3/trunk/cocoon-sample/src/main/resources/COB-INF/overview.html
URL: http://svn.apache.org/viewvc/cocoon/cocoon3/trunk/cocoon-sample/src/main/resources/COB-INF/overview.html?rev=721814&amp;r1=721813&amp;r2=721814&amp;view=diff
==============================================================================
--- cocoon/cocoon3/trunk/cocoon-sample/src/main/resources/COB-INF/overview.html (original)
+++ cocoon/cocoon3/trunk/cocoon-sample/src/main/resources/COB-INF/overview.html Sun Nov 30 06:05:44 2008
&lt; at &gt;&lt; at &gt; -37,17 +37,24 &lt; at &gt;&lt; at &gt;
   &lt;/ul&gt;
   &lt;h2&gt;Caching&lt;/h2&gt;
   &lt;ul&gt;
-  &lt;li&gt;&lt;a href="caching-pipeline/on"&gt;Caching pipeline&lt;/a&gt;: The result of the pipeline is cached forever.&lt;/li&gt;
   &lt;li&gt;&lt;a href="caching-pipeline/off"&gt;Non-Caching pipeline&lt;/a&gt;: The pipeline doesn't cache (although it's components support it)&lt;/li&gt;
-  &lt;li&gt;&lt;a href="async-caching-pipeline/on"&gt;Async-Caching pipeline&lt;/a&gt;: &lt;/li&gt;
-  &lt;li&gt;&lt;a href="expires-caching-pipeline/on"&gt;Expires-Caching pipeline&lt;/a&gt;: The pipeline returns a cached result for defined period.&lt;/li&gt;
+  &lt;li&gt;&lt;a href="caching-pipeline/on"&gt;Caching pipeline&lt;/a&gt;: The result of the pipeline is cached for 1.5 seconds. The next request that occurs 
+  after the cached response has expires, triggers a reexecution of the pipeline in the same thread.&lt;/li&gt;
+  &lt;li&gt;&lt;a href="async-caching-pipeline/on"&gt;Async-Caching pipeline&lt;/a&gt;: The result of the pipeline is cached for 1.5 seconds. The next request that occurs 
+  after the cached response has expires, triggers a reexecution of the pipeline in a separate thread.&lt;/li&gt;
+  &lt;li&gt;&lt;a href="/expires/caching-pipeline/on"&gt;Expires-Caching pipeline&lt;/a&gt;: The pipeline returns a cached result for defined period, 
+  independently from whether components used in the pipeline support caching or not. The pipeline result is cached for 2 seconds. The
+  recreation of the pipeline result is done in the same thread as the servlet request.&lt;/li&gt;
+  &lt;li&gt;&lt;a href="/expires/async-caching-pipeline/on"&gt;Expires-Async-Caching pipeline&lt;/a&gt;: The pipeline returns a cached result for defined period, 
+  independently from whether components used in the pipeline support caching or not. The pipeline result is cached for 2 seconds. The recreation of the
+  pipeline result is done in a separate thread than the servlet request.&lt;/li&gt;
   &lt;/ul&gt;
   &lt;h2&gt;Error handling&lt;/h2&gt;
   &lt;ul&gt;
     &lt;li&gt;&lt;a href="123456789123456789"&gt;ResourceNotFound&lt;/a&gt;: The error handler catches all exceptions, in this case no matcher matches.&lt;/li&gt;
     &lt;li&gt;&lt;a href="error-handling/custom-error"&gt;Custom error - Sitemap&lt;/a&gt;: Catch a custom error in the sitemap.&lt;/li&gt;
     &lt;li&gt;&lt;a href="error-handling/custom-error-per-pipeline-error-handling"&gt;
-      Custom error - Pipeline&lt;/a&gt;: Catch a custom error using a per-pipeline error handler. &lt;b&gt;*** doesn't work ***&lt;/b&gt;&lt;/li&gt;
+      Custom error - Pipeline&lt;/a&gt;: Catch a custom error using a per-pipeline error handler.&lt;/li&gt;
   &lt;/ul&gt;
   &lt;h2&gt;Servlet-Service-Components and servlet: protocol&lt;/h2&gt;
   &lt;ul&gt;
&lt; at &gt;&lt; at &gt; -58,7 +65,6 &lt; at &gt;&lt; at &gt;
   &lt;h2&gt;Expression language&lt;/h2&gt;
   &lt;ul&gt;
     &lt;li&gt;&lt;a href="expression-language/jexl?fileName=simple"&gt;request attribute (jexl)&lt;/a&gt;: Accessing a request attribute using Jexl.&lt;/li&gt;
-    &lt;li&gt;&lt;a href="expression-language/jxpath?fileName=simple"&gt;request attribute (jxpath)&lt;/a&gt;: Accessing a request attribute using JXPath.&lt;/li&gt;
     &lt;li&gt;&lt;a href="expression-language/map-numbers/simple"&gt;sitemap parameter&lt;/a&gt;: Accessing a sitemap parameter.&lt;/li&gt;
     &lt;li&gt;&lt;a href="expression-language/map-named-parameters/simple"&gt;sitemap parameter&lt;/a&gt;: Accessing a sitemap parameter using named parameters in the pattern.&lt;/li&gt;
     &lt;li&gt;&lt;a href="expression-language/nested/simple"&gt;nested matchers&lt;/a&gt;: Accessing a parameter from one level above.&lt;/li&gt;
&lt; at &gt;&lt; at &gt; -66,7 +72,7 &lt; at &gt;&lt; at &gt;
   &lt;h2&gt;Redirects&lt;/h2&gt;
   &lt;ul&gt;
     &lt;li&gt;&lt;a href="redirect/www.orf.at"&gt;Temporary (302)&lt;/a&gt;: Temporary redirect to orf.at.&lt;/li&gt;
-    &lt;li&gt;&lt;a href="redirect/sax-pipeline/simple-xml"&gt;servlet:&lt;/a&gt;: Redirect to a servlet: URL.&lt;/li&gt;
+    &lt;li&gt;&lt;a href="redirect/sax-pipeline/simple-xml"&gt;servlet&lt;/a&gt;: Redirect to a servlet: URL.&lt;/li&gt;
   &lt;/ul&gt;
   &lt;h2&gt;Object Model&lt;/h2&gt;
   &lt;ul&gt;
&lt; at &gt;&lt; at &gt; -91,11 +97,6 &lt; at &gt;&lt; at &gt;
   &lt;ul&gt;
     &lt;li&gt;&lt;a href="xslt/main"&gt;XSLT Transformation&lt;/a&gt;: An XSLT transformation that includes stylesheets via file and servlet protocol.&lt;/li&gt;
   &lt;/ul&gt;
-  &lt;h2&gt;Parameter passing&lt;/h2&gt;
-  &lt;ul&gt;
-    &lt;li&gt;&lt;a href="parameter-passing/working"&gt;Matching Matcher&lt;/a&gt;: Passing a named parameter from a matcher to the sitemap.&lt;/li&gt;
-    &lt;li&gt;&lt;a href="parameter-passing/failing"&gt;Not-Matching Matcher&lt;/a&gt;: Passing null from a matcher to the sitemap.&lt;/li&gt;
-  &lt;/ul&gt;
   &lt;h2&gt;Controller&lt;/h2&gt;
   &lt;ul&gt;
     &lt;li&gt;&lt;a href="controller/abc/foo?reqparam=1"&gt;Invoke a controller&lt;/a&gt;: Invoke a controller and pass two parameters&lt;/li&gt;



</description>
    <dc:creator>reinhard&lt; at &gt;apache.org</dc:creator>
    <dc:date>2008-11-30T14:05:45</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.text.xml.cocoon.cvs/27590">
    <title>svn commit: r721693 - /cocoon/cocoon3/trunk/cocoon-sample/src/main/java/org/apache/cocoon/sample/generation/TimestampGenerator.java</title>
    <link>http://permalink.gmane.org/gmane.text.xml.cocoon.cvs/27590</link>
    <description>Author: reinhard
Date: Sat Nov 29 09:19:44 2008
New Revision: 721693

URL: http://svn.apache.org/viewvc?rev=721693&amp;view=rev
Log:
&lt;action dev="steven" type="add"&gt;
   [cocoon-pipeline] Support expires caching: CachingPipeline and AsyncCachingPipeline can be configured to
   be valid for a particular period. This 'expires caching' doesn't check if any of the pipeline components
   would produce a valid result or not and it isn't even necessary that the pipeline components are cacheable
   by implementing the org.apache.cocoon.pipeline.component.CachingPipelineComponent interface.
&lt;/action&gt;

Modified:
    cocoon/cocoon3/trunk/cocoon-sample/src/main/java/org/apache/cocoon/sample/generation/TimestampGenerator.java

Modified: cocoon/cocoon3/trunk/cocoon-sample/src/main/java/org/apache/cocoon/sample/generation/TimestampGenerator.java
URL: http://svn.apache.org/viewvc/cocoon/cocoon3/trunk/cocoon-sample/src/main/java/org/apache/cocoon/sample/generation/TimestampGenerator.java?rev=721693&amp;r1=721692&amp;r2=721693&amp;view=diff
==============================================================================
--- cocoon/cocoon3/trunk/cocoon-sample/src/main/java/org/apache/cocoon/sample/generation/TimestampGenerator.java (original)
+++ cocoon/cocoon3/trunk/cocoon-sample/src/main/java/org/apache/cocoon/sample/generation/TimestampGenerator.java Sat Nov 29 09:19:44 2008
&lt; at &gt;&lt; at &gt; -16,24 +16,29 &lt; at &gt;&lt; at &gt;
  */
 package org.apache.cocoon.sample.generation;
 
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
 import org.apache.cocoon.pipeline.ProcessingException;
-import org.apache.cocoon.pipeline.caching.CacheKey;
-import org.apache.cocoon.pipeline.caching.SimpleCacheKey;
-import org.apache.cocoon.pipeline.component.CachingPipelineComponent;
 import org.apache.cocoon.pipeline.component.sax.AbstractGenerator;
 import org.apache.cocoon.pipeline.component.sax.XMLConsumer;
 import org.apache.cocoon.pipeline.util.ImmutableAttributesImpl;
 import org.xml.sax.SAXException;
 
-public class TimestampGenerator extends AbstractGenerator implements CachingPipelineComponent {
+public class TimestampGenerator extends AbstractGenerator {
 
     public void execute() {
         XMLConsumer consumer = this.getXMLConsumer();
         try {
-            consumer.startDocument();
+            try {
+                Thread.sleep(500);
+            } catch (InterruptedException e) {
+                e.printStackTrace();
+            }
 
+            consumer.startDocument();
             consumer.startElement("", "timestamp", "timestamp", new ImmutableAttributesImpl());
-            String timestamp = Long.toString(System.currentTimeMillis());
+            String timestamp = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.S").format(new Date());
             consumer.characters(timestamp.toCharArray(), 0, timestamp.length());
             consumer.endElement("", "timestamp", "timestamp");
 
&lt; at &gt;&lt; at &gt; -42,8 +47,4 &lt; at &gt;&lt; at &gt;
             throw new ProcessingException(e);
         }
     }
-
-    public CacheKey constructCacheKey() {
-        return new SimpleCacheKey();
-    }
 }



</description>
    <dc:creator>reinhard&lt; at &gt;apache.org</dc:creator>
    <dc:date>2008-11-29T17:19:49</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.text.xml.cocoon.cvs/27589">
    <title>svn commit: r721690 - in /cocoon/cocoon3/trunk: cocoon-docs/src/changes/ cocoon-docs/src/site/apt/ cocoon-pipeline/src/main/java/org/apache/cocoon/pipeline/ cocoon-pipeline/src/main/java/org/apache/cocoon/pipeline/caching/ cocoon-sample/src/main/java/o...</title>
    <link>http://permalink.gmane.org/gmane.text.xml.cocoon.cvs/27589</link>
    <description>Author: reinhard
Date: Sat Nov 29 09:09:08 2008
New Revision: 721690

URL: http://svn.apache.org/viewvc?rev=721690&amp;view=rev
Log:
&lt;action dev="steven" type="add"&gt;
   [cocoon-pipeline] Support expires caching: CachingPipeline and AsyncCachingPipeline can be configured to
   be valid for a particular period. This 'expires caching' doesn't check if any of the pipeline components
   would produce a valid result or not and it isn't even necessary that the pipeline components are cacheable
   by implementing the org.apache.cocoon.pipeline.component.CachingPipelineComponent interface.
&lt;/action&gt;

Added:
    cocoon/cocoon3/trunk/cocoon-pipeline/src/main/java/org/apache/cocoon/pipeline/caching/ExpiresCacheKey.java   (with props)
    cocoon/cocoon3/trunk/cocoon-pipeline/src/main/java/org/apache/cocoon/pipeline/caching/InvalidCacheKey.java   (with props)
    cocoon/cocoon3/trunk/cocoon-sample/src/main/java/org/apache/cocoon/sample/generation/CachingTimestampGenerator.java   (contents, props changed)
      - copied, changed from r721274, cocoon/cocoon3/trunk/cocoon-sample/src/main/java/org/apache/cocoon/sample/generation/TimestampGenerator.java
Removed:
    cocoon/cocoon3/trunk/cocoon-sample/src/main/resources/META-INF/cocoon/spring/cocoon-optional-fop.xml
Modified:
    cocoon/cocoon3/trunk/cocoon-docs/src/changes/changes.xml
    cocoon/cocoon3/trunk/cocoon-docs/src/site/apt/roadmap.apt
    cocoon/cocoon3/trunk/cocoon-pipeline/src/main/java/org/apache/cocoon/pipeline/AbstractPipeline.java
    cocoon/cocoon3/trunk/cocoon-pipeline/src/main/java/org/apache/cocoon/pipeline/AsyncCachePipeline.java
    cocoon/cocoon3/trunk/cocoon-pipeline/src/main/java/org/apache/cocoon/pipeline/CachingPipeline.java
    cocoon/cocoon3/trunk/cocoon-pipeline/src/main/java/org/apache/cocoon/pipeline/Pipeline.java
    cocoon/cocoon3/trunk/cocoon-sample/src/main/resources/COB-INF/overview.html
    cocoon/cocoon3/trunk/cocoon-sample/src/main/resources/COB-INF/sitemap.xmap
    cocoon/cocoon3/trunk/cocoon-sample/src/main/resources/META-INF/cocoon/spring/cocoon-sample-sitemap-components.xml
    cocoon/cocoon3/trunk/cocoon-sitemap/src/main/java/org/apache/cocoon/sitemap/Invocation.java
    cocoon/cocoon3/trunk/cocoon-sitemap/src/main/java/org/apache/cocoon/sitemap/InvocationImpl.java
    cocoon/cocoon3/trunk/cocoon-sitemap/src/main/java/org/apache/cocoon/sitemap/node/PipelineNode.java

Modified: cocoon/cocoon3/trunk/cocoon-docs/src/changes/changes.xml
URL: http://svn.apache.org/viewvc/cocoon/cocoon3/trunk/cocoon-docs/src/changes/changes.xml?rev=721690&amp;r1=721689&amp;r2=721690&amp;view=diff
==============================================================================
--- cocoon/cocoon3/trunk/cocoon-docs/src/changes/changes.xml (original)
+++ cocoon/cocoon3/trunk/cocoon-docs/src/changes/changes.xml Sat Nov 29 09:09:08 2008
&lt; at &gt;&lt; at &gt; -25,6 +25,12 &lt; at &gt;&lt; at &gt;
 &lt;document&gt;
   &lt;body&gt;
     &lt;release version="3.0.0-alpha-2" date="2008-00-00" description="unreleased"&gt;
+      &lt;action dev="steven" type="add"&gt;
+        [cocoon-pipeline] Support expires caching: CachingPipeline and AsyncCachingPipeline can be configured to
+        be valid for a particular period. This 'expires caching' doesn't check if any of the pipeline components
+        would produce a valid result or not and it isn't even necessary that the pipeline components are cacheable
+        by implementing the org.apache.cocoon.pipeline.component.CachingPipelineComponent interface.
+      &lt;/action&gt;
       &lt;action dev="reinhard" type="update"&gt;
         [cocoon-rest] Introduce the interface org.apache.cocoon.rest.controller.response.StreamingResponse that
         can be used for controller results. The most prominent use case for it is the 

Modified: cocoon/cocoon3/trunk/cocoon-docs/src/site/apt/roadmap.apt
URL: http://svn.apache.org/viewvc/cocoon/cocoon3/trunk/cocoon-docs/src/site/apt/roadmap.apt?rev=721690&amp;r1=721689&amp;r2=721690&amp;view=diff
==============================================================================
--- cocoon/cocoon3/trunk/cocoon-docs/src/site/apt/roadmap.apt (original)
+++ cocoon/cocoon3/trunk/cocoon-docs/src/site/apt/roadmap.apt Sat Nov 29 09:09:08 2008
&lt; at &gt;&lt; at &gt; -21,8 +21,6 &lt; at &gt;&lt; at &gt;
     
     * Improved error handling in XSLT transformer (cocoon-pipeline)
 
-    * Expires-caching in pipelines - A pipeline is valid for a certain period of time (cocoon-pipeline) 
-    
     * EHCache integration for caching pipelines (cocoon-pipeline)
     
     * Support custom matchers (&lt;&lt;&lt;\&lt;map:match type="my-custom-matcher"/\&gt;&gt;&gt;&gt;)

Modified: cocoon/cocoon3/trunk/cocoon-pipeline/src/main/java/org/apache/cocoon/pipeline/AbstractPipeline.java
URL: http://svn.apache.org/viewvc/cocoon/cocoon3/trunk/cocoon-pipeline/src/main/java/org/apache/cocoon/pipeline/AbstractPipeline.java?rev=721690&amp;r1=721689&amp;r2=721690&amp;view=diff
==============================================================================
--- cocoon/cocoon3/trunk/cocoon-pipeline/src/main/java/org/apache/cocoon/pipeline/AbstractPipeline.java (original)
+++ cocoon/cocoon3/trunk/cocoon-pipeline/src/main/java/org/apache/cocoon/pipeline/AbstractPipeline.java Sat Nov 29 09:09:08 2008
&lt; at &gt;&lt; at &gt; -37,10 +37,10 &lt; at &gt;&lt; at &gt;
  */
 public abstract class AbstractPipeline implements Pipeline {
 
-    private final Log logger = LogFactory.getLog(this.getClass());
-
     private final LinkedList&lt;PipelineComponent&gt; components = new LinkedList&lt;PipelineComponent&gt;();
 
+    private final Log logger = LogFactory.getLog(this.getClass());
+
     private boolean setupDone;
 
     /**
&lt; at &gt;&lt; at &gt; -64,48 +64,66 &lt; at &gt;&lt; at &gt;
     /**
      * {&lt; at &gt;inheritDoc}
      * 
-     * &lt; at &gt;see org.apache.cocoon.pipeline.Pipeline#setup(java.io.OutputStream, java.util.Map)
+     * &lt; at &gt;see org.apache.cocoon.pipeline.Pipeline#execute()
      */
-    public void setup(OutputStream outputStream) {
-        this.setup(outputStream, null);
+    public void execute() throws Exception {
+        if (!this.setupDone) {
+            throw new ProcessingException(new IllegalStateException(
+                    "The pipeline wasn't setup correctly. Call #setup() first."));
+        }
+
+        this.invokeStarter();
     }
 
     /**
      * {&lt; at &gt;inheritDoc}
      * 
-     * &lt; at &gt;see org.apache.cocoon.pipeline.Pipeline#setup(java.io.OutputStream, java.util.Map)
+     * &lt; at &gt;see org.apache.cocoon.pipeline.Pipeline#getContentType()
      */
-    public void setup(OutputStream outputStream, Map&lt;String, Object&gt; parameters) {
-        if (outputStream == null) {
-            throw new SetupException("An output stream must be passed.");
-        }
+    public String getContentType() {
+        Finisher last = this.getFinisher();
+        return last.getContentType();
+    }
 
-        this.setupComponents(outputStream, parameters);
-        this.setupDone = true;
+    public long getLastModified() {
+        return -1;
     }
 
     /**
      * {&lt; at &gt;inheritDoc}
      * 
-     * &lt; at &gt;see org.apache.cocoon.pipeline.Pipeline#execute()
+     * &lt; at &gt;see org.apache.cocoon.pipeline.Pipeline#setConfiguration(java.util.Map)
      */
-    public void execute() throws Exception {
-        if (!this.setupDone) {
-            throw new ProcessingException(new IllegalStateException(
-                    "The pipeline wasn't setup correctly. Call #setup() first."));
-        }
+    public void setConfiguration(Map&lt;String, ? extends Object&gt; parameters) {
+        // do nothing
+    }
 
-        this.invokeStarter();
+    /**
+     * {&lt; at &gt;inheritDoc}
+     * 
+     * &lt; at &gt;see org.apache.cocoon.pipeline.Pipeline#setup(java.io.OutputStream, java.util.Map)
+     */
+    public void setup(OutputStream outputStream) {
+        this.setup(outputStream, null);
     }
 
     /**
      * {&lt; at &gt;inheritDoc}
      * 
-     * &lt; at &gt;see org.apache.cocoon.pipeline.Pipeline#getContentType()
+     * &lt; at &gt;see org.apache.cocoon.pipeline.Pipeline#setup(java.io.OutputStream, java.util.Map)
      */
-    public String getContentType() {
-        Finisher last = this.getFinisher();
-        return last.getContentType();
+    public void setup(OutputStream outputStream, Map&lt;String, Object&gt; parameters) {
+        if (outputStream == null) {
+            throw new SetupException("An output stream must be passed.");
+        }
+
+        this.setupComponents(outputStream, parameters);
+        this.setupDone = true;
+    }
+
+    &lt; at &gt;Override
+    public String toString() {
+        return StringRepresentation.buildString(this, "components=" + this.getComponents());
     }
 
     protected LinkedList&lt;PipelineComponent&gt; getComponents() {
&lt; at &gt;&lt; at &gt; -193,13 +211,4 &lt; at &gt;&lt; at &gt;
         // let the Producer accept the Consumer (the Producer might reject it)
         ((Producer) firstComponent).setConsumer((Consumer) secondComponent);
     }
-
-    public long getLastModified() {
-        return -1;
-    }
-
-    &lt; at &gt;Override
-    public String toString() {
-        return StringRepresentation.buildString(this, "components=" + this.getComponents());
-    }
 }

Modified: cocoon/cocoon3/trunk/cocoon-pipeline/src/main/java/org/apache/cocoon/pipeline/AsyncCachePipeline.java
URL: http://svn.apache.org/viewvc/cocoon/cocoon3/trunk/cocoon-pipeline/src/main/java/org/apache/cocoon/pipeline/AsyncCachePipeline.java?rev=721690&amp;r1=721689&amp;r2=721690&amp;view=diff
==============================================================================
--- cocoon/cocoon3/trunk/cocoon-pipeline/src/main/java/org/apache/cocoon/pipeline/AsyncCachePipeline.java (original)
+++ cocoon/cocoon3/trunk/cocoon-pipeline/src/main/java/org/apache/cocoon/pipeline/AsyncCachePipeline.java Sat Nov 29 09:09:08 2008
&lt; at &gt;&lt; at &gt; -30,11 +30,10 &lt; at &gt;&lt; at &gt;
 
 /**
  * &lt;p&gt;
- * This {&lt; at &gt;link Pipeline} basically works like the {&lt; at &gt;link CachingPipeline}. The only difference is that when the the
- * cached result isn't valid anymore, the refresh is done in a separate thread. This means that the re-production of the
- * result doesn't block the initial request. The disadvantage of this approach is that until the result is being
- * reproduced, an out-dated result is being returned. If this is out of question for a use case, the
- * {&lt; at &gt;link CachingPipeline} has to be used.
+ * This {&lt; at &gt;link Pipeline} basically works like the {&lt; at &gt;link CachingPipeline}. The only difference is that when the cached
+ * result isn't valid anymore, the refresh is done in a separate thread. This means that the re-production of the result
+ * doesn't block the initial request. The disadvantage of this approach is that until the result is being reproduced, an
+ * out-dated result is returned. If this is out of question for a use case, the {&lt; at &gt;link CachingPipeline} has to be used.
  * &lt;/p&gt;
  */
 public class AsyncCachePipeline extends CachingPipeline implements CacheRefreshJob {
&lt; at &gt;&lt; at &gt; -48,7 +47,7 &lt; at &gt;&lt; at &gt;
 
     /**
      * {&lt; at &gt;inheritDoc}
-     *
+     * 
      * &lt; at &gt;see org.apache.cocoon.pipeline.CachingPipeline#execute()
      */
     &lt; at &gt;Override
&lt; at &gt;&lt; at &gt; -69,7 +68,7 &lt; at &gt;&lt; at &gt;
             }
             cachedValue.writeTo(this.cachingOutputStream.getOutputStream());
 
-            if (!cachedValue.isValid(this.cacheKey)) {
+            if (!this.isCacheKeyValid(cachedValue)) {
                 if (this.logger.isDebugEnabled()) {
                     this.logger.debug("Cached value is not up to date. Delegating to " + this.cacheRefreshManager);
                 }
&lt; at &gt;&lt; at &gt; -83,7 +82,9 &lt; at &gt;&lt; at &gt;
         // no cached value (not even an invalid one) was present -&gt; execute the pipeline
         this.invokeStarter();
         // cache the result
-        this.setCachedValue(this.cacheKey, new CompleteCacheValue(cachingOutputStream.getContent(), this.cacheKey));
+        this
+                .setCachedValue(this.cacheKey, new CompleteCacheValue(this.cachingOutputStream.getContent(),
+                        this.cacheKey));
     }
 
     public CacheRefreshManager getCacheRefreshManager() {
&lt; at &gt;&lt; at &gt; -92,7 +93,7 &lt; at &gt;&lt; at &gt;
 
     /**
      * {&lt; at &gt;inheritDoc}
-     *
+     * 
      * &lt; at &gt;see org.apache.cocoon.pipeline.caching.CacheRefreshJob#refresh(org.apache.cocoon.pipeline.caching.CacheKey)
      */
     public void refresh(CacheKey cacheKey) {

Modified: cocoon/cocoon3/trunk/cocoon-pipeline/src/main/java/org/apache/cocoon/pipeline/CachingPipeline.java
URL: http://svn.apache.org/viewvc/cocoon/cocoon3/trunk/cocoon-pipeline/src/main/java/org/apache/cocoon/pipeline/CachingPipeline.java?rev=721690&amp;r1=721689&amp;r2=721690&amp;view=diff
==============================================================================
--- cocoon/cocoon3/trunk/cocoon-pipeline/src/main/java/org/apache/cocoon/pipeline/CachingPipeline.java (original)
+++ cocoon/cocoon3/trunk/cocoon-pipeline/src/main/java/org/apache/cocoon/pipeline/CachingPipeline.java Sat Nov 29 09:09:08 2008
&lt; at &gt;&lt; at &gt; -26,6 +26,8 &lt; at &gt;&lt; at &gt;
 import org.apache.cocoon.pipeline.caching.CachingOutputStream;
 import org.apache.cocoon.pipeline.caching.CompleteCacheValue;
 import org.apache.cocoon.pipeline.caching.CompoundCacheKey;
+import org.apache.cocoon.pipeline.caching.ExpiresCacheKey;
+import org.apache.cocoon.pipeline.caching.InvalidCacheKey;
 import org.apache.cocoon.pipeline.caching.PipelineCache;
 import org.apache.cocoon.pipeline.component.CachingPipelineComponent;
 import org.apache.cocoon.pipeline.component.PipelineComponent;
&lt; at &gt;&lt; at &gt; -40,25 +42,54 &lt; at &gt;&lt; at &gt;
  */
 public class CachingPipeline extends AbstractPipeline {
 
-    private final Log logger = LogFactory.getLog(this.getClass());
+    protected CacheKey cacheKey;
+
+    protected CachingOutputStream cachingOutputStream;
 
     protected PipelineCache pipelineCache;
 
-    protected CacheKey cacheKey;
+    private String expires;
 
-    protected CachingOutputStream cachingOutputStream;
+    private final Log logger = LogFactory.getLog(this.getClass());
 
-    &lt; at &gt;Override
-    public void setup(OutputStream outputStream) {
-        this.setup(outputStream);
-    }
+    public CacheKey constructCacheKey() {
+        CompoundCacheKey result = new CompoundCacheKey();
+        if (this.logger.isDebugEnabled()) {
+            this.logger.debug("Creating " + result + ": ");
+        }
 
-    &lt; at &gt;Override
-    public void setup(OutputStream outputStream, Map&lt;String, Object&gt; parameters) {
-        // create a caching output stream to intercept the result
-        this.cachingOutputStream = new CachingOutputStream(outputStream);
+        for (PipelineComponent pipelineComponent : this.getComponents()) {
+            if (pipelineComponent instanceof CachingPipelineComponent) {
+                CachingPipelineComponent cachablePipelineComponent = (CachingPipelineComponent) pipelineComponent;
 
-        super.setup(this.cachingOutputStream, parameters);
+                CacheKey cacheKey = cachablePipelineComponent.constructCacheKey();
+                result.addCacheKey(cacheKey);
+                if (this.logger.isDebugEnabled()) {
+                    this.logger.debug("  ~ adding " + cacheKey + " for component " + pipelineComponent);
+                }
+
+                continue;
+            }
+
+            // component does not support caching
+            if (this.logger.isDebugEnabled()) {
+                this.logger.debug("  ~ no caching: " + pipelineComponent);
+                this.logger.debug("Stop construction a cache key");
+            }
+
+            // support expires caching
+            if (this.expires != null) {
+                return new ExpiresCacheKey(new InvalidCacheKey(), this.expires);
+            }
+            return null;
+        }
+
+        // support expires caching
+        if (this.expires != null) {
+            return new ExpiresCacheKey(result, this.expires);
+        }
+
+        return result;
     }
 
     &lt; at &gt;Override
&lt; at &gt;&lt; at &gt; -70,7 +101,7 &lt; at &gt;&lt; at &gt;
         this.cacheKey = this.constructCacheKey();
         // checked for a cached value first
         CacheValue cachedValue = this.getCachedValue(this.cacheKey);
-        if (cachedValue != null &amp;&amp; cachedValue.isValid(this.cacheKey)) {
+        if (this.isCacheKeyValid(cachedValue)) {
             // cached value found
             if (this.logger.isDebugEnabled()) {
                 this.logger.debug("Write cache value to output stream: " + cachedValue);
&lt; at &gt;&lt; at &gt; -84,13 +115,8 &lt; at &gt;&lt; at &gt;
         this.invokeStarter();
 
         // cache the result
-        this
-                .setCachedValue(this.cacheKey, new CompleteCacheValue(this.cachingOutputStream.getContent(),
-                        this.cacheKey));
-    }
-
-    public void setPipelineCache(PipelineCache pipelineCache) {
-        this.pipelineCache = pipelineCache;
+        CompleteCacheValue cacheValue = new CompleteCacheValue(this.cachingOutputStream.getContent(), this.cacheKey);
+        this.setCachedValue(this.cacheKey, cacheValue);
     }
 
     &lt; at &gt;Override
&lt; at &gt;&lt; at &gt; -101,34 +127,33 &lt; at &gt;&lt; at &gt;
         return this.cacheKey.getLastModified();
     }
 
-    public CacheKey constructCacheKey() {
-        CompoundCacheKey result = new CompoundCacheKey();
-        if (this.logger.isDebugEnabled()) {
-            this.logger.debug("Creating " + result + ": ");
-        }
+    /**
+     * {&lt; at &gt;inheritDoc}
+     * 
+     * &lt; at &gt;see org.apache.cocoon.pipeline.AbstractPipeline#setConfiguration(java.util.Map)
+     */
+    &lt; at &gt;Override
+    public void setConfiguration(Map&lt;String, ? extends Object&gt; parameters) {
+        this.expires = (String) parameters.get("expires");
 
-        for (PipelineComponent pipelineComponent : this.getComponents()) {
-            if (pipelineComponent instanceof CachingPipelineComponent) {
-                CachingPipelineComponent cachablePipelineComponent = (CachingPipelineComponent) pipelineComponent;
+        super.setConfiguration(parameters);
+    }
 
-                CacheKey cacheKey = cachablePipelineComponent.constructCacheKey();
-                result.addCacheKey(cacheKey);
-                if (this.logger.isDebugEnabled()) {
-                    this.logger.debug("  ~ adding " + cacheKey + " for component " + pipelineComponent);
-                }
+    public void setPipelineCache(PipelineCache pipelineCache) {
+        this.pipelineCache = pipelineCache;
+    }
 
-                continue;
-            }
+    &lt; at &gt;Override
+    public void setup(OutputStream outputStream) {
+        this.setup(outputStream);
+    }
 
-            // component does not support caching
-            if (this.logger.isDebugEnabled()) {
-                this.logger.debug("  ~ no caching: " + pipelineComponent);
-                this.logger.debug("Stop construction a cache key");
-            }
-            return null;
-        }
+    &lt; at &gt;Override
+    public void setup(OutputStream outputStream, Map&lt;String, Object&gt; parameters) {
+        // create a caching output stream to intercept the result
+        this.cachingOutputStream = new CachingOutputStream(outputStream);
 
-        return result;
+        super.setup(this.cachingOutputStream, parameters);
     }
 
     protected CacheValue getCachedValue(CacheKey cacheKey) {
&lt; at &gt;&lt; at &gt; -147,6 +172,10 &lt; at &gt;&lt; at &gt;
         return cacheValue;
     }
 
+    protected boolean isCacheKeyValid(CacheValue cachedValue) {
+        return cachedValue != null &amp;&amp; cachedValue.isValid(this.cacheKey);
+    }
+
     protected void setCachedValue(CacheKey cacheKey, CacheValue cacheValue) {
         if (cacheKey != null) {
             if (this.logger.isDebugEnabled()) {

Modified: cocoon/cocoon3/trunk/cocoon-pipeline/src/main/java/org/apache/cocoon/pipeline/Pipeline.java
URL: http://svn.apache.org/viewvc/cocoon/cocoon3/trunk/cocoon-pipeline/src/main/java/org/apache/cocoon/pipeline/Pipeline.java?rev=721690&amp;r1=721689&amp;r2=721690&amp;view=diff
==============================================================================
--- cocoon/cocoon3/trunk/cocoon-pipeline/src/main/java/org/apache/cocoon/pipeline/Pipeline.java (original)
+++ cocoon/cocoon3/trunk/cocoon-pipeline/src/main/java/org/apache/cocoon/pipeline/Pipeline.java Sat Nov 29 09:09:08 2008
&lt; at &gt;&lt; at &gt; -65,22 +65,6 &lt; at &gt;&lt; at &gt;
     void addComponent(PipelineComponent pipelineComponent);
 
     /**
-     * After the pipeline has been prepared ({&lt; at &gt;link #addComponent(PipelineComponent)}, this method can be invoked in
-     * order to setup and initialize the pipeline and its components.
-     * 
-     * &lt; at &gt;param outputStream An {&lt; at &gt;link OutputStream} where the pipeline execution result is written.
-     */
-    void setup(OutputStream outputStream);
-
-    /**
-     * The same as {&lt; at &gt;link #setup(OutputStream)} but also allows passing parameters to the pipeline components.
-     * 
-     * &lt; at &gt;param outputStream An {&lt; at &gt;link OutputStream} where the pipeline execution result is written.
-     * &lt; at &gt;param parameters A {&lt; at &gt;link Map} of parameters that are available to all {&lt; at &gt;link PipelineComponent}s.
-     */
-    void setup(OutputStream outputStream, Map&lt;String, Object&gt; parameters);
-
-    /**
      * After the pipeline has been setup ({&lt; at &gt;link #setup(OutputStream, Map)}, this method can be invoked in order to
      * produce the result.
      * 
&lt; at &gt;&lt; at &gt; -101,4 +85,22 &lt; at &gt;&lt; at &gt;
      * &lt; at &gt;return The last modification date
      */
     long getLastModified();
+
+    /**
+     * After the pipeline has been prepared ({&lt; at &gt;link #addComponent(PipelineComponent)}, this method can be invoked in
+     * order to setup and initialize the pipeline and its components.
+     * 
+     * &lt; at &gt;param outputStream An {&lt; at &gt;link OutputStream} where the pipeline execution result is written.
+     */
+    void setup(OutputStream outputStream);
+
+    /**
+     * The same as {&lt; at &gt;link #setup(OutputStream)} but also allows passing parameters to the pipeline components.
+     * 
+     * &lt; at &gt;param outputStream An {&lt; at &gt;link OutputStream} where the pipeline execution result is written.
+     * &lt; at &gt;param parameters A {&lt; at &gt;link Map} of parameters that are available to all {&lt; at &gt;link PipelineComponent}s.
+     */
+    void setup(OutputStream outputStream, Map&lt;String, Object&gt; parameters);
+
+    void setConfiguration(Map&lt;String, ? extends Object&gt; parameters);
 }

Added: cocoon/cocoon3/trunk/cocoon-pipeline/src/main/java/org/apache/cocoon/pipeline/caching/ExpiresCacheKey.java
URL: http://svn.apache.org/viewvc/cocoon/cocoon3/trunk/cocoon-pipeline/src/main/java/org/apache/cocoon/pipeline/caching/ExpiresCacheKey.java?rev=721690&amp;view=auto
==============================================================================
--- cocoon/cocoon3/trunk/cocoon-pipeline/src/main/java/org/apache/cocoon/pipeline/caching/ExpiresCacheKey.java (added)
+++ cocoon/cocoon3/trunk/cocoon-pipeline/src/main/java/org/apache/cocoon/pipeline/caching/ExpiresCacheKey.java Sat Nov 29 09:09:08 2008
&lt; at &gt;&lt; at &gt; -0,0 +1,95 &lt; at &gt;&lt; at &gt;
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+/**
+ * 
+ */
+package org.apache.cocoon.pipeline.caching;
+
+/**
+ * A cache key implementation that expires after a defined number of seconds.
+ */
+public final class ExpiresCacheKey implements CacheKey {
+
+    private static final long serialVersionUID = 1L;
+    private final CacheKey cacheKey;
+    private final long timestamp;
+    private final long expirationTimestamp;
+
+    public ExpiresCacheKey(CacheKey cacheKey, String expires) {
+        this.cacheKey = cacheKey;
+        this.timestamp = System.currentTimeMillis();
+        this.expirationTimestamp = this.timestamp + Long.parseLong(expires) * 1000;
+    }
+
+    /**
+     * {&lt; at &gt;inheritDoc}
+     * 
+     * &lt; at &gt;see org.apache.cocoon.pipeline.caching.CacheKey#isValid(org.apache.cocoon.pipeline.caching.CacheKey)
+     */
+    public boolean isValid(CacheKey cacheKey) {
+        if (!(cacheKey instanceof ExpiresCacheKey)) {
+            return false;
+        }
+
+        ExpiresCacheKey other = (ExpiresCacheKey) cacheKey;
+
+        if (this.expirationTimestamp &gt; other.timestamp) {
+            return true;
+        }
+
+        return this.cacheKey.isValid(other.cacheKey);
+    }
+
+    /**
+     * {&lt; at &gt;inheritDoc}
+     * 
+     * &lt; at &gt;see org.apache.cocoon.pipeline.caching.CacheKey#getLastModified()
+     */
+    public long getLastModified() {
+        return this.cacheKey.getLastModified();
+    }
+
+    /**
+     * {&lt; at &gt;inheritDoc}
+     * 
+     * &lt; at &gt;see java.lang.Object#equals(java.lang.Object)
+     */
+    &lt; at &gt;Override
+    public boolean equals(Object obj) {
+        if (!(obj instanceof ExpiresCacheKey)) {
+            return false;
+        }
+
+        ExpiresCacheKey other = (ExpiresCacheKey) obj;
+        return this.cacheKey.equals(other.cacheKey);
+    }
+
+    /**
+     * {&lt; at &gt;inheritDoc}
+     * 
+     * &lt; at &gt;see java.lang.Object#hashCode()
+     */
+    &lt; at &gt;Override
+    public int hashCode() {
+        int result = 1;
+
+        result = 31 * result + this.getClass().hashCode();
+        result = 31 * result + this.cacheKey.hashCode();
+
+        return result;
+    }
+}
\ No newline at end of file

Propchange: cocoon/cocoon3/trunk/cocoon-pipeline/src/main/java/org/apache/cocoon/pipeline/caching/ExpiresCacheKey.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: cocoon/cocoon3/trunk/cocoon-pipeline/src/main/java/org/apache/cocoon/pipeline/caching/ExpiresCacheKey.java
------------------------------------------------------------------------------
    svn:keywords = Id

Propchange: cocoon/cocoon3/trunk/cocoon-pipeline/src/main/java/org/apache/cocoon/pipeline/caching/ExpiresCacheKey.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: cocoon/cocoon3/trunk/cocoon-pipeline/src/main/java/org/apache/cocoon/pipeline/caching/InvalidCacheKey.java
URL: http://svn.apache.org/viewvc/cocoon/cocoon3/trunk/cocoon-pipeline/src/main/java/org/apache/cocoon/pipeline/caching/InvalidCacheKey.java?rev=721690&amp;view=auto
==============================================================================
--- cocoon/cocoon3/trunk/cocoon-pipeline/src/main/java/org/apache/cocoon/pipeline/caching/InvalidCacheKey.java (added)
+++ cocoon/cocoon3/trunk/cocoon-pipeline/src/main/java/org/apache/cocoon/pipeline/caching/InvalidCacheKey.java Sat Nov 29 09:09:08 2008
&lt; at &gt;&lt; at &gt; -0,0 +1,40 &lt; at &gt;&lt; at &gt;
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.cocoon.pipeline.caching;
+
+public class InvalidCacheKey implements CacheKey {
+
+    private static final long serialVersionUID = 1L;
+
+    &lt; at &gt;Override
+    public boolean equals(Object obj) {
+        return obj instanceof InvalidCacheKey;
+    }
+
+    public long getLastModified() {
+        return -1;
+    }
+
+    &lt; at &gt;Override
+    public int hashCode() {
+        return InvalidCacheKey.class.hashCode();
+    }
+
+    public boolean isValid(CacheKey cacheKey) {
+        return false;
+    }
+}

Propchange: cocoon/cocoon3/trunk/cocoon-pipeline/src/main/java/org/apache/cocoon/pipeline/caching/InvalidCacheKey.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: cocoon/cocoon3/trunk/cocoon-pipeline/src/main/java/org/apache/cocoon/pipeline/caching/InvalidCacheKey.java
------------------------------------------------------------------------------
    svn:keywords = Id

Propchange: cocoon/cocoon3/trunk/cocoon-pipeline/src/main/java/org/apache/cocoon/pipeline/caching/InvalidCacheKey.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Copied: cocoon/cocoon3/trunk/cocoon-sample/src/main/java/org/apache/cocoon/sample/generation/CachingTimestampGenerator.java (from r721274, cocoon/cocoon3/trunk/cocoon-sample/src/main/java/org/apache/cocoon/sample/generation/TimestampGenerator.java)
URL: http://svn.apache.org/viewvc/cocoon/cocoon3/trunk/cocoon-sample/src/main/java/org/apache/cocoon/sample/generation/CachingTimestampGenerator.java?p2=cocoon/cocoon3/trunk/cocoon-sample/src/main/java/org/apache/cocoon/sample/generation/CachingTimestampGenerator.java&amp;p1=cocoon/cocoon3/trunk/cocoon-sample/src/main/java/org/apache/cocoon/sample/generation/TimestampGenerator.java&amp;r1=721274&amp;r2=721690&amp;rev=721690&amp;view=diff
==============================================================================
--- cocoon/cocoon3/trunk/cocoon-sample/src/main/java/org/apache/cocoon/sample/generation/TimestampGenerator.java (original)
+++ cocoon/cocoon3/trunk/cocoon-sample/src/main/java/org/apache/cocoon/sample/generation/CachingTimestampGenerator.java Sat Nov 29 09:09:08 2008
&lt; at &gt;&lt; at &gt; -16,34 +16,49 &lt; at &gt;&lt; at &gt;
  */
 package org.apache.cocoon.sample.generation;
 
-import org.apache.cocoon.pipeline.ProcessingException;
 import org.apache.cocoon.pipeline.caching.CacheKey;
-import org.apache.cocoon.pipeline.caching.SimpleCacheKey;
 import org.apache.cocoon.pipeline.component.CachingPipelineComponent;
-import org.apache.cocoon.pipeline.component.sax.AbstractGenerator;
-import org.apache.cocoon.pipeline.component.sax.XMLConsumer;
-import org.apache.cocoon.pipeline.util.ImmutableAttributesImpl;
-import org.xml.sax.SAXException;
-
-public class TimestampGenerator extends AbstractGenerator implements CachingPipelineComponent {
-
-    public void execute() {
-        XMLConsumer consumer = this.getXMLConsumer();
-        try {
-            consumer.startDocument();
-
-            consumer.startElement("", "timestamp", "timestamp", new ImmutableAttributesImpl());
-            String timestamp = Long.toString(System.currentTimeMillis());
-            consumer.characters(timestamp.toCharArray(), 0, timestamp.length());
-            consumer.endElement("", "timestamp", "timestamp");
-
-            consumer.endDocument();
-        } catch (SAXException e) {
-            throw new ProcessingException(e);
-        }
-    }
+
+public class CachingTimestampGenerator extends TimestampGenerator implements CachingPipelineComponent {
+
+    private static final int CACHING_PERIOD = 1500;
 
     public CacheKey constructCacheKey() {
-        return new SimpleCacheKey();
+        final long timestamp = System.currentTimeMillis() / CACHING_PERIOD * CACHING_PERIOD;
+
+        return new CacheKeyImplementation(timestamp);
+    }
+
+    private final class CacheKeyImplementation implements CacheKey {
+
+        private static final long serialVersionUID = 1L;
+        private final long timestamp;
+
+        private CacheKeyImplementation(long timestamp) {
+            this.timestamp = timestamp;
+        }
+
+        &lt; at &gt;Override
+        public boolean equals(Object obj) {
+            return obj instanceof CacheKeyImplementation;
+        }
+
+        public long getLastModified() {
+            return this.timestamp;
+        }
+
+        &lt; at &gt;Override
+        public int hashCode() {
+            return this.getClass().hashCode();
+        }
+
+        public boolean isValid(CacheKey other) {
+            if (other instanceof CacheKeyImplementation) {
+                CacheKeyImplementation otherCacheKey = (CacheKeyImplementation) other;
+                return otherCacheKey.timestamp == this.timestamp;
+            }
+
+            return false;
+        }
     }
 }

Propchange: cocoon/cocoon3/trunk/cocoon-sample/src/main/java/org/apache/cocoon/sample/generation/CachingTimestampGenerator.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: cocoon/cocoon3/trunk/cocoon-sample/src/main/java/org/apache/cocoon/sample/generation/CachingTimestampGenerator.java
------------------------------------------------------------------------------
    svn:keywords = Id

Propchange: cocoon/cocoon3/trunk/cocoon-sample/src/main/java/org/apache/cocoon/sample/generation/CachingTimestampGenerator.java
------------------------------------------------------------------------------
    svn:mergeinfo = 

Propchange: cocoon/cocoon3/trunk/cocoon-sample/src/main/java/org/apache/cocoon/sample/generation/CachingTimestampGenerator.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: cocoon/cocoon3/trunk/cocoon-sample/src/main/resources/COB-INF/overview.html
URL: http://svn.apache.org/viewvc/cocoon/cocoon3/trunk/cocoon-sample/src/main/resources/COB-INF/overview.html?rev=721690&amp;r1=721689&amp;r2=721690&amp;view=diff
==============================================================================
--- cocoon/cocoon3/trunk/cocoon-sample/src/main/resources/COB-INF/overview.html (original)
+++ cocoon/cocoon3/trunk/cocoon-sample/src/main/resources/COB-INF/overview.html Sat Nov 29 09:09:08 2008
&lt; at &gt;&lt; at &gt; -35,6 +35,13 &lt; at &gt;&lt; at &gt;
     &lt;li&gt;&lt;a href="sax-pipeline/simple-xsd"&gt;SAX Pipeline&lt;/a&gt;: Same as before but creates XML as output format after validating the input.&lt;/li&gt;
     &lt;li&gt;&lt;a href="sax-pipeline/unauthorized"&gt;Status code&lt;/a&gt;: Set status code '401' at pipeline.&lt;/li&gt;
   &lt;/ul&gt;
+  &lt;h2&gt;Caching&lt;/h2&gt;
+  &lt;ul&gt;
+  &lt;li&gt;&lt;a href="caching-pipeline/on"&gt;Caching pipeline&lt;/a&gt;: The result of the pipeline is cached forever.&lt;/li&gt;
+  &lt;li&gt;&lt;a href="caching-pipeline/off"&gt;Non-Caching pipeline&lt;/a&gt;: The pipeline doesn't cache (although it's components support it)&lt;/li&gt;
+  &lt;li&gt;&lt;a href="async-caching-pipeline/on"&gt;Async-Caching pipeline&lt;/a&gt;: &lt;/li&gt;
+  &lt;li&gt;&lt;a href="expires-caching-pipeline/on"&gt;Expires-Caching pipeline&lt;/a&gt;: The pipeline returns a cached result for defined period.&lt;/li&gt;
+  &lt;/ul&gt;
   &lt;h2&gt;Error handling&lt;/h2&gt;
   &lt;ul&gt;
     &lt;li&gt;&lt;a href="123456789123456789"&gt;ResourceNotFound&lt;/a&gt;: The error handler catches all exceptions, in this case no matcher matches.&lt;/li&gt;

Modified: cocoon/cocoon3/trunk/cocoon-sample/src/main/resources/COB-INF/sitemap.xmap
URL: http://svn.apache.org/viewvc/cocoon/cocoon3/trunk/cocoon-sample/src/main/resources/COB-INF/sitemap.xmap?rev=721690&amp;r1=721689&amp;r2=721690&amp;view=diff
==============================================================================
--- cocoon/cocoon3/trunk/cocoon-sample/src/main/resources/COB-INF/sitemap.xmap (original)
+++ cocoon/cocoon3/trunk/cocoon-sample/src/main/resources/COB-INF/sitemap.xmap Sat Nov 29 09:09:08 2008
&lt; at &gt;&lt; at &gt; -22,27 +22,6 &lt; at &gt;&lt; at &gt;
   xmlns:servlet="http://apache.org/cocoon/servlet" xmlns:controller="http://apache.org/cocoon/controller"&gt;
 
   &lt;map:pipelines&gt;
-  
-    &lt;!-- ~~~~~~~~~~~~~~~~ exemplary image pipelines ~~~~~~~~~~~~~~~ --&gt;
-    &lt;map:pipeline type="async-caching"&gt;
-      &lt;map:match pattern="images/simple"&gt;
-        &lt;map:generate src="images/simple.jpg" type="image" /&gt;
-        &lt;map:serialize type="image"&gt;
-          &lt;map:parameter name="format" value="jpg" /&gt;
-        &lt;/map:serialize&gt;
-      &lt;/map:match&gt;
-      &lt;map:match pattern="images/simple-gray"&gt;
-        &lt;map:generate src="images/simple.jpg" type="image" /&gt;
-        &lt;map:transform type="image-gray"&gt;
-          &lt;map:parameter name="brighten" value="true" /&gt;
-          &lt;map:parameter name="gray" value="10" /&gt;
-        &lt;/map:transform&gt;
-        &lt;map:serialize type="image"&gt;
-          &lt;map:parameter name="format" value="jpg" /&gt;
-        &lt;/map:serialize&gt;
-      &lt;/map:match&gt;
-    &lt;/map:pipeline&gt;
-
     &lt;!-- ~~~~~~~~~~~~~~~~ map:read ~~~~~~~~~~~~~~~ --&gt;
     &lt;map:pipeline&gt;
       &lt;map:match pattern=""&gt;
&lt; at &gt;&lt; at &gt; -96,17 +75,38 &lt; at &gt;&lt; at &gt;
     &lt;!-- ~~~~~~~~~~~~~~~~ caching of pipelines ~~~~~~~~~~~~~~~ --&gt;
     &lt;map:pipeline&gt;
       &lt;map:match pattern="caching-pipeline/on"&gt;
-        &lt;map:generate type="timestamp" /&gt;
+        &lt;map:generate type="timestamp-caching" /&gt;
+        &lt;map:serialize type="xml" /&gt;
+      &lt;/map:match&gt;
+    &lt;/map:pipeline&gt;
+    
+    &lt;map:pipeline type="async-caching"&gt;
+      &lt;map:match pattern="async-caching-pipeline/on"&gt;
+        &lt;map:generate type="timestamp-caching" /&gt;
         &lt;map:serialize type="xml" /&gt;
       &lt;/map:match&gt;
     &lt;/map:pipeline&gt;
 
     &lt;map:pipeline type="noncaching"&gt;
       &lt;map:match pattern="caching-pipeline/off"&gt;
-        &lt;map:generate type="timestamp" /&gt;
+        &lt;map:generate type="timestamp-caching" /&gt;
         &lt;map:serialize type="xml" /&gt;
       &lt;/map:match&gt;
     &lt;/map:pipeline&gt;
+    
+    &lt;map:pipeline expires="2"&gt;
+      &lt;map:match pattern="expires/caching-pipeline/on"&gt;
+        &lt;map:generate type="timestamp-noncaching" /&gt;
+        &lt;map:serialize type="xml" /&gt;
+      &lt;/map:match&gt;
+    &lt;/map:pipeline&gt;    
+    
+    &lt;map:pipeline type="async-caching" expires="2"&gt;
+      &lt;map:match pattern="expires/async-caching-pipeline/on"&gt;
+        &lt;map:generate type="timestamp-noncaching" /&gt;
+        &lt;map:serialize type="xml" /&gt;
+      &lt;/map:match&gt;
+    &lt;/map:pipeline&gt;    
 
     &lt;!-- ~~~~~~~~~~~~~~~~ servlet service framework ~~~~~~~~~~~~~~~ --&gt;
     &lt;map:pipeline&gt;

Modified: cocoon/cocoon3/trunk/cocoon-sample/src/main/resources/META-INF/cocoon/spring/cocoon-sample-sitemap-components.xml
URL: http://svn.apache.org/viewvc/cocoon/cocoon3/trunk/cocoon-sample/src/main/resources/META-INF/cocoon/spring/cocoon-sample-sitemap-components.xml?rev=721690&amp;r1=721689&amp;r2=721690&amp;view=diff
==============================================================================
--- cocoon/cocoon3/trunk/cocoon-sample/src/main/resources/META-INF/cocoon/spring/cocoon-sample-sitemap-components.xml (original)
+++ cocoon/cocoon3/trunk/cocoon-sample/src/main/resources/META-INF/cocoon/spring/cocoon-sample-sitemap-components.xml Sat Nov 29 09:09:08 2008
&lt; at &gt;&lt; at &gt; -23,6 +23,7 &lt; at &gt;&lt; at &gt;
 
   &lt;bean name="action:error-throwing" class="org.apache.cocoon.sample.action.ErrorThrowingAction" scope="prototype" /&gt;
   
-  &lt;bean name="generator:timestamp" class="org.apache.cocoon.sample.generation.TimestampGenerator" scope="prototype" /&gt;
+  &lt;bean name="generator:timestamp-caching" class="org.apache.cocoon.sample.generation.CachingTimestampGenerator" scope="prototype" /&gt;
   
+  &lt;bean name="generator:timestamp-noncaching" class="org.apache.cocoon.sample.generation.TimestampGenerator" scope="prototype" /&gt;
 &lt;/beans&gt;

Modified: cocoon/cocoon3/trunk/cocoon-sitemap/src/main/java/org/apache/cocoon/sitemap/Invocation.java
URL: http://svn.apache.org/viewvc/cocoon/cocoon3/trunk/cocoon-sitemap/src/main/java/org/apache/cocoon/sitemap/Invocation.java?rev=721690&amp;r1=721689&amp;r2=721690&amp;view=diff
==============================================================================
--- cocoon/cocoon3/trunk/cocoon-sitemap/src/main/java/org/apache/cocoon/sitemap/Invocation.java (original)
+++ cocoon/cocoon3/trunk/cocoon-sitemap/src/main/java/org/apache/cocoon/sitemap/Invocation.java Sat Nov 29 09:09:08 2008
&lt; at &gt;&lt; at &gt; -42,7 +42,7 &lt; at &gt;&lt; at &gt;
 
     void installComponent(String type, Map&lt;String, ? extends Object&gt; parameters);
 
-    void installPipeline(String type);
+    void installPipeline(String type, Map&lt;String, ? extends Object&gt; parameters);
 
     boolean isErrorInvocation();
 

Modified: cocoon/cocoon3/trunk/cocoon-sitemap/src/main/java/org/apache/cocoon/sitemap/InvocationImpl.java
URL: http://svn.apache.org/viewvc/cocoon/cocoon3/trunk/cocoon-sitemap/src/main/java/org/apache/cocoon/sitemap/InvocationImpl.java?rev=721690&amp;r1=721689&amp;r2=721690&amp;view=diff
==============================================================================
--- cocoon/cocoon3/trunk/cocoon-sitemap/src/main/java/org/apache/cocoon/sitemap/InvocationImpl.java (original)
+++ cocoon/cocoon3/trunk/cocoon-sitemap/src/main/java/org/apache/cocoon/sitemap/InvocationImpl.java Sat Nov 29 09:09:08 2008
&lt; at &gt;&lt; at &gt; -229,10 +229,12 &lt; at &gt;&lt; at &gt;
     /**
      * {&lt; at &gt;inheritDoc}
      * 
-     * &lt; at &gt;see org.apache.cocoon.sitemap.Invocation#installPipeline(java.lang.String)
+     * &lt; at &gt;see org.apache.cocoon.sitemap.Invocation#installPipeline(java.lang.String, java.util.Map)
      */
-    public void installPipeline(String type) {
+    public void installPipeline(String type, Map&lt;String, ? extends Object&gt; componentParameters) {
         this.pipeline = this.componentProvider.createPipeline(type);
+        Map&lt;String, ? extends Object&gt; resolvedParameters = this.resolveParameters(componentParameters);
+        this.pipeline.setConfiguration(resolvedParameters);
     }
 
     /**

Modified: cocoon/cocoon3/trunk/cocoon-sitemap/src/main/java/org/apache/cocoon/sitemap/node/PipelineNode.java
URL: http://svn.apache.org/viewvc/cocoon/cocoon3/trunk/cocoon-sitemap/src/main/java/org/apache/cocoon/sitemap/node/PipelineNode.java?rev=721690&amp;r1=721689&amp;r2=721690&amp;view=diff
==============================================================================
--- cocoon/cocoon3/trunk/cocoon-sitemap/src/main/java/org/apache/cocoon/sitemap/node/PipelineNode.java (original)
+++ cocoon/cocoon3/trunk/cocoon-sitemap/src/main/java/org/apache/cocoon/sitemap/node/PipelineNode.java Sat Nov 29 09:09:08 2008
&lt; at &gt;&lt; at &gt; -92,6 +92,6 &lt; at &gt;&lt; at &gt;
     }
 
     protected void installPipeline(Invocation invocation) {
-        invocation.installPipeline(PIPELINE_CATEGORY + this.type);
+        invocation.installPipeline(PIPELINE_CATEGORY + this.type, this.getParameters());
     }
 }



</description>
    <dc:creator>reinhard&lt; at &gt;apache.org</dc:creator>
    <dc:date>2008-11-29T17:09:09</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.text.xml.cocoon.cvs/27588">
    <title>svn commit: r721689 - in /cocoon/cocoon3/trunk: parent/pom.xml pom.xml</title>
    <link>http://permalink.gmane.org/gmane.text.xml.cocoon.cvs/27588</link>
    <description>Author: reinhard
Date: Sat Nov 29 09:02:10 2008
New Revision: 721689

URL: http://svn.apache.org/viewvc?rev=721689&amp;view=rev
Log:
set version of idea and eclipse plugins in the root POM

Modified:
    cocoon/cocoon3/trunk/parent/pom.xml
    cocoon/cocoon3/trunk/pom.xml

Modified: cocoon/cocoon3/trunk/parent/pom.xml
URL: http://svn.apache.org/viewvc/cocoon/cocoon3/trunk/parent/pom.xml?rev=721689&amp;r1=721688&amp;r2=721689&amp;view=diff
==============================================================================
--- cocoon/cocoon3/trunk/parent/pom.xml (original)
+++ cocoon/cocoon3/trunk/parent/pom.xml Sat Nov 29 09:02:10 2008
&lt; at &gt;&lt; at &gt; -375,10 +375,6 &lt; at &gt;&lt; at &gt;
           &lt;version&gt;1.0.0-M3&lt;/version&gt;
         &lt;/plugin&gt;
         &lt;plugin&gt;
-          &lt;artifactId&gt;maven-eclipse-plugin&lt;/artifactId&gt;
-          &lt;version&gt;2.5&lt;/version&gt;
-        &lt;/plugin&gt;
-        &lt;plugin&gt;
           &lt;artifactId&gt;maven-war-plugin&lt;/artifactId&gt;
           &lt;version&gt;2.1-alpha-2&lt;/version&gt;
         &lt;/plugin&gt;

Modified: cocoon/cocoon3/trunk/pom.xml
URL: http://svn.apache.org/viewvc/cocoon/cocoon3/trunk/pom.xml?rev=721689&amp;r1=721688&amp;r2=721689&amp;view=diff
==============================================================================
--- cocoon/cocoon3/trunk/pom.xml (original)
+++ cocoon/cocoon3/trunk/pom.xml Sat Nov 29 09:02:10 2008
&lt; at &gt;&lt; at &gt; -50,6 +50,14 &lt; at &gt;&lt; at &gt;
         &lt;configuration&gt;
           &lt;tagBase&gt;https://svn.apache.org/repos/asf/cocoon/cocoon3/tags/${project.artifactId}&lt;/tagBase&gt;
         &lt;/configuration&gt;
+      &lt;/plugin&gt; 
+      &lt;plugin&gt;
+        &lt;artifactId&gt;maven-eclipse-plugin&lt;/artifactId&gt;
+        &lt;version&gt;2.5.1&lt;/version&gt;
+      &lt;/plugin&gt;
+      &lt;plugin&gt;
+        &lt;artifactId&gt;maven-idea-plugin&lt;/artifactId&gt;
+        &lt;version&gt;2.2&lt;/version&gt;
       &lt;/plugin&gt;      
     &lt;/plugins&gt;
   &lt;/build&gt;



</description>
    <dc:creator>reinhard&lt; at &gt;apache.org</dc:creator>
    <dc:date>2008-11-29T17:02:10</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.text.xml.cocoon.cvs/27587">
    <title>svn commit: r721305 - /cocoon/cocoon3/trunk/README.txt</title>
    <link>http://permalink.gmane.org/gmane.text.xml.cocoon.cvs/27587</link>
    <description>Author: reinhard
Date: Thu Nov 27 14:22:44 2008
New Revision: 721305

URL: http://svn.apache.org/viewvc?rev=721305&amp;view=rev
Log:
update build instructions after recent changes in POM structure

Modified:
    cocoon/cocoon3/trunk/README.txt

Modified: cocoon/cocoon3/trunk/README.txt
URL: http://svn.apache.org/viewvc/cocoon/cocoon3/trunk/README.txt?rev=721305&amp;r1=721304&amp;r2=721305&amp;view=diff
==============================================================================
--- cocoon/cocoon3/trunk/README.txt (original)
+++ cocoon/cocoon3/trunk/README.txt Thu Nov 27 14:22:44 2008
&lt; at &gt;&lt; at &gt; -6,11 +6,7 &lt; at &gt;&lt; at &gt;
 
 HOW TO BUILD COCOON 3
 ---------------------
-To build Cocoon 3, move into the ./parent directory
-
- cd ./parent
-
-and use following command
+To build Cocoon 3 use following command
 
  mvn install
 
&lt; at &gt;&lt; at &gt; -42,7 +38,7 &lt; at &gt;&lt; at &gt;
 
 HOW TO DEVELOP COCOON 3 
 -----------------------
-Move into ./parent and use on of the following commands:
+Depending on what IDE you use, use one of the following commands:
 
   mvn eclipse:eclipse -P all
   mvn idea:idea -P all
&lt; at &gt;&lt; at &gt; -74,7 +70,7 &lt; at &gt;&lt; at &gt;
 
 HOW TO RUN ALL TESTS IN ONE GO
 ------------------------------
-Move into ./parent and use the following command:
+Use the following command:
 
  mvn clean install -P it -Dhtmlunit.base-url=http://localhost:8888
 



</description>
    <dc:creator>reinhard&lt; at &gt;apache.org</dc:creator>
    <dc:date>2008-11-27T22:22:44</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.text.xml.cocoon.cvs/27586">
    <title>svn commit: r721302 - /cocoon/cocoon3/trunk/svn-release-tags.bat</title>
    <link>http://permalink.gmane.org/gmane.text.xml.cocoon.cvs/27586</link>
    <description>Author: reinhard
Date: Thu Nov 27 14:15:01 2008
New Revision: 721302

URL: http://svn.apache.org/viewvc?rev=721302&amp;view=rev
Log:
needed in the future

Modified:
    cocoon/cocoon3/trunk/svn-release-tags.bat

Modified: cocoon/cocoon3/trunk/svn-release-tags.bat
URL: http://svn.apache.org/viewvc/cocoon/cocoon3/trunk/svn-release-tags.bat?rev=721302&amp;r1=721301&amp;r2=721302&amp;view=diff
==============================================================================
--- cocoon/cocoon3/trunk/svn-release-tags.bat (original)
+++ cocoon/cocoon3/trunk/svn-release-tags.bat Thu Nov 27 14:15:01 2008
&lt; at &gt;&lt; at &gt; -24,7 +24,7 &lt; at &gt;&lt; at &gt;
 
 echo on
 
-REM svn cp https://svn.apache.org/repos/asf/cocoon/cocoon3/tags/cocoon-root/cocoon-root-%1/cocoon-archetype-block/ https://svn.apache.org/repos/asf/cocoon/cocoon3/tags/cocoon-archetype-block/cocoon-archetype-block-%1/ -m "add tag for modules released during multi-pom process"
+svn cp https://svn.apache.org/repos/asf/cocoon/cocoon3/tags/cocoon-root/cocoon-root-%1/cocoon-archetype-block/ https://svn.apache.org/repos/asf/cocoon/cocoon3/tags/cocoon-archetype-block/cocoon-archetype-block-%1/ -m "add tag for modules released during multi-pom process"
 
 svn cp https://svn.apache.org/repos/asf/cocoon/cocoon3/tags/cocoon-root/cocoon-root-%1/cocoon-archetype-parent/ https://svn.apache.org/repos/asf/cocoon/cocoon3/tags/cocoon-archetype-parent/cocoon-archetype-parent-%1/ -m "add tag for modules released during multi-pom process"
 



</description>
    <dc:creator>reinhard&lt; at &gt;apache.org</dc:creator>
    <dc:date>2008-11-27T22:15:01</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.text.xml.cocoon.cvs/27585">
    <title>svn commit: r721301 - /cocoon/cocoon3/trunk/svn-release-tags.bat</title>
    <link>http://permalink.gmane.org/gmane.text.xml.cocoon.cvs/27585</link>
    <description>Author: reinhard
Date: Thu Nov 27 14:10:47 2008
New Revision: 721301

URL: http://svn.apache.org/viewvc?rev=721301&amp;view=rev
Log:
add a batch script to create release tags

Added:
    cocoon/cocoon3/trunk/svn-release-tags.bat   (with props)

Added: cocoon/cocoon3/trunk/svn-release-tags.bat
URL: http://svn.apache.org/viewvc/cocoon/cocoon3/trunk/svn-release-tags.bat?rev=721301&amp;view=auto
==============================================================================
--- cocoon/cocoon3/trunk/svn-release-tags.bat (added)
+++ cocoon/cocoon3/trunk/svn-release-tags.bat Thu Nov 27 14:10:47 2008
&lt; at &gt;&lt; at &gt; -0,0 +1,47 &lt; at &gt;&lt; at &gt;
+&lt; at &gt;echo off
+rem  Licensed to the Apache Software Foundation (ASF) under one or more
+rem  contributor license agreements.  See the NOTICE file distributed with
+rem  this work for additional information regarding copyright ownership.
+rem  The ASF licenses this file to You under the Apache License, Version 2.0
+rem  (the "License"); you may not use this file except in compliance with
+rem  the License.  You may obtain a copy of the License at
+rem
+rem      http://www.apache.org/licenses/LICENSE-2.0
+rem
+rem  Unless required by applicable law or agreed to in writing, software
+rem  distributed under the License is distributed on an "AS IS" BASIS,
+rem  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+rem  See the License for the specific language governing permissions and
+rem  limitations under the License.
+
+
+REM  This script is necessary because an aggregated release doesn't create proper SVN tags.
+REM  Using search'n'replace of your favorite text editor should make it simple to reuse the script
+REM  for future releases.
+REM
+REM  Take care that this list is complete for your release of the core-modules. It might happen that
+REM  new modules were added!
+
+echo on
+
+REM svn cp https://svn.apache.org/repos/asf/cocoon/cocoon3/tags/cocoon-root/cocoon-root-%1/cocoon-archetype-block/ https://svn.apache.org/repos/asf/cocoon/cocoon3/tags/cocoon-archetype-block/cocoon-archetype-block-%1/ -m "add tag for modules released during multi-pom process"
+
+svn cp https://svn.apache.org/repos/asf/cocoon/cocoon3/tags/cocoon-root/cocoon-root-%1/cocoon-archetype-parent/ https://svn.apache.org/repos/asf/cocoon/cocoon3/tags/cocoon-archetype-parent/cocoon-archetype-parent-%1/ -m "add tag for modules released during multi-pom process"
+
+svn cp https://svn.apache.org/repos/asf/cocoon/cocoon3/tags/cocoon-root/cocoon-root-%1/cocoon-archetype-sample/ https://svn.apache.org/repos/asf/cocoon/cocoon3/tags/cocoon-archetype-sample/cocoon-archetype-sample-%1/ -m "add tag for modules released during multi-pom process"
+
+svn cp https://svn.apache.org/repos/asf/cocoon/cocoon3/tags/cocoon-root/cocoon-root-%1/cocoon-archetype-webapp/ https://svn.apache.org/repos/asf/cocoon/cocoon3/tags/cocoon-archetype-webapp/cocoon-archetype-webapp-%1/ -m "add tag for modules released during multi-pom process"
+
+svn cp https://svn.apache.org/repos/asf/cocoon/cocoon3/tags/cocoon-root/cocoon-root-%1/cocoon-controller/ https://svn.apache.org/repos/asf/cocoon/cocoon3/tags/cocoon-controller/cocoon-controller-%1/ -m "add tag for modules released during multi-pom process"
+
+svn cp https://svn.apache.org/repos/asf/cocoon/cocoon3/tags/cocoon-root/cocoon-root-%1/cocoon-optional/ https://svn.apache.org/repos/asf/cocoon/cocoon3/tags/cocoon-optional/cocoon-optional-%1/ -m "add tag for modules released during multi-pom process"
+
+svn cp https://svn.apache.org/repos/asf/cocoon/cocoon3/tags/cocoon-root/cocoon-root-%1/cocoon-rest/ https://svn.apache.org/repos/asf/cocoon/cocoon3/tags/cocoon-rest/cocoon-rest-%1/ -m "add tag for modules released during multi-pom process"
+
+svn cp https://svn.apache.org/repos/asf/cocoon/cocoon3/tags/cocoon-root/cocoon-root-%1/cocoon-sample/ https://svn.apache.org/repos/asf/cocoon/cocoon3/tags/cocoon-sample/cocoon-sample-%1/ -m "add tag for modules released during multi-pom process"
+
+svn cp https://svn.apache.org/repos/asf/cocoon/cocoon3/tags/cocoon-root/cocoon-root-%1/cocoon-servlet/ https://svn.apache.org/repos/asf/cocoon/cocoon3/tags/cocoon-servlet/cocoon-servlet-%1/ -m "add tag for modules released during multi-pom process"
+
+svn cp https://svn.apache.org/repos/asf/cocoon/cocoon3/tags/cocoon-root/cocoon-root-%1/cocoon-sitemap/ https://svn.apache.org/repos/asf/cocoon/cocoon3/tags/cocoon-sitemap/cocoon-sitemap-%1/ -m "add tag for modules released during multi-pom process"
+
+svn cp https://svn.apache.org/repos/asf/cocoon/cocoon3/tags/cocoon-root/cocoon-root-%1/cocoon-stringtemplate/ https://svn.apache.org/repos/asf/cocoon/cocoon3/tags/cocoon-stringtemplate/cocoon-stringtemplate-%1/ -m "add tag for modules released during multi-pom process"

Propchange: cocoon/cocoon3/trunk/svn-release-tags.bat
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: cocoon/cocoon3/trunk/svn-release-tags.bat
------------------------------------------------------------------------------
    svn:mime-type = text/plain



</description>
    <dc:creator>reinhard&lt; at &gt;apache.org</dc:creator>
    <dc:date>2008-11-27T22:10:48</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.text.xml.cocoon.cvs/27584">
    <title>svn commit: r721300 - /cocoon/cocoon3/tags/cocoon-sample/cocoon-sample-3.0.0-alpha-1/</title>
    <link>http://permalink.gmane.org/gmane.text.xml.cocoon.cvs/27584</link>
    <description>Author: reinhard
Date: Thu Nov 27 14:09:10 2008
New Revision: 721300

URL: http://svn.apache.org/viewvc?rev=721300&amp;view=rev
Log:
add tag for modules released during multi-pom process

Added:
    cocoon/cocoon3/tags/cocoon-sample/cocoon-sample-3.0.0-alpha-1/   (props changed)
      - copied from r721299, cocoon/cocoon3/tags/cocoon-root/cocoon-root-3.0.0-alpha-1/cocoon-sample/

Propchange: cocoon/cocoon3/tags/cocoon-sample/cocoon-sample-3.0.0-alpha-1/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Thu Nov 27 14:09:10 2008
&lt; at &gt;&lt; at &gt; -0,0 +1,5 &lt; at &gt;&lt; at &gt;
+.settings
+target
+.classpath
+.project
+rcl-config

Propchange: cocoon/cocoon3/tags/cocoon-sample/cocoon-sample-3.0.0-alpha-1/
------------------------------------------------------------------------------
    svn:mergeinfo = 



</description>
    <dc:creator>reinhard&lt; at &gt;apache.org</dc:creator>
    <dc:date>2008-11-27T22:09:10</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.text.xml.cocoon.cvs/27583">
    <title>svn commit: r721299 - /cocoon/cocoon3/tags/cocoon-sample/</title>
    <link>http://permalink.gmane.org/gmane.text.xml.cocoon.cvs/27583</link>
    <description>Author: reinhard
Date: Thu Nov 27 14:07:50 2008
New Revision: 721299

URL: http://svn.apache.org/viewvc?rev=721299&amp;view=rev
Log:
create release tag directory

Added:
    cocoon/cocoon3/tags/cocoon-sample/


</description>
    <dc:creator>reinhard&lt; at &gt;apache.org</dc:creator>
    <dc:date>2008-11-27T22:07:50</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.text.xml.cocoon.cvs/27582">
    <title>svn commit: r721296 - /cocoon/cocoon3/tags/cocoon-sitemap/cocoon-sitemap-3.0.0-alpha-1/</title>
    <link>http://permalink.gmane.org/gmane.text.xml.cocoon.cvs/27582</link>
    <description>Author: reinhard
Date: Thu Nov 27 14:01:54 2008
New Revision: 721296

URL: http://svn.apache.org/viewvc?rev=721296&amp;view=rev
Log:
add tag for modules released during multi-pom process

Added:
    cocoon/cocoon3/tags/cocoon-sitemap/cocoon-sitemap-3.0.0-alpha-1/   (props changed)
      - copied from r721295, cocoon/cocoon3/tags/cocoon-root/cocoon-root-3.0.0-alpha-1/cocoon-sitemap/

Propchange: cocoon/cocoon3/tags/cocoon-sitemap/cocoon-sitemap-3.0.0-alpha-1/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Thu Nov 27 14:01:54 2008
&lt; at &gt;&lt; at &gt; -0,0 +1,4 &lt; at &gt;&lt; at &gt;
+target
+.classpath
+.project
+.settings

Propchange: cocoon/cocoon3/tags/cocoon-sitemap/cocoon-sitemap-3.0.0-alpha-1/
------------------------------------------------------------------------------
    svn:mergeinfo = 



</description>
    <dc:creator>reinhard&lt; at &gt;apache.org</dc:creator>
    <dc:date>2008-11-27T22:01:54</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.text.xml.cocoon.cvs/27581">
    <title>svn commit: r721297 - /cocoon/cocoon3/tags/cocoon-stringtemplate/cocoon-stringtemplate-3.0.0-alpha-1/</title>
    <link>http://permalink.gmane.org/gmane.text.xml.cocoon.cvs/27581</link>
    <description>Author: reinhard
Date: Thu Nov 27 14:02:05 2008
New Revision: 721297

URL: http://svn.apache.org/viewvc?rev=721297&amp;view=rev
Log:
add tag for modules released during multi-pom process

Added:
    cocoon/cocoon3/tags/cocoon-stringtemplate/cocoon-stringtemplate-3.0.0-alpha-1/   (props changed)
      - copied from r721296, cocoon/cocoon3/tags/cocoon-root/cocoon-root-3.0.0-alpha-1/cocoon-stringtemplate/

Propchange: cocoon/cocoon3/tags/cocoon-stringtemplate/cocoon-stringtemplate-3.0.0-alpha-1/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Thu Nov 27 14:02:05 2008
&lt; at &gt;&lt; at &gt; -0,0 +1,4 &lt; at &gt;&lt; at &gt;
+.settings
+target
+.classpath
+.project

Propchange: cocoon/cocoon3/tags/cocoon-stringtemplate/cocoon-stringtemplate-3.0.0-alpha-1/
------------------------------------------------------------------------------
    svn:mergeinfo = 



</description>
    <dc:creator>reinhard&lt; at &gt;apache.org</dc:creator>
    <dc:date>2008-11-27T22:02:05</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.text.xml.cocoon.cvs/27580">
    <title>svn commit: r721295 - /cocoon/cocoon3/tags/cocoon-servlet/cocoon-servlet-3.0.0-alpha-1/</title>
    <link>http://permalink.gmane.org/gmane.text.xml.cocoon.cvs/27580</link>
    <description>Author: reinhard
Date: Thu Nov 27 14:01:43 2008
New Revision: 721295

URL: http://svn.apache.org/viewvc?rev=721295&amp;view=rev
Log:
add tag for modules released during multi-pom process

Added:
    cocoon/cocoon3/tags/cocoon-servlet/cocoon-servlet-3.0.0-alpha-1/   (props changed)
      - copied from r721294, cocoon/cocoon3/tags/cocoon-root/cocoon-root-3.0.0-alpha-1/cocoon-servlet/

Propchange: cocoon/cocoon3/tags/cocoon-servlet/cocoon-servlet-3.0.0-alpha-1/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Thu Nov 27 14:01:43 2008
&lt; at &gt;&lt; at &gt; -0,0 +1,4 &lt; at &gt;&lt; at &gt;
+.settings
+target
+.classpath
+.project

Propchange: cocoon/cocoon3/tags/cocoon-servlet/cocoon-servlet-3.0.0-alpha-1/
------------------------------------------------------------------------------
    svn:mergeinfo = 



</description>
    <dc:creator>reinhard&lt; at &gt;apache.org</dc:creator>
    <dc:date>2008-11-27T22:01:43</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.text.xml.cocoon.cvs/27579">
    <title>svn commit: r721294 - /cocoon/cocoon3/tags/cocoon-controller/cocoon-controller-3.0.0-alpha-1/</title>
    <link>http://permalink.gmane.org/gmane.text.xml.cocoon.cvs/27579</link>
    <description>Author: reinhard
Date: Thu Nov 27 14:00:55 2008
New Revision: 721294

URL: http://svn.apache.org/viewvc?rev=721294&amp;view=rev
Log:
add tag for modules released during multi-pom process

Added:
    cocoon/cocoon3/tags/cocoon-controller/cocoon-controller-3.0.0-alpha-1/   (props changed)
      - copied from r721293, cocoon/cocoon3/tags/cocoon-root/cocoon-root-3.0.0-alpha-1/cocoon-controller/

Propchange: cocoon/cocoon3/tags/cocoon-controller/cocoon-controller-3.0.0-alpha-1/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Thu Nov 27 14:00:55 2008
&lt; at &gt;&lt; at &gt; -0,0 +1,4 &lt; at &gt;&lt; at &gt;
+.settings
+target
+.classpath
+.project

Propchange: cocoon/cocoon3/tags/cocoon-controller/cocoon-controller-3.0.0-alpha-1/
------------------------------------------------------------------------------
    svn:mergeinfo = 



</description>
    <dc:creator>reinhard&lt; at &gt;apache.org</dc:creator>
    <dc:date>2008-11-27T22:00:56</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.text.xml.cocoon.cvs/27578">
    <title>svn commit: r721293 - /cocoon/cocoon3/tags/cocoon-archetype-webapp/cocoon-archetype-webapp-3.0.0-alpha-1/</title>
    <link>http://permalink.gmane.org/gmane.text.xml.cocoon.cvs/27578</link>
    <description>Author: reinhard
Date: Thu Nov 27 14:00:44 2008
New Revision: 721293

URL: http://svn.apache.org/viewvc?rev=721293&amp;view=rev
Log:
add tag for modules released during multi-pom process

Added:
    cocoon/cocoon3/tags/cocoon-archetype-webapp/cocoon-archetype-webapp-3.0.0-alpha-1/
      - copied from r721292, cocoon/cocoon3/tags/cocoon-root/cocoon-root-3.0.0-alpha-1/cocoon-archetype-webapp/


</description>
    <dc:creator>reinhard&lt; at &gt;apache.org</dc:creator>
    <dc:date>2008-11-27T22:00:44</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.text.xml.cocoon.cvs/27577">
    <title>svn commit: r721292 - /cocoon/cocoon3/tags/cocoon-archetype-sample/cocoon-archetype-sample-3.0.0-alpha-1/</title>
    <link>http://permalink.gmane.org/gmane.text.xml.cocoon.cvs/27577</link>
    <description>Author: reinhard
Date: Thu Nov 27 14:00:32 2008
New Revision: 721292

URL: http://svn.apache.org/viewvc?rev=721292&amp;view=rev
Log:
add tag for modules released during multi-pom process

Added:
    cocoon/cocoon3/tags/cocoon-archetype-sample/cocoon-archetype-sample-3.0.0-alpha-1/
      - copied from r721291, cocoon/cocoon3/tags/cocoon-root/cocoon-root-3.0.0-alpha-1/cocoon-archetype-sample/


</description>
    <dc:creator>reinhard&lt; at &gt;apache.org</dc:creator>
    <dc:date>2008-11-27T22:00:33</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.text.xml.cocoon.cvs/27576">
    <title>svn commit: r721291 - /cocoon/cocoon3/tags/cocoon-archetype-parent/cocoon-archetype-parent-3.0.0-alpha-1/</title>
    <link>http://permalink.gmane.org/gmane.text.xml.cocoon.cvs/27576</link>
    <description>Author: reinhard
Date: Thu Nov 27 14:00:21 2008
New Revision: 721291

URL: http://svn.apache.org/viewvc?rev=721291&amp;view=rev
Log:
add tag for modules released during multi-pom process

Added:
    cocoon/cocoon3/tags/cocoon-archetype-parent/cocoon-archetype-parent-3.0.0-alpha-1/
      - copied from r721290, cocoon/cocoon3/tags/cocoon-root/cocoon-root-3.0.0-alpha-1/cocoon-archetype-parent/


</description>
    <dc:creator>reinhard&lt; at &gt;apache.org</dc:creator>
    <dc:date>2008-11-27T22:00:21</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.text.xml.cocoon.cvs/27575">
    <title>svn commit: r721290 - in /cocoon/cocoon3/tags/cocoon-archetype-block: cocoon-archetype-block-3.0.0-alpha-1/ cocoon-archetype-block-alpha-1/</title>
    <link>http://permalink.gmane.org/gmane.text.xml.cocoon.cvs/27575</link>
    <description>Author: reinhard
Date: Thu Nov 27 13:59:37 2008
New Revision: 721290

URL: http://svn.apache.org/viewvc?rev=721290&amp;view=rev
Log:
full version number

Added:
    cocoon/cocoon3/tags/cocoon-archetype-block/cocoon-archetype-block-3.0.0-alpha-1/
      - copied from r721289, cocoon/cocoon3/tags/cocoon-archetype-block/cocoon-archetype-block-alpha-1/
Removed:
    cocoon/cocoon3/tags/cocoon-archetype-block/cocoon-archetype-block-alpha-1/


</description>
    <dc:creator>reinhard&lt; at &gt;apache.org</dc:creator>
    <dc:date>2008-11-27T21:59:37</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.text.xml.cocoon.cvs/27574">
    <title>svn commit: r721285 - /cocoon/cocoon3/tags/cocoon-archetype-block/cocoon-archetype-block-alpha-1/</title>
    <link>http://permalink.gmane.org/gmane.text.xml.cocoon.cvs/27574</link>
    <description>Author: reinhard
Date: Thu Nov 27 13:39:58 2008
New Revision: 721285

URL: http://svn.apache.org/viewvc?rev=721285&amp;view=rev
Log:
add tag for modules released during multi-pom process

Added:
    cocoon/cocoon3/tags/cocoon-archetype-block/cocoon-archetype-block-alpha-1/
      - copied from r721284, cocoon/cocoon3/tags/cocoon-root/cocoon-root-3.0.0-alpha-1/cocoon-archetype-block/


</description>
    <dc:creator>reinhard&lt; at &gt;apache.org</dc:creator>
    <dc:date>2008-11-27T21:39:58</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.text.xml.cocoon.cvs/27573">
    <title>svn commit: r721280 - /cocoon/cocoon3/trunk/RELEASE_HOWTO.txt</title>
    <link>http://permalink.gmane.org/gmane.text.xml.cocoon.cvs/27573</link>
    <description>Author: reinhard
Date: Thu Nov 27 13:10:24 2008
New Revision: 721280

URL: http://svn.apache.org/viewvc?rev=721280&amp;view=rev
Log:
update information about creating release artifacts

Modified:
    cocoon/cocoon3/trunk/RELEASE_HOWTO.txt

Modified: cocoon/cocoon3/trunk/RELEASE_HOWTO.txt
URL: http://svn.apache.org/viewvc/cocoon/cocoon3/trunk/RELEASE_HOWTO.txt?rev=721280&amp;r1=721279&amp;r2=721280&amp;view=diff
==============================================================================
--- cocoon/cocoon3/trunk/RELEASE_HOWTO.txt (original)
+++ cocoon/cocoon3/trunk/RELEASE_HOWTO.txt Thu Nov 27 13:10:24 2008
&lt; at &gt;&lt; at &gt; -5,9 +5,6 &lt; at &gt;&lt; at &gt;
 
 * update src/main/changes/changes.xml and src/main/site/apt/download.apt in the 'cocoon-docs' module
 * go to the 'cocoon-docs' module and run 'mvn site'
-
-* rename trunk/release.pom.xml to trunk/pom.xml
-* comment modules section in parent/pom.xml
 * set all versions in the generated pom.xml files of all archetypes
  
 * mvn release:perform -Darguments="-Dgpg.passphrase='[secret passphrase]' -P release" -P release
&lt; at &gt;&lt; at &gt; -16,7 +13,6 &lt; at &gt;&lt; at &gt;
 * tag all modules manually (should write some script for that purpose)
 * set all versions in the genreated pom.xml files of all archetypes back to SNAPSHOT
 * update &lt;parent&gt; sections of unreleased modules (cocoon-docs, cocoon-sample-webapp)
-* rename /pom.xml to release.pom.xml
 
 HOWTO RELEASE COCOON 3: After a successful vote
 -----------------------------------------------



</description>
    <dc:creator>reinhard&lt; at &gt;apache.org</dc:creator>
    <dc:date>2008-11-27T21:10:25</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.text.xml.cocoon.cvs/27572">
    <title>svn commit: r721276 - in /cocoon/cocoon3/trunk: parent/pom.xml pom.xml release.pom.xml</title>
    <link>http://permalink.gmane.org/gmane.text.xml.cocoon.cvs/27572</link>
    <description>Author: reinhard
Date: Thu Nov 27 12:55:10 2008
New Revision: 721276

URL: http://svn.apache.org/viewvc?rev=721276&amp;view=rev
Log:
reintroduce a root pom

Added:
    cocoon/cocoon3/trunk/pom.xml
      - copied, changed from r701954, cocoon/cocoon3/trunk/release.pom.xml
Removed:
    cocoon/cocoon3/trunk/release.pom.xml
Modified:
    cocoon/cocoon3/trunk/parent/pom.xml

Modified: cocoon/cocoon3/trunk/parent/pom.xml
URL: http://svn.apache.org/viewvc/cocoon/cocoon3/trunk/parent/pom.xml?rev=721276&amp;r1=721275&amp;r2=721276&amp;view=diff
==============================================================================
--- cocoon/cocoon3/trunk/parent/pom.xml (original)
+++ cocoon/cocoon3/trunk/parent/pom.xml Thu Nov 27 12:55:10 2008
&lt; at &gt;&lt; at &gt; -35,18 +35,6 &lt; at &gt;&lt; at &gt;
   &lt;description&gt;Cocoon 3 Parent POM module contains all basic configurations for the Maven 2 based build system.&lt;/description&gt;
   &lt;inceptionYear&gt;2008&lt;/inceptionYear&gt;
 
-  &lt;modules&gt;  
-    &lt;module&gt;../cocoon-all&lt;/module&gt;
-    &lt;module&gt;../cocoon-controller&lt;/module&gt;        
-    &lt;module&gt;../cocoon-optional&lt;/module&gt;    
-    &lt;module&gt;../cocoon-pipeline&lt;/module&gt;
-    &lt;module&gt;../cocoon-rest&lt;/module&gt;
-    &lt;module&gt;../cocoon-sample&lt;/module&gt;         
-    &lt;module&gt;../cocoon-servlet&lt;/module&gt;    
-    &lt;module&gt;../cocoon-sitemap&lt;/module&gt;
-    &lt;module&gt;../cocoon-stringtemplate&lt;/module&gt;    
-  &lt;/modules&gt;  
-
   &lt;developers&gt;
     &lt;developer&gt;
       &lt;id&gt;steven.dolg&lt;/id&gt;
&lt; at &gt;&lt; at &gt; -340,12 +328,6 &lt; at &gt;&lt; at &gt;
         &lt;/executions&gt;
       &lt;/plugin&gt;
       &lt;plugin&gt;
-        &lt;artifactId&gt;maven-release-plugin&lt;/artifactId&gt;
-        &lt;configuration&gt;
-          &lt;tagBase&gt;https://svn.apache.org/repos/asf/cocoon/cocoon3/tags/${project.artifactId}&lt;/tagBase&gt;
-        &lt;/configuration&gt;
-      &lt;/plugin&gt;      
-      &lt;plugin&gt;
         &lt;artifactId&gt;maven-compiler-plugin&lt;/artifactId&gt;
         &lt;version&gt;2.0.2&lt;/version&gt;
         &lt;configuration&gt;
&lt; at &gt;&lt; at &gt; -577,15 +559,6 &lt; at &gt;&lt; at &gt;
       &lt;/build&gt;
     &lt;/profile&gt;
     &lt;profile&gt;
-      &lt;id&gt;archetypes&lt;/id&gt;
-      &lt;modules&gt;
-        &lt;module&gt;../cocoon-archetype-block&lt;/module&gt;
-        &lt;module&gt;../cocoon-archetype-parent&lt;/module&gt;    
-        &lt;module&gt;../cocoon-archetype-sample&lt;/module&gt;    
-        &lt;module&gt;../cocoon-archetype-webapp&lt;/module&gt;        
-      &lt;/modules&gt;    
-    &lt;/profile&gt;
-    &lt;profile&gt;
       &lt;id&gt;release&lt;/id&gt;
       &lt;build&gt;
         &lt;resources&gt;

Copied: cocoon/cocoon3/trunk/pom.xml (from r701954, cocoon/cocoon3/trunk/release.pom.xml)
URL: http://svn.apache.org/viewvc/cocoon/cocoon3/trunk/pom.xml?p2=cocoon/cocoon3/trunk/pom.xml&amp;p1=cocoon/cocoon3/trunk/release.pom.xml&amp;r1=701954&amp;r2=721276&amp;rev=721276&amp;view=diff
==============================================================================
--- cocoon/cocoon3/trunk/release.pom.xml (original)
+++ cocoon/cocoon3/trunk/pom.xml Thu Nov 27 12:55:10 2008
&lt; at &gt;&lt; at &gt; -27,14 +27,10 &lt; at &gt;&lt; at &gt;
   &lt;artifactId&gt;cocoon-root&lt;/artifactId&gt;
   &lt;version&gt;3.0.0-alpha-2-SNAPSHOT&lt;/version&gt;
   &lt;name&gt;Cocoon 3: Root [pom]&lt;/name&gt;
-  &lt;description&gt;Cocoon 3 Root. Required because of  http://maven.markmail.org/message/5m5uhkdczmghqxsk&lt;/description&gt;
+  &lt;!-- Cocoon 3 Root. Required because of  http://maven.markmail.org/message/5m5uhkdczmghqxsk --&gt;
 
   &lt;modules&gt;  
     &lt;module&gt;cocoon-all&lt;/module&gt;
-    &lt;module&gt;cocoon-archetype-block&lt;/module&gt;
-    &lt;module&gt;cocoon-archetype-parent&lt;/module&gt;    
-    &lt;module&gt;cocoon-archetype-sample&lt;/module&gt;    
-    &lt;module&gt;cocoon-archetype-webapp&lt;/module&gt;       
     &lt;module&gt;cocoon-controller&lt;/module&gt;    
     &lt;module&gt;cocoon-optional&lt;/module&gt;    
     &lt;module&gt;cocoon-pipeline&lt;/module&gt;
&lt; at &gt;&lt; at &gt; -50,6 +46,7 &lt; at &gt;&lt; at &gt;
     &lt;plugins&gt;
       &lt;plugin&gt;
         &lt;artifactId&gt;maven-release-plugin&lt;/artifactId&gt;
+        &lt;version&gt;2.0-beta-8&lt;/version&gt;
         &lt;configuration&gt;
           &lt;tagBase&gt;https://svn.apache.org/repos/asf/cocoon/cocoon3/tags/${project.artifactId}&lt;/tagBase&gt;
         &lt;/configuration&gt;
&lt; at &gt;&lt; at &gt; -71,4 +68,16 &lt; at &gt;&lt; at &gt;
       &lt;url&gt;scpexe://people.apache.org/www/people.apache.org/builds/cocoon&lt;/url&gt;
     &lt;/repository&gt; 
   &lt;/distributionManagement&gt;  
+  
+  &lt;profiles&gt;
+    &lt;profile&gt;
+      &lt;id&gt;archetypes&lt;/id&gt;
+      &lt;modules&gt;
+        &lt;module&gt;cocoon-archetype-block&lt;/module&gt;
+        &lt;module&gt;cocoon-archetype-parent&lt;/module&gt;    
+        &lt;module&gt;cocoon-archetype-sample&lt;/module&gt;    
+        &lt;module&gt;cocoon-archetype-webapp&lt;/module&gt;        
+      &lt;/modules&gt;    
+    &lt;/profile&gt;  
+  &lt;/profiles&gt;
 &lt;/project&gt;



</description>
    <dc:creator>reinhard&lt; at &gt;apache.org</dc:creator>
    <dc:date>2008-11-27T20:55:10</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.text.xml.cocoon.cvs/27571">
    <title>svn commit: r721274 - in /cocoon/cocoon3/trunk: it.bat parent/it.bat</title>
    <link>http://permalink.gmane.org/gmane.text.xml.cocoon.cvs/27571</link>
    <description>Author: reinhard
Date: Thu Nov 27 12:49:48 2008
New Revision: 721274

URL: http://svn.apache.org/viewvc?rev=721274&amp;view=rev
Log:
reintroduce a root pom

Added:
    cocoon/cocoon3/trunk/it.bat
      - copied unchanged from r721273, cocoon/cocoon3/trunk/parent/it.bat
Removed:
    cocoon/cocoon3/trunk/parent/it.bat


</description>
    <dc:creator>reinhard&lt; at &gt;apache.org</dc:creator>
    <dc:date>2008-11-27T20:49:49</dc:date>
  </item>
  <textinput about="http://search.gmane.org/?group=$group=gmane.text.xml.cocoon.cvs">
    <title>Search Engine</title>
    <description>Search the mailing list at Gmane</description>
    <name>query</name>
    <link>http://search.gmane.org/?group=$group=gmane.text.xml.cocoon.cvs</link>
  </textinput>
</rdf:RDF>
