You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@shindig.apache.org by jo...@apache.org on 2011/03/23 00:46:25 UTC

svn commit: r1084412 - in /shindig/trunk/java/gadgets/src: main/java/org/apache/shindig/gadgets/features/ main/java/org/apache/shindig/gadgets/js/ main/java/org/apache/shindig/gadgets/rewrite/js/ main/java/org/apache/shindig/gadgets/servlet/ test/java/...

Author: johnh
Date: Tue Mar 22 23:46:25 2011
New Revision: 1084412

URL: http://svn.apache.org/viewvc?rev=1084412&view=rev
Log:
Complete conversion of JS API impls to list of JsContent, by passing this Iterable into JsCompiler.

Also accommodates Michael Hermanto's suggestions regarding conversion of the previous usages.


Modified:
    shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/features/FeatureResource.java
    shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/js/GetJsContentProcessor.java
    shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/js/JavascriptModule.java
    shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/js/JsResponse.java
    shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/js/JsResponseBuilder.java
    shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/js/DefaultJsCompiler.java
    shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/js/ExportJsCompiler.java
    shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/js/JsCompiler.java
    shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/JsHandler.java
    shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/js/GetJsContentProcessorTest.java
    shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/js/DefaultJsCompilerTest.java
    shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/js/ExportJsCompilerTest.java

Modified: shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/features/FeatureResource.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/features/FeatureResource.java?rev=1084412&r1=1084411&r2=1084412&view=diff
==============================================================================
--- shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/features/FeatureResource.java (original)
+++ shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/features/FeatureResource.java Tue Mar 22 23:46:25 2011
@@ -22,7 +22,7 @@ package org.apache.shindig.gadgets.featu
  */
 public interface FeatureResource {
   /**
-   * @return "Normal"-mode content for the feature, eg. obfuscated JS.
+   * @return "Normal"-mode content for the feature, eg. optimized/obfuscated JS.
    */
   String getContent();
   

Modified: shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/js/GetJsContentProcessor.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/js/GetJsContentProcessor.java?rev=1084412&r1=1084411&r2=1084412&view=diff
==============================================================================
--- shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/js/GetJsContentProcessor.java (original)
+++ shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/js/GetJsContentProcessor.java Tue Mar 22 23:46:25 2011
@@ -43,7 +43,7 @@ public class GetJsContentProcessor imple
         jsHandler.getJsContent(jsUri, request.getHost());
     builder.setProxyCacheable(handlerResponse.isProxyCacheable());    
     setResponseCacheTtl(builder, jsUri.getStatus());
-    builder.appendJs(handlerResponse.allJs());
+    builder.appendJs(handlerResponse.getAllJsContent());
     return true;
   }
 

Modified: shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/js/JavascriptModule.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/js/JavascriptModule.java?rev=1084412&r1=1084411&r2=1084412&view=diff
==============================================================================
--- shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/js/JavascriptModule.java (original)
+++ shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/js/JavascriptModule.java Tue Mar 22 23:46:25 2011
@@ -18,6 +18,9 @@
   
 package org.apache.shindig.gadgets.js;
 
+import org.apache.shindig.gadgets.rewrite.js.ClosureJsCompiler;
+import org.apache.shindig.gadgets.rewrite.js.JsCompiler;
+
 import com.google.common.collect.ImmutableList;
 import com.google.inject.AbstractModule;
 import com.google.inject.Inject;
@@ -34,6 +37,12 @@ public class JavascriptModule extends Ab
   protected void configure() {
     // nothing to configure here
   }
+
+  @Provides
+  @Inject
+  public JsCompiler provideJsCompiler(ClosureJsCompiler jsCompiler) {
+    return jsCompiler;
+  }
   
   @Provides
   @Inject

