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());
+ }
}
}