You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@cocoon.apache.org by sy...@apache.org on 2005/12/01 21:28:06 UTC

svn commit: r351461 - in /cocoon/blocks/scratchpad/trunk/java/org/apache/cocoon/components/source/impl: CachingSource.java CachingSourceFactory.java

Author: sylvain
Date: Thu Dec  1 12:28:01 2005
New Revision: 351461

URL: http://svn.apache.org/viewcvs?rev=351461&view=rev
Log:
Allow CachedSource to be subclassed. Patch provided by Jean-Baptiste Quenot <jb...@anyware-tech.com>

Modified:
    cocoon/blocks/scratchpad/trunk/java/org/apache/cocoon/components/source/impl/CachingSource.java
    cocoon/blocks/scratchpad/trunk/java/org/apache/cocoon/components/source/impl/CachingSourceFactory.java

Modified: cocoon/blocks/scratchpad/trunk/java/org/apache/cocoon/components/source/impl/CachingSource.java
URL: http://svn.apache.org/viewcvs/cocoon/blocks/scratchpad/trunk/java/org/apache/cocoon/components/source/impl/CachingSource.java?rev=351461&r1=351460&r2=351461&view=diff
==============================================================================
--- cocoon/blocks/scratchpad/trunk/java/org/apache/cocoon/components/source/impl/CachingSource.java (original)
+++ cocoon/blocks/scratchpad/trunk/java/org/apache/cocoon/components/source/impl/CachingSource.java Thu Dec  1 12:28:01 2005
@@ -615,7 +615,7 @@
         return valid;
     }
 
-    private SourceValidity[] getCacheValidities() {
+    protected SourceValidity[] getCacheValidities() {
         if (this.cache instanceof EventAware) {
             // use event caching strategy, the associated event is the source uri
             return new SourceValidity[] { new EventValidity(new NamedEvent(this.source.getURI())) };
@@ -668,4 +668,7 @@
 
     }
 
+	public void setCache(Cache cache) {
+		this.cache = cache;
+	}
 }

Modified: cocoon/blocks/scratchpad/trunk/java/org/apache/cocoon/components/source/impl/CachingSourceFactory.java
URL: http://svn.apache.org/viewcvs/cocoon/blocks/scratchpad/trunk/java/org/apache/cocoon/components/source/impl/CachingSourceFactory.java?rev=351461&r1=351460&r2=351461&view=diff
==============================================================================
--- cocoon/blocks/scratchpad/trunk/java/org/apache/cocoon/components/source/impl/CachingSourceFactory.java (original)
+++ cocoon/blocks/scratchpad/trunk/java/org/apache/cocoon/components/source/impl/CachingSourceFactory.java Thu Dec  1 12:28:01 2005
@@ -107,7 +107,7 @@
  * </tr>
  * </tbody></table>
  *
- * @version CVS $Id: CachingSourceFactory.java,v 1.12 2004/07/01 14:24:36 unico Exp $
+ * @version CVS $Id$
  * @since 2.1.1
  */
 public final class CachingSourceFactory extends AbstractLogEnabled
@@ -278,16 +278,17 @@
         // put caching source specific query string parameters
         // into a Parameters object
         final Parameters params = new Parameters();
+        SourceParameters remainingParameters = (SourceParameters) sp.clone();
         if (sp != null) {
             final Iterator names = sp.getParameterNames();
             while (names.hasNext()) {
                 String name = (String) names.next();
                 if (name.startsWith("cocoon:cache")) {
                     params.setParameter(name.substring("cocoon:".length()), sp.getParameter(name));
-                    sp.removeParameter(name);
+                    remainingParameters.removeParameter(name);
                 }
             }
-            queryString = sp.getQueryString();
+            queryString = remainingParameters.getQueryString();
             if (queryString != null) {
                 uri += "?" + queryString;
             }
@@ -296,7 +297,7 @@
         int expires = params.getParameterAsInteger(CachingSource.CACHE_EXPIRES_PARAM, this.defaultExpires);
         String cacheName = params.getParameter(CachingSource.CACHE_NAME_PARAM, null);
 
-        final CachingSource source = newCachingSource(this.resolver.resolveURI(uri),
+        final CachingSource source = createCachingSource(this.resolver.resolveURI(uri),
                                                       this.scheme,
                                                       location,
                                                       expires,
@@ -323,9 +324,25 @@
     }
     
     /**
-     * Factory method for creating a new CachingSource.
+     * Factory method for creating a new CachingSource. Delegates to createCachingSource()
      */
     public static CachingSource newCachingSource(Source wrappedSource, 
+                                                 String scheme,
+                                                 String uri,
+                                                 int expires,
+                                                 String cacheName,
+                                                 boolean async,
+                                                 Cache cache,
+                                                 Logger logger,
+                                                 ServiceManager manager)
+                                                 throws SourceException {
+        return new CachingSourceFactory().createCachingSource(wrappedSource, scheme, uri, expires, cacheName, async, cache, logger, manager);
+    }
+    
+    /**
+     * Actually creates a new CachingSource. Can be overriden in subclasses
+     */
+    protected CachingSource createCachingSource(Source wrappedSource, 
                                                  String scheme,
                                                  String uri,
                                                  int expires,