Author: markt
Date: Wed Oct  3 10:08:58 2012
New Revision: 1393385

URL: http://svn.apache.org/viewvc?rev=1393385&view=rev
Log:
Last of the caching configuration TODOs

Modified:
    tomcat/sandbox/trunk-resources/java/org/apache/catalina/WebResourceRoot.java
    
tomcat/sandbox/trunk-resources/java/org/apache/catalina/core/StandardContext.java
    
tomcat/sandbox/trunk-resources/java/org/apache/catalina/webresources/Cache.java
    
tomcat/sandbox/trunk-resources/java/org/apache/catalina/webresources/StandardRoot.java
    
tomcat/sandbox/trunk-resources/test/org/apache/catalina/webresources/TesterWebResourceRoot.java

Modified: 
tomcat/sandbox/trunk-resources/java/org/apache/catalina/WebResourceRoot.java
URL: 
http://svn.apache.org/viewvc/tomcat/sandbox/trunk-resources/java/org/apache/catalina/WebResourceRoot.java?rev=1393385&r1=1393384&r2=1393385&view=diff
==============================================================================
--- 
tomcat/sandbox/trunk-resources/java/org/apache/catalina/WebResourceRoot.java 
(original)
+++ 
tomcat/sandbox/trunk-resources/java/org/apache/catalina/WebResourceRoot.java 
Wed Oct  3 10:08:58 2012
@@ -258,6 +258,9 @@ public interface WebResourceRoot extends
     void setCacheMaxSize(long cacheMaxSize);
     long getCacheMaxSize();
 
+    void setCacheMaxObjectSize(long cacheMaxObjectSize);
+    long getCacheMaxObjectSize();
+
     /**
      * This method will be invoked by the context on a periodic basis and 
allows
      * the implementation a method that executes periodic tasks, such as 
purging

Modified: 
tomcat/sandbox/trunk-resources/java/org/apache/catalina/core/StandardContext.java
URL: 
http://svn.apache.org/viewvc/tomcat/sandbox/trunk-resources/java/org/apache/catalina/core/StandardContext.java?rev=1393385&r1=1393384&r2=1393385&view=diff
==============================================================================
--- 
tomcat/sandbox/trunk-resources/java/org/apache/catalina/core/StandardContext.java
 (original)
+++ 
tomcat/sandbox/trunk-resources/java/org/apache/catalina/core/StandardContext.java
 Wed Oct  3 10:08:58 2012
@@ -4776,12 +4776,10 @@ public class StandardContext extends Con
         resources.setCachingAllowed(isCachingAllowed());
         resources.setCacheTtl(getCacheTTL());
         resources.setCacheMaxSize(getCacheMaxSize());
+        resources.setCacheMaxObjectSize(getCacheObjectMaxSize());
 
         resources.start();
 
-        // TODO: Implement caching.
-        // getCacheMaxObjectSize()
-
         if (effectiveMajorVersion >=3 && addWebinfClassesResources) {
             WebResource webinfClassesResource = resources.getResource(
                     "/WEB-INF/classes/META-INF/resources");

Modified: 
tomcat/sandbox/trunk-resources/java/org/apache/catalina/webresources/Cache.java
URL: 
http://svn.apache.org/viewvc/tomcat/sandbox/trunk-resources/java/org/apache/catalina/webresources/Cache.java?rev=1393385&r1=1393384&r2=1393385&view=diff
==============================================================================
--- 
tomcat/sandbox/trunk-resources/java/org/apache/catalina/webresources/Cache.java 
(original)
+++ 
tomcat/sandbox/trunk-resources/java/org/apache/catalina/webresources/Cache.java 
Wed Oct  3 10:08:58 2012
@@ -46,6 +46,7 @@ public class Cache {
 
     private long ttl = 5000;
     private long maxSize = 10 * 1024 * 1024;
+    private long maxObjectSize = maxSize / 20;
 
     private ConcurrentMap<String,CachedResource> resourceCache =
             new ConcurrentHashMap<>();
@@ -66,9 +67,13 @@ public class Cache {
         }
 
         if (cacheEntry == null) {
+            CachedResource newCacheEntry = new CachedResource(root, path, ttl);
+            if (newCacheEntry.getContentLength() > getMaxObjectSize()) {
+                return newCacheEntry;
+            }
+
             // Concurrent callers will end up with the same CachedResource
             // instance
-            CachedResource newCacheEntry = new CachedResource(root, path, ttl);
             cacheEntry = resourceCache.putIfAbsent(path, newCacheEntry);
 
             if (cacheEntry == null) {
@@ -181,6 +186,15 @@ public class Cache {
         this.maxSize = maxSize;
     }
 
+
+    public void setMaxObjectSize(long maxObjectSize) {
+        this.maxObjectSize = maxObjectSize;
+    }
+
+    public long getMaxObjectSize() {
+        return maxObjectSize;
+    }
+
     private static class EvictionOrder implements Comparator<CachedResource> {
 
         @Override

Modified: 
tomcat/sandbox/trunk-resources/java/org/apache/catalina/webresources/StandardRoot.java
URL: 
http://svn.apache.org/viewvc/tomcat/sandbox/trunk-resources/java/org/apache/catalina/webresources/StandardRoot.java?rev=1393385&r1=1393384&r2=1393385&view=diff
==============================================================================
--- 
tomcat/sandbox/trunk-resources/java/org/apache/catalina/webresources/StandardRoot.java
 (original)
+++ 
tomcat/sandbox/trunk-resources/java/org/apache/catalina/webresources/StandardRoot.java
 Wed Oct  3 10:08:58 2012
@@ -331,6 +331,16 @@ public class StandardRoot extends Lifecy
     }
 
     @Override
+    public void setCacheMaxObjectSize(long cacheMaxObjectSize) {
+        cache.setMaxObjectSize(cacheMaxObjectSize);
+    }
+
+    @Override
+    public long getCacheMaxObjectSize() {
+        return cache.getMaxObjectSize();
+    }
+
+    @Override
     public Context getContext() {
         return context;
     }

Modified: 
tomcat/sandbox/trunk-resources/test/org/apache/catalina/webresources/TesterWebResourceRoot.java
URL: 
http://svn.apache.org/viewvc/tomcat/sandbox/trunk-resources/test/org/apache/catalina/webresources/TesterWebResourceRoot.java?rev=1393385&r1=1393384&r2=1393385&view=diff
==============================================================================
--- 
tomcat/sandbox/trunk-resources/test/org/apache/catalina/webresources/TesterWebResourceRoot.java
 (original)
+++ 
tomcat/sandbox/trunk-resources/test/org/apache/catalina/webresources/TesterWebResourceRoot.java
 Wed Oct  3 10:08:58 2012
@@ -177,6 +177,16 @@ public class TesterWebResourceRoot imple
     }
 
     @Override
+    public void setCacheMaxObjectSize(long cacheMaxObjectSize) {
+        // NO-OP
+    }
+
+    @Override
+    public long getCacheMaxObjectSize() {
+        return 0;
+    }
+
+    @Override
     public void addPreResources(WebResourceSet webResourceSet) {
         // NO-OP
     }



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to