svn commit: r618219 - in /lenya/trunk/src: java/org/apache/lenya/cms/cocoon/source/ webapp/lenya/config/cocoon-xconf/source-factories/

[email protected]
Newsgroups gmane.comp.cms.lenya.cvs
Message-ID <[email protected]>
Author: andreas
Date: Mon Feb  4 01:41:18 2008
New Revision: 618219

URL: http://svn.apache.org/viewvc?rev=618219&view=rev
Log:
Control fallback:// cache by configuration file instead of hard-coding in Java class.

Added:
    lenya/trunk/src/webapp/lenya/config/cocoon-xconf/source-factories/fallback-store.xconf.disabled
      - copied unchanged from r618212, lenya/trunk/src/webapp/lenya/config/cocoon-xconf/source-factories/fallback-store.xconf
Removed:
    lenya/trunk/src/webapp/lenya/config/cocoon-xconf/source-factories/fallback-store.xconf
Modified:
    lenya/trunk/src/java/org/apache/lenya/cms/cocoon/source/AggregatingFallbackSourceFactory.java
    lenya/trunk/src/java/org/apache/lenya/cms/cocoon/source/FallbackSourceFactory.java

Modified: lenya/trunk/src/java/org/apache/lenya/cms/cocoon/source/AggregatingFallbackSourceFactory.java
URL: http://svn.apache.org/viewvc/lenya/trunk/src/java/org/apache/lenya/cms/cocoon/source/AggregatingFallbackSourceFactory.java?rev=618219&r1=618218&r2=618219&view=diff
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/cocoon/source/AggregatingFallbackSourceFactory.java (original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/cocoon/source/AggregatingFallbackSourceFactory.java Mon Feb  4 01:41:18 2008
@@ -43,30 +43,33 @@
  */
 public class AggregatingFallbackSourceFactory extends FallbackSourceFactory {
     
-    private boolean useCache = true;
-    
     /**
      * @see org.apache.excalibur.source.SourceFactory#getSource(java.lang.String, java.util.Map)
      */
     public Source getSource(final String location, Map parameters) throws IOException,
             MalformedURLException {
 
-        MRUMemoryStore store = getStore();
         String[] uris;
-        final String cacheKey = getCacheKey(location);
-        final String[] cachedUris = (String[]) store.get(cacheKey);
 
-        if (!useCache || cachedUris == null) {
-            uris = findUris(location, parameters);
-            store.hold(cacheKey, uris);
-            if (getLogger().isDebugEnabled()) {
-                getLogger().debug("No cached source URI for key " + cacheKey + ", caching resolved URIs.");
-            }
-        } else {
-            uris = cachedUris;
-            if (getLogger().isDebugEnabled()) {
-                getLogger().debug("Using cached source URIs for key " + cacheKey);
+        if (useCache()) {
+            MRUMemoryStore store = getStore();
+            final String cacheKey = getCacheKey(location);
+            final String[] cachedUris = (String[]) store.get(cacheKey);
+            if (cachedUris == null) {
+                uris = findUris(location, parameters);
+                store.hold(cacheKey, uris);
+                if (getLogger().isDebugEnabled()) {
+                    getLogger().debug("No cached source URI for key " + cacheKey + ", caching resolved URIs.");
+                }
+            } else {
+                uris = cachedUris;
+                if (getLogger().isDebugEnabled()) {
+                    getLogger().debug("Using cached source URIs for key " + cacheKey);
+                }
             }
+        }
+        else {
+            uris = findUris(location, parameters);
         }
         return new AggregatingSource(location, uris, this.manager);
     }

Modified: lenya/trunk/src/java/org/apache/lenya/cms/cocoon/source/FallbackSourceFactory.java
URL: http://svn.apache.org/viewvc/lenya/trunk/src/java/org/apache/lenya/cms/cocoon/source/FallbackSourceFactory.java?rev=618219&r1=618218&r2=618219&view=diff
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/cocoon/source/FallbackSourceFactory.java (original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/cocoon/source/FallbackSourceFactory.java Mon Feb  4 01:41:18 2008
@@ -63,10 +63,17 @@
         Serviceable, Contextualizable, URIAbsolutizer {
 
     protected static MRUMemoryStore store;
-    private boolean useCache = true;
-    
+    private static Boolean useCache = null;
+
     protected static final String STORE_ROLE = FallbackSourceFactory.class.getName() + "Store";
-    
+
+    protected boolean useCache() {
+        if (useCache == null) {
+            useCache = Boolean.valueOf(this.manager.hasService(STORE_ROLE));
+        }
+        return useCache.booleanValue();
+    }
+
     protected MRUMemoryStore getStore() {
         if (store == null) {
             try {
@@ -77,41 +84,51 @@
         }
         return store;
     }
-    
+
     /**
      * @see org.apache.excalibur.source.SourceFactory#getSource(java.lang.String, java.util.Map)
      */
     public Source getSource(final String location, Map parameters) throws IOException,
             MalformedURLException {
 
-        MRUMemoryStore store = getStore();
         Source source;
-        final String cacheKey = getCacheKey(location);
-        final String cachedSourceUri = (String) store.get(cacheKey);
 
-        if (!useCache || cachedSourceUri == null) {
-            source = findSource(location, parameters);
-            final String resolvedSourceUri = source.getURI();
-            store.hold(cacheKey, resolvedSourceUri);
-            if (getLogger().isDebugEnabled()) {
-                getLogger().debug("No cached source URI for key " + cacheKey + ", caching URI " + resolvedSourceUri);
-            }
-        } else {
-            SourceResolver resolver = null;
-            try {
-                resolver = (SourceResolver) this.manager.lookup(SourceResolver.ROLE);
-                source = resolver.resolveURI(cachedSourceUri);
-            } catch (ServiceException e) {
-                throw new RuntimeException(e);
-            } finally {
-                if (resolver != null) {
-                    this.manager.release(resolver);
+        if (useCache()) {
+            MRUMemoryStore store = getStore();
+            final String cacheKey = getCacheKey(location);
+            final String cachedSourceUri = (String) store.get(cacheKey);
+
+            if (cachedSourceUri == null) {
+                source = findSource(location, parameters);
+                final String resolvedSourceUri = source.getURI();
+                store.hold(cacheKey, resolvedSourceUri);
+                if (getLogger().isDebugEnabled()) {
+                    getLogger().debug(
+                            "No cached source URI for key " + cacheKey + ", caching URI "
+                                    + resolvedSourceUri);
+                }
+            } else {
+                SourceResolver resolver = null;
+                try {
+                    resolver = (SourceResolver) this.manager.lookup(SourceResolver.ROLE);
+                    source = resolver.resolveURI(cachedSourceUri);
+                } catch (ServiceException e) {
+                    throw new RuntimeException(e);
+                } finally {
+                    if (resolver != null) {
+                        this.manager.release(resolver);
+                    }
+                }
+                if (getLogger().isDebugEnabled()) {
+                    getLogger().debug(
+                            "Using cached source URI " + cachedSourceUri + " for key " + cacheKey);
                 }
             }
-            if (getLogger().isDebugEnabled()) {
-                getLogger().debug("Using cached source URI " + cachedSourceUri + " for key " + cacheKey);
-            }
+
+        } else {
+            source = findSource(location, parameters);
         }
+
         return source;
     }
 
@@ -251,7 +268,7 @@
 
     /** The ServiceManager */
     protected ServiceManager manager;
-    
+
     /**
      * @see org.apache.avalon.framework.service.Serviceable#service(org.apache.avalon.framework.service.ServiceManager)
      */
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.