You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@shindig.apache.org by et...@apache.org on 2008/05/18 06:50:15 UTC

svn commit: r657495 - in /incubator/shindig/trunk/java/gadgets: conf/ src/main/java/org/apache/shindig/gadgets/http/ src/test/java/org/apache/shindig/gadgets/ src/test/java/org/apache/shindig/gadgets/http/

Author: etnu
Date: Sat May 17 21:50:15 2008
New Revision: 657495

URL: http://svn.apache.org/viewvc?rev=657495&view=rev
Log:
Modified BasicHttpCache to use an LRU cache instead of a map.


Modified:
    incubator/shindig/trunk/java/gadgets/conf/gadgets.properties
    incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/BasicHttpCache.java
    incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/SigningFetcherTest.java
    incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/http/BasicHttpCacheTest.java
    incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/http/BasicHttpFetcherTest.java

Modified: incubator/shindig/trunk/java/gadgets/conf/gadgets.properties
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/conf/gadgets.properties?rev=657495&r1=657494&r2=657495&view=diff
==============================================================================
--- incubator/shindig/trunk/java/gadgets/conf/gadgets.properties (original)
+++ incubator/shindig/trunk/java/gadgets/conf/gadgets.properties Sat May 17 21:50:15 2008
@@ -7,3 +7,4 @@
 signing.key-file=
 locked-domain.enabled=false
 locked-domain.embed-host=127.0.0.1:8080
+cache.capacity=10000

Modified: incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/BasicHttpCache.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/BasicHttpCache.java?rev=657495&r1=657494&r2=657495&view=diff
==============================================================================
--- incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/BasicHttpCache.java (original)
+++ incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/BasicHttpCache.java Sat May 17 21:50:15 2008
@@ -17,30 +17,38 @@
  */
 package org.apache.shindig.gadgets.http;
 
+import org.apache.shindig.common.cache.Cache;
+import org.apache.shindig.common.cache.LruCache;
+
+import com.google.inject.Inject;
+import com.google.inject.name.Named;
+
 import java.net.URI;
-import java.util.Map;
-import java.util.WeakHashMap;
 
 /**
  * Simple cache of HttpResponse. Uses WeakHashMap for memory management
  */
 public class BasicHttpCache extends AbstractHttpCache {
 
-  private final Map<URI, HttpResponse> cache
-      = new WeakHashMap<URI, HttpResponse>();
+  private final Cache<URI, HttpResponse> cache;
 
   @Override
   protected HttpResponse getResponseImpl(URI uri) {
-    return cache.get(uri);
+    return cache.getElement(uri);
   }
 
   @Override
   protected void addResponseImpl(URI uri, HttpResponse response) {
-    cache.put(uri, response);
+    cache.addElement(uri, response);
   }
 
   @Override
   protected HttpResponse removeResponseImpl(URI uri) {
-    return cache.remove(uri);
+    return cache.removeElement(uri);
+  }
+
+  @Inject
+  public BasicHttpCache(@Named("cache.capacity") int capacity) {
+    cache = LruCache.create(capacity);
   }
 }

Modified: incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/SigningFetcherTest.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/SigningFetcherTest.java?rev=657495&r1=657494&r2=657495&view=diff
==============================================================================
--- incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/SigningFetcherTest.java (original)
+++ incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/SigningFetcherTest.java Sat May 17 21:50:15 2008
@@ -14,22 +14,22 @@
 
 package org.apache.shindig.gadgets;
 
-import junit.framework.TestCase;
-
 import org.apache.shindig.common.BasicSecurityToken;
 import org.apache.shindig.gadgets.http.BasicHttpCache;
 import org.apache.shindig.gadgets.http.HttpCache;
 import org.apache.shindig.gadgets.http.HttpRequest;
 
 import net.oauth.OAuth;
-import net.oauth.OAuth.Parameter;
 import net.oauth.OAuthAccessor;
 import net.oauth.OAuthConsumer;
 import net.oauth.OAuthMessage;
 import net.oauth.OAuthValidator;
 import net.oauth.SimpleOAuthValidator;
+import net.oauth.OAuth.Parameter;
 import net.oauth.signature.RSA_SHA1;
 
+import junit.framework.TestCase;
+
 import java.net.URI;
 import java.net.URISyntaxException;
 import java.net.URL;
