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

svn commit: r1386936 - in /shindig/trunk/java/gadgets/src: main/java/org/apache/shindig/gadgets/uri/AllJsIframeVersioner.java test/java/org/apache/shindig/gadgets/uri/AllJsIframeVersionerTest.java

Author: rbaxter85
Date: Tue Sep 18 00:36:31 2012
New Revision: 1386936

URL: http://svn.apache.org/viewvc?rev=1386936&view=rev
Log:
SHINDIG-1867
Committed For Mashall Shi
AllJsIFrameVersioner causes large memory allocation

Modified:
    shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/uri/AllJsIframeVersioner.java
    shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/uri/AllJsIframeVersionerTest.java

Modified: shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/uri/AllJsIframeVersioner.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/uri/AllJsIframeVersioner.java?rev=1386936&r1=1386935&r2=1386936&view=diff
==============================================================================
--- shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/uri/AllJsIframeVersioner.java (original)
+++ shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/uri/AllJsIframeVersioner.java Tue Sep 18 00:36:31 2012
@@ -18,6 +18,9 @@
  */
 package org.apache.shindig.gadgets.uri;
 
+import java.nio.charset.Charset;
+import java.security.MessageDigest;
+
 import org.apache.shindig.common.uri.Uri;
 import org.apache.shindig.common.util.HashUtil;
 import org.apache.shindig.gadgets.features.FeatureRegistry;
@@ -47,11 +50,17 @@ public class AllJsIframeVersioner implem
 
   @Inject
   public AllJsIframeVersioner(FeatureRegistry registry) {
-    StringBuilder jsBuf = new StringBuilder();
+    Charset charset = Charset.defaultCharset();
+    MessageDigest digest = HashUtil.getMessageDigest();
+    digest.reset();
     for (FeatureResource resource : registry.getAllFeatures().getResources()) {
-      jsBuf.append(resource.getContent()).append(resource.getDebugContent());
+      // Emulate StringBuilder append of content
+      String content = resource.getContent();
+      digest.update((content == null ? "null" : content).getBytes(charset));
+      content = resource.getDebugContent();
+      digest.update((content == null ? "null" : content).getBytes(charset));
     }
-    allJsChecksum = HashUtil.checksum(jsBuf.toString().getBytes());
+    allJsChecksum = HashUtil.bytesToHex(digest.digest());
   }
 
   public String version(Uri gadgetUri, String container) {

Modified: shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/uri/AllJsIframeVersionerTest.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/uri/AllJsIframeVersionerTest.java?rev=1386936&r1=1386935&r2=1386936&view=diff
==============================================================================
--- shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/uri/AllJsIframeVersionerTest.java (original)
+++ shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/uri/AllJsIframeVersionerTest.java Tue Sep 18 00:36:31 2012
@@ -35,6 +35,8 @@ import org.junit.Test;
 
 import com.google.common.collect.Lists;
 
+import java.nio.charset.Charset;
+import java.security.MessageDigest;
 import java.util.List;
 
 public class AllJsIframeVersionerTest {
@@ -49,7 +51,11 @@ public class AllJsIframeVersionerTest {
   public void setUp() {
     String featureContent = "THE_FEATURE_CONTENT";
     String debugContent = "FEATURE_DEBUG_CONTENT";
-    featureChecksum = HashUtil.checksum((featureContent + debugContent).getBytes());
+    Charset charset = Charset.defaultCharset();
+    MessageDigest digest = HashUtil.getMessageDigest();
+    digest.update(featureContent.getBytes(charset));
+    digest.update(debugContent.getBytes(charset));
+    featureChecksum = HashUtil.bytesToHex(digest.digest());
     FeatureRegistry registry = createMock(FeatureRegistry.class);
     FeatureResource resource = new FeatureResource.Simple(featureContent, debugContent, "js");
     List<FeatureResource> allResources = Lists.newArrayList(resource);