You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@shindig.apache.org by li...@apache.org on 2012/02/19 10:09:37 UTC

svn commit: r1290974 - /shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/ContentRewriterFeature.java

Author: lindner
Date: Sun Feb 19 09:09:37 2012
New Revision: 1290974

URL: http://svn.apache.org/viewvc?rev=1290974&view=rev
Log:
use a LoadingCache for ContentRewriter Config cache

Modified:
    shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/ContentRewriterFeature.java

Modified: shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/ContentRewriterFeature.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/ContentRewriterFeature.java?rev=1290974&r1=1290973&r2=1290974&view=diff
==============================================================================
--- shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/ContentRewriterFeature.java (original)
+++ shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/ContentRewriterFeature.java Sun Feb 19 09:09:37 2012
@@ -19,6 +19,9 @@ package org.apache.shindig.gadgets.rewri
 
 import com.google.common.base.Splitter;
 import com.google.common.base.Strings;
+import com.google.common.cache.CacheBuilder;
+import com.google.common.cache.CacheLoader;
+import com.google.common.cache.LoadingCache;
 import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.ImmutableSortedSet;
 import com.google.common.collect.Lists;
@@ -72,6 +75,18 @@ public class ContentRewriterFeature {
     private final GadgetSpecFactory specFactory;
     private final Provider<DefaultConfig> defaultConfig;
 
+    private final LoadingCache<GadgetSpec, Config> rewriterConfigCache = CacheBuilder
+        .newBuilder()
+        .weakKeys()
+        .build(
+            new CacheLoader<GadgetSpec, Config>() {
+              @Override
+              public Config load(GadgetSpec spec) throws Exception {
+                return new Config(spec, defaultConfig.get());
+              }
+            }
+        );
+
     @Inject
     public Factory(GadgetSpecFactory specFactory, Provider<DefaultConfig> defaultConfig) {
       this.specFactory = specFactory;
@@ -112,12 +127,7 @@ public class ContentRewriterFeature {
     }
 
     public Config get(GadgetSpec spec) {
-      Config rewriterFeature =
-          (Config)spec.getAttribute("content-rewriter");
-      if (rewriterFeature != null) return rewriterFeature;
-      rewriterFeature = new Config(spec, defaultConfig.get());
-      spec.setAttribute("content-rewriter", rewriterFeature);
-      return rewriterFeature;
+      return rewriterConfigCache.getUnchecked(spec);
     }
 
     /**
@@ -163,7 +173,6 @@ public class ContentRewriterFeature {
 
     // Lazily computed
     private Integer fingerprint;
-    private static final Pattern COMMA_WHITESPACE_PATTERN = Pattern.compile("\\s*,\\s*");
 
     /**
      * Constructor which takes a gadget spec and container settings