@@ -41,7 +41,7 @@
  */
 public class SigningFetcherTest extends TestCase {
   private static final String PRIVATE_KEY_TEXT =
-    "MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBALRiMLAh9iimur8V" +                   
+    "MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBALRiMLAh9iimur8V" +
     "A7qVvdqxevEuUkW4K+2KdMXmnQbG9Aa7k7eBjK1S+0LYmVjPKlJGNXHDGuy5Fw/d" +
     "7rjVJ0BLB+ubPK8iA/Tw3hLQgXMRRGRXXCn8ikfuQfjUS1uZSatdLB81mydBETlJ" +
     "hI6GH4twrbDJCR2Bwy/XWXgqgGRzAgMBAAECgYBYWVtleUzavkbrPjy0T5FMou8H" +
@@ -79,7 +79,7 @@
   @Override
   public void setUp() throws Exception {
     super.setUp();
-    cache = new BasicHttpCache();
+    cache = new BasicHttpCache(10);
     interceptor = new InterceptingContentFetcher();
     authToken = new BasicSecurityToken("o", "v", "a", "d", "u", "m");
     signer = SigningFetcher.makeFromB64PrivateKey(cache,
@@ -190,7 +190,7 @@
     assertTrue(contains(queryParams, "a", "b"));
     assertTrue(contains(queryParams, "a", "c"));
   }
-  
+
   public void testValidParameterCharacters() throws Exception {
     String weird = "~!@$*()-_[]:,./";
     HttpRequest unsigned

Modified: incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/http/BasicHttpCacheTest.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/http/BasicHttpCacheTest.java?rev=657495&r1=657494&r2=657495&view=diff
==============================================================================
--- incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/http/BasicHttpCacheTest.java (original)
+++ incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/http/BasicHttpCacheTest.java Sat May 17 21:50:15 2008
@@ -17,19 +17,16 @@
  */
 package org.apache.shindig.gadgets.http;
 
-import junit.framework.TestCase;
-
 import org.apache.shindig.gadgets.servlet.HttpUtil;
 
+import junit.framework.TestCase;
+
 import java.net.URI;
-import java.text.DateFormat;
 import java.util.Arrays;
 import java.util.Date;
 import java.util.HashMap;
 import java.util.List;
-import java.util.Locale;
 import java.util.Map;
-import java.util.TimeZone;
 
 /**
  * Tests for basic content cache
@@ -41,7 +38,7 @@
   @Override
   public void setUp() throws Exception {
     super.setUp();
-    cache = new BasicHttpCache();
+    cache = new BasicHttpCache(10);
   }
 
   @Override

Modified: incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/http/BasicHttpFetcherTest.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/http/BasicHttpFetcherTest.java?rev=657495&r1=657494&r2=657495&view=diff
==============================================================================
--- incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/http/BasicHttpFetcherTest.java (original)
+++ incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/http/BasicHttpFetcherTest.java Sat May 17 21:50:15 2008
@@ -25,7 +25,7 @@
 import java.net.URI;
 
 public class BasicHttpFetcherTest extends TestCase {
-  private HttpCache cache = new BasicHttpCache();
+  private HttpCache cache = new BasicHttpCache(10);
   private HttpFetcher fetcher
       = new BasicHttpFetcher(cache, Integer.MAX_VALUE);
 



Re: svn commit: r657495 - in /incubator/shindig/trunk/java/gadgets: conf/ src/main/java/org/apache/shindig/gadgets/http/ src/test/java/org/apache/shindig/gadgets/ src/test/java/org/apache/shindig/gadgets/http/

Posted by Kevin Brown <et...@google.com>.
On Sun, May 18, 2008 at 4:20 AM, Ian Boston <ie...@tfd.co.uk> wrote:

>
> Although the impl of of the the LRU cache is neat and elegant, when it
> comes to caching, should we consider one of the jars that provides this sort
> of thing? eg ehcache? The main reason being that as caching gets closer to
> being used in production, there are always a never ending list of requests
> from ops teams. Invalidation, timeout, cluster, jmx etc etc things like
> ehcache have these (an support the almost defunct JSR-107 for what its
> worth), there are bound to be other caches required.


That is the entire reason for the interface. The LRU cache is just there to
serve as a more appropriate default instead of a map. Any large-scale
production deployment would want to use a distributed cache. I alluded to
this in the comments section of the interface.


>
> I can provide a patch if necessary.
> but this is just a thought?
> Ian
>
>
>
>
> On 18 May 2008, at 05:50, etnu@apache.org wrote:
>
>  Author: etnu
>> Date: Sat May 17 21:50:15 2008
>> New Revision: 657495
>>
>> URL: http://svn.apache.org/viewvc?rev=657495&view=rev
>> Log:
>> Modified BasicHttpCache to use an LRU cache instead of a map.
>>
>>
>> Modified:
>>    incubator/shindig/trunk/java/gadgets/conf/gadgets.properties
>>
>>  incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/BasicHttpCache.java
>>
>>  incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/SigningFetcherTest.java
>>
>>  incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/http/BasicHttpCacheTest.java
>>
>>  incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/http/BasicHttpFetcherTest.java
>>
>> Modified: incubator/shindig/trunk/java/gadgets/conf/gadgets.properties
>> URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/
>> gadgets/conf/gadgets.properties?rev=657495&r1=657494&r2=657495&view=diff
>>
>> ==============================================================================
>> --- incubator/shindig/trunk/java/gadgets/conf/gadgets.properties
>> (original)
>> +++ incubator/shindig/trunk/java/gadgets/conf/gadgets.properties Sat May
>> 17 21:50:15 2008
>> @@ -7,3 +7,4 @@
>>  signing.key-file=
>>  locked-domain.enabled=false
>>  locked-domain.embed-host=127.0.0.1:8080
>> +cache.capacity=10000
>>
>> Modified:
>> incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/BasicHttpCache.java
>> URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/
>> gadgets/src/main/java/org/apache/shindig/gadgets/http/BasicHttpCache.java?rev=657495&r1=657494&r2=657495&view=diff
>>
>> ==============================================================================
>> ---
>> incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/BasicHttpCache.java
>> (original)
>> +++
>> incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/BasicHttpCache.java
>> Sat May 17 21:50:15 2008
>> @@ -17,30 +17,38 @@
>>  */
>>  package org.apache.shindig.gadgets.http;
>>
>> +import org.apache.shindig.common.cache.Cache;
>> +import org.apache.shindig.common.cache.LruCache;
>> +
>> +import com.google.inject.Inject;
>> +import com.google.inject.name.Named;
>> +
>>  import java.net.URI;
>> -import java.util.Map;
>> -import java.util.WeakHashMap;
>>
>>  /**
>>  * Simple cache of HttpResponse. Uses WeakHashMap for memory management
>>  */
>>  public class BasicHttpCache extends AbstractHttpCache {
>>
>> -  private final Map<URI, HttpResponse> cache
>> -      = new WeakHashMap<URI, HttpResponse>();
>> +  private final Cache<URI, HttpResponse> cache;
>>
>>   @Override
>>   protected HttpResponse getResponseImpl(URI uri) {
>> -    return cache.get(uri);
>> +    return cache.getElement(uri);
>>   }
>>
>>   @Override
>>   protected void addResponseImpl(URI uri, HttpResponse response) {
>> -    cache.put(uri, response);
>> +    cache.addElement(uri, response);
>>   }
>>
>>   @Override
>>   protected HttpResponse removeResponseImpl(URI uri) {
>> -    return cache.remove(uri);
>> +    return cache.removeElement(uri);
>> +  }
>> +
>> +  @Inject
>> +  public BasicHttpCache(@Named("cache.capacity") int capacity) {
>> +    cache = LruCache.create(capacity);
>>   }
>>  }
>>
>> Modified:
>> incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/SigningFetcherTest.java
>> URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/
>> gadgets/src/test/java/org/apache/shindig/gadgets/SigningFetcherTest.java?rev=657495&r1=657494&r2=657495&view=diff
>>
>> ==============================================================================
>> ---
>> incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/SigningFetcherTest.java
>> (original)
>> +++
>> incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/SigningFetcherTest.java
>> Sat May 17 21:50:15 2008
>> @@ -14,22 +14,22 @@
>>
>>  package org.apache.shindig.gadgets;
>>
>> -import junit.framework.TestCase;
>> -
>>  import org.apache.shindig.common.BasicSecurityToken;
>>  import org.apache.shindig.gadgets.http.BasicHttpCache;
>>  import org.apache.shindig.gadgets.http.HttpCache;
>>  import org.apache.shindig.gadgets.http.HttpRequest;
>>
>>  import net.oauth.OAuth;
>> -import net.oauth.OAuth.Parameter;
>>  import net.oauth.OAuthAccessor;
>>  import net.oauth.OAuthConsumer;
>>  import net.oauth.OAuthMessage;
>>  import net.oauth.OAuthValidator;
>>  import net.oauth.SimpleOAuthValidator;
>> +import net.oauth.OAuth.Parameter;
>>  import net.oauth.signature.RSA_SHA1;
>>
>> +import junit.framework.TestCase;
>> +
>>  import java.net.URI;
>>  import java.net.URISyntaxException;
>>  import java.net.URL;
>> @@ -41,7 +41,7 @@
>>  */
>>  public class SigningFetcherTest extends TestCase {
>>   private static final String PRIVATE_KEY_TEXT =
>> -    "MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBALRiMLAh9iimur8V" +
>> +    "MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBALRiMLAh9iimur8V" +
>>     "A7qVvdqxevEuUkW4K+2KdMXmnQbG9Aa7k7eBjK1S+0LYmVjPKlJGNXHDGuy5Fw/d" +
>>     "7rjVJ0BLB+ubPK8iA/Tw3hLQgXMRRGRXXCn8ikfuQfjUS1uZSatdLB81mydBETlJ" +
>>     "hI6GH4twrbDJCR2Bwy/XWXgqgGRzAgMBAAECgYBYWVtleUzavkbrPjy0T5FMou8H" +
>> @@ -79,7 +79,7 @@
>>   @Override
>>   public void setUp() throws Exception {
>>     super.setUp();
>> -    cache = new BasicHttpCache();
>> +    cache = new BasicHttpCache(10);
>>     interceptor = new InterceptingContentFetcher();
>>     authToken = new BasicSecurityToken("o", "v", "a", "d", "u", "m");
>>     signer = SigningFetcher.makeFromB64PrivateKey(cache,
>> @@ -190,7 +190,7 @@
>>     assertTrue(contains(queryParams, "a", "b"));
>>     assertTrue(contains(queryParams, "a", "c"));
>>   }
>> -
>> +
>>   public void testValidParameterCharacters() throws Exception {
>>     String weird = "~!@$*()-_[]:,./";
>>     HttpRequest unsigned
>>
>> Modified:
>> incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/http/BasicHttpCacheTest.java
>> URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/
>> gadgets/src/test/java/org/apache/shindig/gadgets/http/BasicHttpCacheTest.java?rev=657495&r1=657494&r2=657495&view=diff
>>
>> ==============================================================================
>> ---
>> incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/http/BasicHttpCacheTest.java
>> (original)
>> +++
>> incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/http/BasicHttpCacheTest.java
>> Sat May 17 21:50:15 2008
>> @@ -17,19 +17,16 @@
>>  */
>>  package org.apache.shindig.gadgets.http;
>>
>> -import junit.framework.TestCase;
>> -
>>  import org.apache.shindig.gadgets.servlet.HttpUtil;
>>
>> +import junit.framework.TestCase;
>> +
>>  import java.net.URI;
>> -import java.text.DateFormat;
>>  import java.util.Arrays;
>>  import java.util.Date;
>>  import java.util.HashMap;
>>  import java.util.List;
>> -import java.util.Locale;
>>  import java.util.Map;
>> -import java.util.TimeZone;
>>
>>  /**
>>  * Tests for basic content cache
>> @@ -41,7 +38,7 @@
>>   @Override
>>   public void setUp() throws Exception {
>>     super.setUp();
>> -    cache = new BasicHttpCache();
>> +    cache = new BasicHttpCache(10);
>>   }
>>
>>   @Override
>>
>> Modified:
>> incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/http/BasicHttpFetcherTest.java
>> URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/
>> gadgets/src/test/java/org/apache/shindig/gadgets/http/BasicHttpFetcherTest.java?rev=657495&r1=657494&r2=657495&view=diff
>>
>> ==============================================================================
>> ---
>> incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/http/BasicHttpFetcherTest.java
>> (original)
>> +++
>> incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/http/BasicHttpFetcherTest.java
>> Sat May 17 21:50:15 2008
>> @@ -25,7 +25,7 @@
>>  import java.net.URI;
>>
>>  public class BasicHttpFetcherTest extends TestCase {
>> -  private HttpCache cache = new BasicHttpCache();
>> +  private HttpCache cache = new BasicHttpCache(10);
>>   private HttpFetcher fetcher
>>       = new BasicHttpFetcher(cache, Integer.MAX_VALUE);
>>
>>
>>
>>
>

Re: svn commit: r657495 - in /incubator/shindig/trunk/java/gadgets: conf/ src/main/java/org/apache/shindig/gadgets/http/ src/test/java/org/apache/shindig/gadgets/ src/test/java/org/apache/shindig/gadgets/http/

Posted by Ian Boston <ie...@tfd.co.uk>.
Although the impl of of the the LRU cache is neat and elegant, when  
it comes to caching, should we consider one of the jars that provides  
this sort of thing? eg ehcache? The main reason being that as caching  
gets closer to being used in production, there are always a never  
ending list of requests from ops teams. Invalidation, timeout,  
cluster, jmx etc etc things like ehcache have these (an support the  
almost defunct JSR-107 for what its worth), there are bound to be  
other caches required.

I can provide a patch if necessary.
but this is just a thought?
Ian



On 18 May 2008, at 05:50, etnu@apache.org wrote:

> Author: etnu
> Date: Sat May 17 21:50:15 2008
> New Revision: 657495
>
> URL: http://svn.apache.org/viewvc?rev=657495&view=rev
> Log:
> Modified BasicHttpCache to use an LRU cache instead of a map.
>
>
> Modified:
>     incubator/shindig/trunk/java/gadgets/conf/gadgets.properties
>     incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/ 
> shindig/gadgets/http/BasicHttpCache.java
>     incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/ 
> shindig/gadgets/SigningFetcherTest.java
>     incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/ 
> shindig/gadgets/http/BasicHttpCacheTest.java
>     incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/ 
> shindig/gadgets/http/BasicHttpFetcherTest.java
>
> Modified: incubator/shindig/trunk/java/gadgets/conf/gadgets.properties
> URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/ 
> gadgets/conf/gadgets.properties? 
> rev=657495&r1=657494&r2=657495&view=diff
> ====================================================================== 
> ========
> --- incubator/shindig/trunk/java/gadgets/conf/gadgets.properties  
> (original)
> +++ incubator/shindig/trunk/java/gadgets/conf/gadgets.properties  
> Sat May 17 21:50:15 2008
> @@ -7,3 +7,4 @@
>  signing.key-file=
>  locked-domain.enabled=false
>  locked-domain.embed-host=127.0.0.1:8080
> +cache.capacity=10000
>
> Modified: incubator/shindig/trunk/java/gadgets/src/main/java/org/ 
> apache/shindig/gadgets/http/BasicHttpCache.java
> URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/ 
> gadgets/src/main/java/org/apache/shindig/gadgets/http/ 
> BasicHttpCache.java?rev=657495&r1=657494&r2=657495&view=diff
> ====================================================================== 
> ========
> --- incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/ 
> shindig/gadgets/http/BasicHttpCache.java (original)
> +++ incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/ 
> shindig/gadgets/http/BasicHttpCache.java Sat May 17 21:50:15 2008
> @@ -17,30 +17,38 @@
>   */
>  package org.apache.shindig.gadgets.http;
>
> +import org.apache.shindig.common.cache.Cache;
> +import org.apache.shindig.common.cache.LruCache;
> +
> +import com.google.inject.Inject;
> +import com.google.inject.name.Named;
> +
>  import java.net.URI;
> -import java.util.Map;
> -import java.util.WeakHashMap;
>
>  /**
>   * Simple cache of HttpResponse. Uses WeakHashMap for memory  
> management
>   */
>  public class BasicHttpCache extends AbstractHttpCache {
>
> -  private final Map<URI, HttpResponse> cache
> -      = new WeakHashMap<URI, HttpResponse>();
> +  private final Cache<URI, HttpResponse> cache;
>
>    @Override
>    protected HttpResponse getResponseImpl(URI uri) {
> -    return cache.get(uri);
> +    return cache.getElement(uri);
>    }
>
>    @Override
>    protected void addResponseImpl(URI uri, HttpResponse response) {
> -    cache.put(uri, response);
> +    cache.addElement(uri, response);
>    }
>
>    @Override
>    protected HttpResponse removeResponseImpl(URI uri) {
> -    return cache.remove(uri);
> +    return cache.removeElement(uri);
> +  }
> +
> +  @Inject
> +  public BasicHttpCache(@Named("cache.capacity") int capacity) {
> +    cache = LruCache.create(capacity);
>    }
>  }
>
> Modified: incubator/shindig/trunk/java/gadgets/src/test/java/org/ 
> apache/shindig/gadgets/SigningFetcherTest.java
> URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/ 
> gadgets/src/test/java/org/apache/shindig/gadgets/ 
> SigningFetcherTest.java?rev=657495&r1=657494&r2=657495&view=diff
> ====================================================================== 
> ========
> --- incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/ 
> shindig/gadgets/SigningFetcherTest.java (original)
> +++ incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/ 
> shindig/gadgets/SigningFetcherTest.java Sat May 17 21:50:15 2008
> @@ -14,22 +14,22 @@
>
>  package org.apache.shindig.gadgets;
>
> -import junit.framework.TestCase;
> -
>  import org.apache.shindig.common.BasicSecurityToken;
>  import org.apache.shindig.gadgets.http.BasicHttpCache;
>  import org.apache.shindig.gadgets.http.HttpCache;
>  import org.apache.shindig.gadgets.http.HttpRequest;
>
>  import net.oauth.OAuth;
> -import net.oauth.OAuth.Parameter;
>  import net.oauth.OAuthAccessor;
>  import net.oauth.OAuthConsumer;
>  import net.oauth.OAuthMessage;
>  import net.oauth.OAuthValidator;
>  import net.oauth.SimpleOAuthValidator;
> +import net.oauth.OAuth.Parameter;
>  import net.oauth.signature.RSA_SHA1;
>
> +import junit.framework.TestCase;
> +
>  import java.net.URI;
>  import java.net.URISyntaxException;
>  import java.net.URL;
> @@ -41,7 +41,7 @@
>   */
>  public class SigningFetcherTest extends TestCase {
>    private static final String PRIVATE_KEY_TEXT =
> -     
> "MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBALRiMLAh9iimur8V" +
> +     
> "MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBALRiMLAh9iimur8V" +
>      "A7qVvdqxevEuUkW4K+2KdMXmnQbG9Aa7k7eBjK1S 
> +0LYmVjPKlJGNXHDGuy5Fw/d" +
>      "7rjVJ0BLB+ubPK8iA/ 
> Tw3hLQgXMRRGRXXCn8ikfuQfjUS1uZSatdLB81mydBETlJ" +
>      "hI6GH4twrbDJCR2Bwy/ 
> XWXgqgGRzAgMBAAECgYBYWVtleUzavkbrPjy0T5FMou8H" +
> @@ -79,7 +79,7 @@
>    @Override
>    public void setUp() throws Exception {
>      super.setUp();
> -    cache = new BasicHttpCache();
> +    cache = new BasicHttpCache(10);
>      interceptor = new InterceptingContentFetcher();
>      authToken = new BasicSecurityToken("o", "v", "a", "d", "u", "m");
>      signer = SigningFetcher.makeFromB64PrivateKey(cache,
> @@ -190,7 +190,7 @@
>      assertTrue(contains(queryParams, "a", "b"));
>      assertTrue(contains(queryParams, "a", "c"));
>    }
> -
> +
>    public void testValidParameterCharacters() throws Exception {
>      String weird = "~!@$*()-_[]:,./";
>      HttpRequest unsigned
>
> Modified: incubator/shindig/trunk/java/gadgets/src/test/java/org/ 
> apache/shindig/gadgets/http/BasicHttpCacheTest.java
> URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/ 
> gadgets/src/test/java/org/apache/shindig/gadgets/http/ 
> BasicHttpCacheTest.java?rev=657495&r1=657494&r2=657495&view=diff
> ====================================================================== 
> ========
> --- incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/ 
> shindig/gadgets/http/BasicHttpCacheTest.java (original)
> +++ incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/ 
> shindig/gadgets/http/BasicHttpCacheTest.java Sat May 17 21:50:15 2008
> @@ -17,19 +17,16 @@
>   */
>  package org.apache.shindig.gadgets.http;
>
> -import junit.framework.TestCase;
> -
>  import org.apache.shindig.gadgets.servlet.HttpUtil;
>
> +import junit.framework.TestCase;
> +
>  import java.net.URI;
> -import java.text.DateFormat;
>  import java.util.Arrays;
>  import java.util.Date;
>  import java.util.HashMap;
>  import java.util.List;
> -import java.util.Locale;
>  import java.util.Map;
> -import java.util.TimeZone;
>
>  /**
>   * Tests for basic content cache
> @@ -41,7 +38,7 @@
>    @Override
>    public void setUp() throws Exception {
>      super.setUp();
> -    cache = new BasicHttpCache();
> +    cache = new BasicHttpCache(10);
>    }
>
>    @Override
>
> Modified: incubator/shindig/trunk/java/gadgets/src/test/java/org/ 
> apache/shindig/gadgets/http/BasicHttpFetcherTest.java
> URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/ 
> gadgets/src/test/java/org/apache/shindig/gadgets/http/ 
> BasicHttpFetcherTest.java?rev=657495&r1=657494&r2=657495&view=diff
> ====================================================================== 
> ========
> --- incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/ 
> shindig/gadgets/http/BasicHttpFetcherTest.java (original)
> +++ incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/ 
> shindig/gadgets/http/BasicHttpFetcherTest.java Sat May 17 21:50:15  
> 2008
> @@ -25,7 +25,7 @@
>  import java.net.URI;
>
>  public class BasicHttpFetcherTest extends TestCase {
> -  private HttpCache cache = new BasicHttpCache();
> +  private HttpCache cache = new BasicHttpCache(10);
>    private HttpFetcher fetcher
>        = new BasicHttpFetcher(cache, Integer.MAX_VALUE);
>
>
>


Re: svn commit: r657495 - in /incubator/shindig/trunk/java/gadgets: conf/ src/main/java/org/apache/shindig/gadgets/http/ src/test/java/org/apache/shindig/gadgets/ src/test/java/org/apache/shindig/gadgets/http/

Posted by Ian Boston <ie...@tfd.co.uk>.
Hope you dont mind, I did a patch anyway, SHINDIG-279, its not much  
code.
Ian



On 18 May 2008, at 05:50, etnu@apache.org wrote:

> Author: etnu
> Date: Sat May 17 21:50:15 2008
> New Revision: 657495
>
> URL: http://svn.apache.org/viewvc?rev=657495&view=rev
> Log:
> Modified BasicHttpCache to use an LRU cache instead of a map.
>
>
> Modified:
>     incubator/shindig/trunk/java/gadgets/conf/gadgets.properties
>     incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/ 
> shindig/gadgets/http/BasicHttpCache.java
>     incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/ 
> shindig/gadgets/SigningFetcherTest.java
>     incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/ 
> shindig/gadgets/http/BasicHttpCacheTest.java
>     incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/ 
> shindig/gadgets/http/BasicHttpFetcherTest.java
>
> Modified: incubator/shindig/trunk/java/gadgets/conf/gadgets.properties
> URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/ 
> gadgets/conf/gadgets.properties? 
> rev=657495&r1=657494&r2=657495&view=diff
> ====================================================================== 
> ========
> --- incubator/shindig/trunk/java/gadgets/conf/gadgets.properties  
> (original)
> +++ incubator/shindig/trunk/java/gadgets/conf/gadgets.properties  
> Sat May 17 21:50:15 2008
> @@ -7,3 +7,4 @@
>  signing.key-file=
>  locked-domain.enabled=false
>  locked-domain.embed-host=127.0.0.1:8080
> +cache.capacity=10000
>
> Modified: incubator/shindig/trunk/java/gadgets/src/main/java/org/ 
> apache/shindig/gadgets/http/BasicHttpCache.java
> URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/ 
> gadgets/src/main/java/org/apache/shindig/gadgets/http/ 
> BasicHttpCache.java?rev=657495&r1=657494&r2=657495&view=diff
> ====================================================================== 
> ========
> --- incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/ 
> shindig/gadgets/http/BasicHttpCache.java (original)
> +++ incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/ 
> shindig/gadgets/http/BasicHttpCache.java Sat May 17 21:50:15 2008
> @@ -17,30 +17,38 @@
>   */
>  package org.apache.shindig.gadgets.http;
>
> +import org.apache.shindig.common.cache.Cache;
> +import org.apache.shindig.common.cache.LruCache;
> +
> +import com.google.inject.Inject;
> +import com.google.inject.name.Named;
> +
>  import java.net.URI;
> -import java.util.Map;
> -import java.util.WeakHashMap;
>
>  /**
>   * Simple cache of HttpResponse. Uses WeakHashMap for memory  
> management
>   */
>  public class BasicHttpCache extends AbstractHttpCache {
>
> -  private final Map<URI, HttpResponse> cache
> -      = new WeakHashMap<URI, HttpResponse>();
> +  private final Cache<URI, HttpResponse> cache;
>
>    @Override
>    protected HttpResponse getResponseImpl(URI uri) {
> -    return cache.get(uri);
> +    return cache.getElement(uri);
>    }
>
>    @Override
>    protected void addResponseImpl(URI uri, HttpResponse response) {
> -    cache.put(uri, response);
> +    cache.addElement(uri, response);
>    }
>
>    @Override
>    protected HttpResponse removeResponseImpl(URI uri) {
> -    return cache.remove(uri);
> +    return cache.removeElement(uri);
> +  }
> +
> +  @Inject
> +  public BasicHttpCache(@Named("cache.capacity") int capacity) {
> +    cache = LruCache.create(capacity);
>    }
>  }
>
> Modified: incubator/shindig/trunk/java/gadgets/src/test/java/org/ 
> apache/shindig/gadgets/SigningFetcherTest.java
> URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/ 
> gadgets/src/test/java/org/apache/shindig/gadgets/ 
> SigningFetcherTest.java?rev=657495&r1=657494&r2=657495&view=diff
> ====================================================================== 
> ========
> --- incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/ 
> shindig/gadgets/SigningFetcherTest.java (original)
> +++ incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/ 
> shindig/gadgets/SigningFetcherTest.java Sat May 17 21:50:15 2008
> @@ -14,22 +14,22 @@
>
>  package org.apache.shindig.gadgets;
>
> -import junit.framework.TestCase;
> -
>  import org.apache.shindig.common.BasicSecurityToken;
>  import org.apache.shindig.gadgets.http.BasicHttpCache;
>  import org.apache.shindig.gadgets.http.HttpCache;
>  import org.apache.shindig.gadgets.http.HttpRequest;
>
>  import net.oauth.OAuth;
> -import net.oauth.OAuth.Parameter;
>  import net.oauth.OAuthAccessor;
>  import net.oauth.OAuthConsumer;
>  import net.oauth.OAuthMessage;
>  import net.oauth.OAuthValidator;
>  import net.oauth.SimpleOAuthValidator;
> +import net.oauth.OAuth.Parameter;
>  import net.oauth.signature.RSA_SHA1;
>
> +import junit.framework.TestCase;
> +
>  import java.net.URI;
>  import java.net.URISyntaxException;
>  import java.net.URL;
> @@ -41,7 +41,7 @@
>   */
>  public class SigningFetcherTest extends TestCase {
>    private static final String PRIVATE_KEY_TEXT =
> -     
> "MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBALRiMLAh9iimur8V" +
> +     
> "MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBALRiMLAh9iimur8V" +
>      "A7qVvdqxevEuUkW4K+2KdMXmnQbG9Aa7k7eBjK1S 
> +0LYmVjPKlJGNXHDGuy5Fw/d" +
>      "7rjVJ0BLB+ubPK8iA/ 
> Tw3hLQgXMRRGRXXCn8ikfuQfjUS1uZSatdLB81mydBETlJ" +
>      "hI6GH4twrbDJCR2Bwy/ 
> XWXgqgGRzAgMBAAECgYBYWVtleUzavkbrPjy0T5FMou8H" +
> @@ -79,7 +79,7 @@
>    @Override
>    public void setUp() throws Exception {
>      super.setUp();
> -    cache = new BasicHttpCache();
> +    cache = new BasicHttpCache(10);
>      interceptor = new InterceptingContentFetcher();
>      authToken = new BasicSecurityToken("o", "v", "a", "d", "u", "m");
>      signer = SigningFetcher.makeFromB64PrivateKey(cache,
> @@ -190,7 +190,7 @@
>      assertTrue(contains(queryParams, "a", "b"));
>      assertTrue(contains(queryParams, "a", "c"));
>    }
> -
> +
>    public void testValidParameterCharacters() throws Exception {
>      String weird = "~!@$*()-_[]:,./";
>      HttpRequest unsigned
>
> Modified: incubator/shindig/trunk/java/gadgets/src/test/java/org/ 
> apache/shindig/gadgets/http/BasicHttpCacheTest.java
> URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/ 
> gadgets/src/test/java/org/apache/shindig/gadgets/http/ 
> BasicHttpCacheTest.java?rev=657495&r1=657494&r2=657495&view=diff
> ====================================================================== 
> ========
> --- incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/ 
> shindig/gadgets/http/BasicHttpCacheTest.java (original)
> +++ incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/ 
> shindig/gadgets/http/BasicHttpCacheTest.java Sat May 17 21:50:15 2008
> @@ -17,19 +17,16 @@
>   */
>  package org.apache.shindig.gadgets.http;
>
> -import junit.framework.TestCase;
> -
>  import org.apache.shindig.gadgets.servlet.HttpUtil;
>
> +import junit.framework.TestCase;
> +
>  import java.net.URI;
> -import java.text.DateFormat;
>  import java.util.Arrays;
>  import java.util.Date;
>  import java.util.HashMap;
>  import java.util.List;
> -import java.util.Locale;
>  import java.util.Map;
> -import java.util.TimeZone;
>
>  /**
>   * Tests for basic content cache
> @@ -41,7 +38,7 @@
>    @Override
>    public void setUp() throws Exception {
>      super.setUp();
> -    cache = new BasicHttpCache();
> +    cache = new BasicHttpCache(10);
>    }
>
>    @Override
>
> Modified: incubator/shindig/trunk/java/gadgets/src/test/java/org/ 
> apache/shindig/gadgets/http/BasicHttpFetcherTest.java
> URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/ 
> gadgets/src/test/java/org/apache/shindig/gadgets/http/ 
> BasicHttpFetcherTest.java?rev=657495&r1=657494&r2=657495&view=diff
> ====================================================================== 
> ========
> --- incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/ 
> shindig/gadgets/http/BasicHttpFetcherTest.java (original)
> +++ incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/ 
> shindig/gadgets/http/BasicHttpFetcherTest.java Sat May 17 21:50:15  
> 2008
> @@ -25,7 +25,7 @@
>  import java.net.URI;
>
>  public class BasicHttpFetcherTest extends TestCase {
> -  private HttpCache cache = new BasicHttpCache();
> +  private HttpCache cache = new BasicHttpCache(10);
>    private HttpFetcher fetcher
>        = new BasicHttpFetcher(cache, Integer.MAX_VALUE);
>
>
>