Modified: shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/js/JsResponse.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/js/JsResponse.java?rev=1084412&r1=1084411&r2=1084412&view=diff
==============================================================================
--- shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/js/JsResponse.java (original)
+++ shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/js/JsResponse.java Tue Mar 22 23:46:25 2011
@@ -47,7 +47,7 @@ public class JsResponse {
   public String getJsCode() {
     if (codeString == null) {
       StringBuilder sb = new StringBuilder();
-      for (JsContent js : allJs()) {
+      for (JsContent js : getAllJsContent()) {
         sb.append(js.get());
       }
       codeString = sb.toString();
@@ -58,7 +58,7 @@ public class JsResponse {
   /**
    * Returns an iterator starting at the beginning of all JS code in the response.
    */
-  public Iterable<JsContent> allJs() {
+  public Iterable<JsContent> getAllJsContent() {
     return jsCode;
   }
   

Modified: shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/js/JsResponseBuilder.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/js/JsResponseBuilder.java?rev=1084412&r1=1084411&r2=1084412&view=diff
==============================================================================
--- shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/js/JsResponseBuilder.java (original)
+++ shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/js/JsResponseBuilder.java Tue Mar 22 23:46:25 2011
@@ -45,7 +45,7 @@ public class JsResponseBuilder {
   }
 
   public JsResponseBuilder(JsResponse response) {
-    jsCode = Lists.newLinkedList(response.allJs());
+    jsCode = Lists.newLinkedList(response.getAllJsContent());
     errors = Lists.newLinkedList(response.getErrors());
     statusCode = response.getStatusCode();
     cacheTtlSecs = response.getCacheTtlSecs();
@@ -116,6 +116,22 @@ public class JsResponseBuilder {
   }
   
   /**
+   * Adds an error to the response
+   */
+  public JsResponseBuilder addError(String error) {
+    this.errors.add(error);
+    return this;
+  }
+  
+  /**
+   * Adds multiple errors to the response
+   */
+  public JsResponseBuilder addErrors(List<String> errs) {
+    this.errors.addAll(errs);
+    return this;
+  }
+  
+  /**
    * Sets the cache TTL in seconds for the response being built.
    * 
    * 0 seconds means "no cache"; a value below 0 means "cache forever".

Modified: shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/js/DefaultJsCompiler.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/js/DefaultJsCompiler.java?rev=1084412&r1=1084411&r2=1084412&view=diff
==============================================================================
--- shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/js/DefaultJsCompiler.java (original)
+++ shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/js/DefaultJsCompiler.java Tue Mar 22 23:46:25 2011
@@ -50,8 +50,8 @@ public class DefaultJsCompiler implement
     return jsContent;
   }
 
-  public JsResponse compile(JsUri jsUri, String content, List<String> externs) {
-    return new JsResponseBuilder().appendJs(content, "[passthrough]").build();
+  public JsResponse compile(JsUri jsUri, Iterable<JsContent> content, List<String> externs) {
+    return new JsResponseBuilder().appendJs(content).build();
   }
 
   protected String getFeatureContent(JsUri jsUri, FeatureResource resource) {

Modified: shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/js/ExportJsCompiler.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/js/ExportJsCompiler.java?rev=1084412&r1=1084411&r2=1084412&view=diff
==============================================================================
--- shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/js/ExportJsCompiler.java (original)
+++ shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/js/ExportJsCompiler.java Tue Mar 22 23:46:25 2011
@@ -73,13 +73,13 @@ public class ExportJsCompiler extends De
   }
 
   @Override
-  public JsResponse compile(JsUri jsUri, String content, List<String> externs) {
+  public JsResponse compile(JsUri jsUri, Iterable<JsContent> content, List<String> externs) {
     GadgetContext ctx = new JsGadgetContext(jsUri);
-    StringBuilder builder = new StringBuilder();
-    builder.append(getExportJsFeature(ctx));
-    builder.append(content);
+    JsResponseBuilder builder = new JsResponseBuilder();
+    appendExportJs(builder, ctx);
+    builder.appendJs(content);
     // TODO: attach this to a real JS compiler jscomp.Compiler.
-    return new JsResponseBuilder().appendJs(builder.toString(), "[export-compiled]").build();
+    return builder.build();
   }
 
   @Override
@@ -109,16 +109,15 @@ public class ExportJsCompiler extends De
     return new JsContent(sb.toString(), "[generated-symbol-exports]", bundle.getName());
   }
 
-  private String getExportJsFeature(GadgetContext context) {
-    StringBuilder builder = new StringBuilder();
+  private void appendExportJs(JsResponseBuilder builder, GadgetContext context) {
     LookupResult lookup = featureRegistry.getFeatureResources(context,
         ImmutableList.of(FEATURE_NAME), null);
     for (FeatureBundle bundle : lookup.getBundles()) {
       for (FeatureResource resource : bundle.getResources()) {
-        builder.append(resource.getDebugContent());
+        builder.appendJs(new JsContent(
+            resource.getDebugContent(), resource.getName(), bundle.getName()));
       }
     }
-    return builder.toString();
   }
 
   private static class Input {

Modified: shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/js/JsCompiler.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/js/JsCompiler.java?rev=1084412&r1=1084411&r2=1084412&view=diff
==============================================================================
--- shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/js/JsCompiler.java (original)
+++ shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/js/JsCompiler.java Tue Mar 22 23:46:25 2011
@@ -48,5 +48,5 @@ public interface JsCompiler {
    * @param externs The externs.
    * @return A compilation result object.
    */
-  JsResponse compile(JsUri jsUri, String content, List<String> externs);
+  JsResponse compile(JsUri jsUri, Iterable<JsContent> content, List<String> externs);
 }

Modified: shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/JsHandler.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/JsHandler.java?rev=1084412&r1=1084411&r2=1084412&view=diff
==============================================================================
--- shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/JsHandler.java (original)
+++ shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/JsHandler.java Tue Mar 22 23:46:25 2011
@@ -119,7 +119,7 @@ public class JsHandler {
     responseBuilder.setProxyCacheable(isProxyCacheable);
 
     // Compile all pre-processed features.
-    JsResponse result = compiler.compile(jsUri, responseBuilder.build().getJsCode(), allExterns);
+    JsResponse result = compiler.compile(jsUri, responseBuilder.build().getAllJsContent(), allExterns);
 
     String code = result.getJsCode();
     if (code != null) {

Modified: shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/js/GetJsContentProcessorTest.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/js/GetJsContentProcessorTest.java?rev=1084412&r1=1084411&r2=1084412&view=diff
==============================================================================
--- shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/js/GetJsContentProcessorTest.java (original)
+++ shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/js/GetJsContentProcessorTest.java Tue Mar 22 23:46:25 2011
@@ -98,7 +98,7 @@ public class GetJsContentProcessorTest {
     EasyMock.expect(handler.getJsContent(jsUri, HOST)).andReturn(handlerResponse);
     EasyMock.expect(request.getHost()).andReturn(HOST);
     EasyMock.expect(request.getJsUri()).andReturn(jsUri);
-    EasyMock.expect(handlerResponse.allJs()).andReturn(
+    EasyMock.expect(handlerResponse.getAllJsContent()).andReturn(
         ImmutableList.of(new JsContent(JS_CODE, "source", "feature")));
     EasyMock.expect(handlerResponse.isProxyCacheable()).andReturn(proxyCacheable);
     EasyMock.expect(jsUri.getStatus()).andReturn(uriStatus);

Modified: shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/js/DefaultJsCompilerTest.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/js/DefaultJsCompilerTest.java?rev=1084412&r1=1084411&r2=1084412&view=diff
==============================================================================
--- shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/js/DefaultJsCompilerTest.java (original)
+++ shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/js/DefaultJsCompilerTest.java Tue Mar 22 23:46:25 2011
@@ -22,6 +22,7 @@ import static org.easymock.EasyMock.expe
 import static org.easymock.EasyMock.replay;
 import static org.junit.Assert.assertEquals;
 
+import com.google.common.collect.ImmutableList;
 import com.google.common.collect.Lists;
 
 import org.apache.shindig.gadgets.features.FeatureRegistry.FeatureBundle;
@@ -77,7 +78,8 @@ public class DefaultJsCompilerTest {
 
   @Test
   public void testCompile() throws Exception {
-    JsResponse actual = compiler.compile(null, COMPILE_CONTENT, null);
+    JsResponse actual = compiler.compile(null, 
+        ImmutableList.of(new JsContent(COMPILE_CONTENT, "js")), null);
     assertEquals(COMPILE_CONTENT, actual.getJsCode());
     assertEquals(0, actual.getErrors().size());
   }

Modified: shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/js/ExportJsCompilerTest.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/js/ExportJsCompilerTest.java?rev=1084412&r1=1084411&r2=1084412&view=diff
==============================================================================
--- shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/js/ExportJsCompilerTest.java (original)
+++ shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/js/ExportJsCompilerTest.java Tue Mar 22 23:46:25 2011
@@ -72,8 +72,11 @@ public class ExportJsCompilerTest {
   @Before
   public void setUp() throws Exception {
     FeatureResource featureResourceMock = mockResource(true, EXPORT_JS_DEB, EXPORT_JS_OPT);
-    FeatureRegistry.FeatureBundle featureBundle = new FeatureRegistry.FeatureBundle(
-        null, ImmutableList.of(featureResourceMock));
+    FeatureRegistry.FeatureBundle featureBundle = createMock(FeatureRegistry.FeatureBundle.class);
+    expect(featureBundle.getResources()).andReturn(
+        ImmutableList.of(featureResourceMock)).anyTimes();
+    expect(featureBundle.getName()).andReturn("feature").anyTimes();
+    replay(featureBundle);
     LookupResult lookupMock = mockLookupResult(featureBundle);
     FeatureRegistry featureRegistryMock = mockRegistry(lookupMock);
     compiler = new ExportJsCompiler(featureRegistryMock);
@@ -170,14 +173,16 @@ public class ExportJsCompilerTest {
   @Test
   public void testCompileNotEmpty() throws Exception {
     JsUri jsUri = mockJsUri(JsCompileMode.ALL_RUN_TIME);
-    JsResponse actual = compiler.compile(jsUri, COMPILE_CONTENT, EXTERNS);
+    JsResponse actual = compiler.compile(jsUri,
+        ImmutableList.of(new JsContent(COMPILE_CONTENT, "js")), EXTERNS);
     assertEquals(EXPORT_JS_DEB + COMPILE_CONTENT, actual.getJsCode());
   }
 
   @Test
   public void testCompileEmpty() throws Exception {
     JsUri jsUri = mockJsUri(JsCompileMode.ALL_RUN_TIME);
-    JsResponse actual = compiler.compile(jsUri, "", EXTERNS);
+    JsResponse actual = compiler.compile(jsUri,
+        ImmutableList.of(new JsContent("", "js")), EXTERNS);
     assertEquals(EXPORT_JS_DEB, actual.getJsCode());
   }