You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@shindig.apache.org by dd...@apache.org on 2012/09/19 18:33:37 UTC
svn commit: r1387677 - 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: ddumont
Date: Wed Sep 19 16:33:37 2012
New Revision: 1387677
URL: http://svn.apache.org/viewvc?rev=1387677&view=rev
Log:
SHINDIG-1867 - AllJsIFrameVersioner causes large memory allocation
Committed for Marshall Shi
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=1387677&r1=1387676&r2=1387677&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 Wed Sep 19 16:33:37 2012
@@ -18,6 +18,10 @@
*/
package org.apache.shindig.gadgets.uri;
+import java.io.UnsupportedEncodingException;
+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 +51,23 @@ public class AllJsIframeVersioner implem
@Inject
public AllJsIframeVersioner(FeatureRegistry registry) {
- StringBuilder jsBuf = new StringBuilder();
+ String charset = Charset.defaultCharset().name();
+ MessageDigest digest = HashUtil.getMessageDigest();
+ digest.reset();
for (FeatureResource resource : registry.getAllFeatures().getResources()) {
- jsBuf.append(resource.getContent()).append(resource.getDebugContent());
+ // Emulate StringBuilder append of content
+ update(digest, resource.getContent(), charset);
+ update(digest, resource.getDebugContent(), charset);
+ }
+ allJsChecksum = HashUtil.bytesToHex(digest.digest());
+ }
+
+ private void update(MessageDigest digest, String content, String charset) {
+ try {
+ digest.update((content == null ? "null" : content).getBytes(charset));
+ } catch (UnsupportedEncodingException e) {
+ digest.update((content == null ? "null" : content).getBytes());
}
- allJsChecksum = HashUtil.checksum(jsBuf.toString().getBytes());
}
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=1387677&r1=1387676&r2=1387677&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 Wed Sep 19 16:33:37 2012
@@ -35,6 +35,9 @@ import org.junit.Test;
import com.google.common.collect.Lists;
+import java.io.UnsupportedEncodingException;
+import java.nio.charset.Charset;
+import java.security.MessageDigest;
import java.util.List;
public class AllJsIframeVersionerTest {
@@ -49,7 +52,20 @@ public class AllJsIframeVersionerTest {
public void setUp() {
String featureContent = "THE_FEATURE_CONTENT";
String debugContent = "FEATURE_DEBUG_CONTENT";
- featureChecksum = HashUtil.checksum((featureContent + debugContent).getBytes());
+ String charset = Charset.defaultCharset().name();
+ MessageDigest digest = HashUtil.getMessageDigest();
+ try{
+ digest.update(featureContent.getBytes(charset));
+ } catch (UnsupportedEncodingException e) {
+ digest.update(featureContent.getBytes());
+ }
+ try{
+ digest.update(debugContent.getBytes(charset));
+ } catch (UnsupportedEncodingException e) {
+ digest.update(debugContent.getBytes());
+ }
+
+ featureChecksum = HashUtil.bytesToHex(digest.digest());
FeatureRegistry registry = createMock(FeatureRegistry.class);
FeatureResource resource = new FeatureResource.Simple(featureContent, debugContent, "js");
List<FeatureResource> allResources = Lists.newArrayList(resource);