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/25 23:46:25 UTC

svn commit: r1085589 - in /shindig/trunk/java/gadgets/src: main/java/org/apache/shindig/gadgets/js/ test/java/org/apache/shindig/gadgets/js/

Author: johnh
Date: Fri Mar 25 22:46:25 2011
New Revision: 1085589

URL: http://svn.apache.org/viewvc?rev=1085589&view=rev
Log:
Re-wrap all JS in anonymous function closure, and set ExportJsCompiler as the default.

The combination of these, with a small fix to AnonFuncWrappingProcessor
(doing so only in non-BUILD-time compile mode) completes refactoring to
the Processor mode of wrapped-and-exported JS for both debug and
compiled.


Modified:
    shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/js/AnonFuncWrappingProcessor.java
    shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/js/JavascriptModule.java
    shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/js/AnonFuncWrappingProcessorTest.java

Modified: shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/js/AnonFuncWrappingProcessor.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/js/AnonFuncWrappingProcessor.java?rev=1085589&r1=1085588&r2=1085589&view=diff
==============================================================================
--- shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/js/AnonFuncWrappingProcessor.java (original)
+++ shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/js/AnonFuncWrappingProcessor.java Fri Mar 25 22:46:25 2011
@@ -17,13 +17,15 @@
  */
 package org.apache.shindig.gadgets.js;
 
-public class AnonFuncWrappingProcessor implements JsProcessor {
+import org.apache.shindig.gadgets.JsCompileMode;
 
+public class AnonFuncWrappingProcessor implements JsProcessor {
   public boolean process(JsRequest jsRequest, JsResponseBuilder builder)
       throws JsException {
-    builder.prependJs("(function() {\n", "[js-anon-wrapper]");
-    builder.appendJs("\n})();", "[js-anon-wrapper]");
+    if (jsRequest.getJsUri().getCompileMode() != JsCompileMode.BUILD_TIME) {
+      builder.prependJs("(function() {\n", "[js-anon-wrapper]");
+      builder.appendJs("\n})();", "[js-anon-wrapper]");
+    }
     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=1085589&r1=1085588&r2=1085589&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 Fri Mar 25 22:46:25 2011
@@ -25,6 +25,9 @@ import com.google.inject.Provides;
 
 import java.util.List;
 
+import org.apache.shindig.gadgets.rewrite.js.ExportJsCompiler;
+import org.apache.shindig.gadgets.rewrite.js.JsCompiler;
+
 /**
  * Guice configuration for the Javascript serving pipeline.
  */
@@ -37,6 +40,12 @@ public class JavascriptModule extends Ab
   
   @Provides
   @Inject
+  public JsCompiler provideJsCompiler(ExportJsCompiler compiler) {
+    return compiler;
+  }
+  
+  @Provides
+  @Inject
   public List<JsProcessor> provideProcessors(
       InjectJsInfoVariableProcessor injectJsInfoVariableProcessor,
       JsLoadProcessor jsLoaderGeneratorProcessor,
@@ -45,11 +54,11 @@ public class JavascriptModule extends Ab
       ConfigInjectionProcessor configInjectionProcessor,
       AddOnloadFunctionProcessor addOnloadFunctionProcessor,
       AddJsLoadCallbackProcessor addJsLoadCallbackProcessor,
-      //AnonFuncWrappingProcessor jsWrapperProcessor,
+      AnonFuncWrappingProcessor anonFuncProcessor,
       CompilationProcessor compilationProcessor) {
     return ImmutableList.of(injectJsInfoVariableProcessor, jsLoaderGeneratorProcessor,
         ifModifiedSinceProcessor, getJsContentProcessor, configInjectionProcessor,
-        addOnloadFunctionProcessor, addJsLoadCallbackProcessor, /*jsWrapperProcessor,*/
+        addOnloadFunctionProcessor, addJsLoadCallbackProcessor, anonFuncProcessor,
         compilationProcessor);
   }
   

Modified: shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/js/AnonFuncWrappingProcessorTest.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/js/AnonFuncWrappingProcessorTest.java?rev=1085589&r1=1085588&r2=1085589&view=diff
==============================================================================
--- shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/js/AnonFuncWrappingProcessorTest.java (original)
+++ shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/js/AnonFuncWrappingProcessorTest.java Fri Mar 25 22:46:25 2011
@@ -18,23 +18,47 @@
 package org.apache.shindig.gadgets.js;
 
 import static org.easymock.EasyMock.createControl;
+import static org.easymock.EasyMock.expect;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertTrue;
 
+import org.apache.shindig.gadgets.JsCompileMode;
+import org.apache.shindig.gadgets.uri.JsUriManager.JsUri;
 import org.easymock.IMocksControl;
 
 import org.junit.Test;
 
 public class AnonFuncWrappingProcessorTest {
   @Test
-  public void wrapCode() throws Exception {
+  public void wrapCodeAllRunTime() throws Exception {
+    checkWrapCode(JsCompileMode.ALL_RUN_TIME, true);
+  }
+  
+  @Test
+  public void wrapCodeExplicitRunTime() throws Exception {
+    checkWrapCode(JsCompileMode.EXPLICIT_RUN_TIME, true);
+  }
+  
+  @Test
+  public void wrapCodeBuildTimeDoesNothing() throws Exception {
+    checkWrapCode(JsCompileMode.BUILD_TIME, false);
+  }
+  
+  private void checkWrapCode(JsCompileMode mode, boolean wraps) throws Exception {
     IMocksControl control = createControl();
     JsRequest request = control.createMock(JsRequest.class);
+    JsUri jsUri = control.createMock(JsUri.class);
+    expect(jsUri.getCompileMode()).andReturn(mode);
+    expect(request.getJsUri()).andReturn(jsUri);
     JsResponseBuilder builder = new JsResponseBuilder().appendJs("JS_CODE", "source");
     AnonFuncWrappingProcessor processor = new AnonFuncWrappingProcessor();
     control.replay();
     assertTrue(processor.process(request, builder));
     control.verify();
-    assertEquals("(function() {\nJS_CODE\n})();", builder.build().toJsString());
+    if (wraps) {
+      assertEquals("(function() {\nJS_CODE\n})();", builder.build().toJsString());
+    } else {
+      assertEquals("JS_CODE", builder.build().toJsString());
+    }
   }
 }