Author: mhermanto
Date: Mon Apr 4 19:14:31 2011
New Revision: 1088735
URL: http://svn.apache.org/viewvc?rev=1088735&view=rev
Log:
Refactoring for dynamic JS compilation.
- Convert logic in ExportJsCompiler to Processor.
- Reference to FeatureBundle instead of String.
- Avoid FeatureRegistry look-ups.
http://codereview.appspot.com/4339045/
Added:
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/js/SeparatorCommentingProcessor.java
shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/js/SeparatorCommentingProcessorTest.java
Modified:
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/js/CajaJsSubtractingProcessor.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/JsContent.java
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/js/JsServingPipelineModule.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/java16/org/apache/shindig/gadgets/rewrite/js/ClosureJsCompiler.java
shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/js/CajaJsSubtractingProcessorTest.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/ExportJsCompilerTest.java
Modified:
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/js/CajaJsSubtractingProcessor.java
URL:
http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/js/CajaJsSubtractingProcessor.java?rev=1088735&r1=1088734&r2=1088735&view=diff
==============================================================================
---
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/js/CajaJsSubtractingProcessor.java
(original)
+++
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/js/CajaJsSubtractingProcessor.java
Mon Apr 4 19:14:31 2011
@@ -5,7 +5,6 @@ package org.apache.shindig.gadgets.js;
import com.google.common.annotations.VisibleForTesting;
import com.google.common.collect.ImmutableList;
-import org.apache.shindig.gadgets.features.FeatureRegistry.FeatureBundle;
import org.apache.shindig.gadgets.features.FeatureResource;
import org.apache.shindig.gadgets.uri.UriCommon;
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=1088735&r1=1088734&r2=1088735&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
Mon Apr 4 19:14:31 2011
@@ -35,7 +35,7 @@ import org.apache.shindig.gadgets.uri.Js
import org.apache.shindig.gadgets.uri.UriStatus;
/**
- * Retrieves the requested Javascript code using a {@link JsHandler}.
+ * Retrieves the requested Javascript code using a {@link JsProcessor}.
*/
public class GetJsContentProcessor implements JsProcessor {
private static final Collection<String> EMPTY_SET = Sets.newHashSet();
Modified:
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/js/JsContent.java
URL:
http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/js/JsContent.java?rev=1088735&r1=1088734&r2=1088735&view=diff
==============================================================================
---
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/js/JsContent.java
(original)
+++
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/js/JsContent.java
Mon Apr 4 19:14:31 2011
@@ -17,6 +17,7 @@
*/
package org.apache.shindig.gadgets.js;
+import org.apache.shindig.gadgets.features.FeatureRegistry.FeatureBundle;
import org.apache.shindig.gadgets.features.FeatureResource;
/**
@@ -27,24 +28,23 @@ import org.apache.shindig.gadgets.featur
public class JsContent {
private final String content;
private final String source;
- private final String feature;
+ private final FeatureBundle bundle;
private final FeatureResource resource;
-
+
public static JsContent fromText(String content, String source) {
- return new JsContent(content, source, "[built-in]", null);
+ return new JsContent(content, source, null, null);
}
- // TODO: Consider replacing String feature with FeatureBundle.
- public static JsContent fromFeature(String content, String source, String
feature,
- FeatureResource resource) {
- return new JsContent(content, source, feature, resource);
+ public static JsContent fromFeature(String content, String source,
+ FeatureBundle bundle, FeatureResource resource) {
+ return new JsContent(content, source, bundle, resource);
}
- private JsContent(String content, String source, String feature,
- FeatureResource resource) {
+ private JsContent(String content, String source,
+ FeatureBundle bundle, FeatureResource resource) {
this.content = content;
this.source = source;
- this.feature = feature;
+ this.bundle = bundle;
this.resource = resource;
}
@@ -56,8 +56,8 @@ public class JsContent {
return source;
}
- public String getFeature() {
- return feature;
+ public FeatureBundle getFeatureBundle() {
+ return bundle;
}
public FeatureResource getFeatureResource() {
Modified:
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/js/JsServingPipelineModule.java
URL:
http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/js/JsServingPipelineModule.java?rev=1088735&r1=1088734&r2=1088735&view=diff
==============================================================================
---
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/js/JsServingPipelineModule.java
(original)
+++
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/js/JsServingPipelineModule.java
Mon Apr 4 19:14:31 2011
@@ -43,6 +43,7 @@ public class JsServingPipelineModule ext
IfModifiedSinceProcessor ifModifiedSinceProcessor,
GetJsContentProcessor getJsContentProcessor,
CajaJsSubtractingProcessor cajaJsSubtractingProcessor,
+ SeparatorCommentingProcessor separatorCommentingProcessor,
ConfigInjectionProcessor configInjectionProcessor,
AddOnloadFunctionProcessor addOnloadFunctionProcessor,
AddJsLoadCallbackProcessor addJsLoadCallbackProcessor,
@@ -54,6 +55,7 @@ public class JsServingPipelineModule ext
ifModifiedSinceProcessor,
getJsContentProcessor,
cajaJsSubtractingProcessor,
+ separatorCommentingProcessor,
configInjectionProcessor,
addOnloadFunctionProcessor,
addJsLoadCallbackProcessor,
Added:
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/js/SeparatorCommentingProcessor.java
URL:
http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/js/SeparatorCommentingProcessor.java?rev=1088735&view=auto
==============================================================================
---
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/js/SeparatorCommentingProcessor.java
(added)
+++
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/js/SeparatorCommentingProcessor.java
Mon Apr 4 19:14:31 2011
@@ -0,0 +1,64 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations under the License.
+ */
+package org.apache.shindig.gadgets.js;
+
+import com.google.common.collect.ImmutableList;
+
+import org.apache.shindig.gadgets.features.FeatureRegistry.FeatureBundle;
+
+public class SeparatorCommentingProcessor implements JsProcessor {
+
+ public boolean process(JsRequest jsRequest, JsResponseBuilder builder) {
+ ImmutableList.Builder<JsContent> jsBuilder = ImmutableList.builder();
+
+ FeatureBundle lastFeature = null;
+ for (JsContent js : builder.build().getAllJsContent()) {
+ FeatureBundle feature = js.getFeatureBundle();
+
+ // Entering a new feature, from none/text.
+ if (lastFeature == null && feature != null) {
+ jsBuilder.add(newComment(feature, true));
+
+ // Entering a new feature, from another feature.
+ } else if (lastFeature != null && feature != null) {
+ jsBuilder.add(newComment(lastFeature, false));
+ jsBuilder.add(newComment(feature, true));
+
+ // Entering a text, from a feature
+ } else if (lastFeature != null && feature == null) {
+ jsBuilder.add(newComment(lastFeature, false));
+ }
+ jsBuilder.add(js);
+ lastFeature = feature;
+ }
+ // If there is a last feature.
+ if (lastFeature != null) {
+ jsBuilder.add(newComment(lastFeature, false));
+ }
+ builder.clearJs().appendAllJs(jsBuilder.build());
+ return true;
+ }
+
+ private JsContent newComment(FeatureBundle bundle, boolean start) {
+ String tag = start ? "start" : "end";
+ return JsContent.fromFeature(
+ "\n/* [" + tag + "] feature=" + bundle.getName() + " */\n",
+ "[comment-marker-" + tag + "]", bundle, null);
+ }
+
+}
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=1088735&r1=1088734&r2=1088735&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
Mon Apr 4 19:14:31 2011
@@ -17,6 +17,8 @@
*/
package org.apache.shindig.gadgets.rewrite.js;
+import com.google.common.collect.Lists;
+
import org.apache.shindig.gadgets.features.FeatureRegistry.FeatureBundle;
import org.apache.shindig.gadgets.features.FeatureResource;
import org.apache.shindig.gadgets.js.JsContent;
@@ -24,9 +26,6 @@ import org.apache.shindig.gadgets.js.JsR
import org.apache.shindig.gadgets.js.JsResponseBuilder;
import org.apache.shindig.gadgets.uri.JsUriManager.JsUri;
-import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.Lists;
-
import java.util.List;
/**
@@ -42,13 +41,11 @@ public class DefaultJsCompiler implement
if (resource.isExternal()) {
// Support external/type=url feature serving through document.write()
jsContent.add(JsContent.fromFeature("document.write('<script src=\"" +
content + "\"></script>')",
- "[external:" + content + "]", bundle.getName(), resource));
+ "[external:" + content + "]", bundle, resource));
} else {
- jsContent.add(JsContent.fromFeature(content, resource.getName(),
bundle.getName(),
- resource));
+ jsContent.add(JsContent.fromFeature(content, resource.getName(),
bundle, resource));
}
- jsContent.add(JsContent.fromFeature(";\n", "[separator]",
bundle.getName(),
- resource));
+ jsContent.add(JsContent.fromFeature(";\n", "[separator]", bundle,
resource));
}
return jsContent;
}
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=1088735&r1=1088734&r2=1088735&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
Mon Apr 4 19:14:31 2011
@@ -61,15 +61,10 @@ public class ExportJsCompiler extends De
@Override
public Iterable<JsContent> getJsContent(JsUri jsUri, FeatureBundle bundle) {
List<JsContent> jsContent = Lists.newLinkedList();
- // TODO: Convert start/end to processor too.
- jsContent.add(JsContent.fromFeature("\n/* [start] feature=" +
bundle.getName() +
- " */\n", "[comment-marker-start]", bundle.getName(), null));
for (JsContent jsc : super.getJsContent(jsUri, bundle)) {
jsContent.add(jsc);
}
jsContent.add(getExportsForFeature(jsUri, bundle));
- jsContent.add(JsContent.fromFeature("\n/* [end] feature=" +
bundle.getName() +
- " */\n", "[comment-marker-end]", bundle.getName(), null));
return jsContent;
}
@@ -103,7 +98,7 @@ public class ExportJsCompiler extends De
}
return JsContent.fromFeature(sb.toString(), "[generated-symbol-exports]",
- bundle.getName(), null);
+ bundle, null);
}
private void appendExportJs(JsResponseBuilder builder, GadgetContext
context) {
@@ -113,7 +108,7 @@ public class ExportJsCompiler extends De
for (FeatureResource resource : bundle.getResources()) {
builder.appendJs(JsContent.fromFeature(
resource.getDebugContent(), resource.getName(),
- bundle.getName(), null));
+ bundle, null));
}
}
}
Modified:
shindig/trunk/java/gadgets/src/main/java16/org/apache/shindig/gadgets/rewrite/js/ClosureJsCompiler.java
URL:
http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/main/java16/org/apache/shindig/gadgets/rewrite/js/ClosureJsCompiler.java?rev=1088735&r1=1088734&r2=1088735&view=diff
==============================================================================
---
shindig/trunk/java/gadgets/src/main/java16/org/apache/shindig/gadgets/rewrite/js/ClosureJsCompiler.java
(original)
+++
shindig/trunk/java/gadgets/src/main/java16/org/apache/shindig/gadgets/rewrite/js/ClosureJsCompiler.java
Mon Apr 4 19:14:31 2011
@@ -331,13 +331,11 @@ public class ClosureJsCompiler implement
String compiled, int mapping) {
JsContent sourceJs = orig.get(getRootSrc(mappings[mapping]));
String sourceName = "[closure-compiler-synthesized]";
- String featureName = "[closure-compiler]";
if (sourceJs != null) {
sourceName = sourceJs.getSource() != null ? sourceJs.getSource() : "";
- featureName = sourceJs.getFeature() != null ? sourceJs.getFeature() :
"";
}
out.add(JsContent.fromFeature(compiled.substring(startPos, codePos),
- sourceName, featureName, null));
+ sourceName, sourceJs.getFeatureBundle(), null));
}
private static final String BEGIN_COMMENT = "/*";
Modified:
shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/js/CajaJsSubtractingProcessorTest.java
URL:
http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/js/CajaJsSubtractingProcessorTest.java?rev=1088735&r1=1088734&r2=1088735&view=diff
==============================================================================
---
shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/js/CajaJsSubtractingProcessorTest.java
(original)
+++
shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/js/CajaJsSubtractingProcessorTest.java
Mon Apr 4 19:14:31 2011
@@ -62,7 +62,7 @@ public class CajaJsSubtractingProcessorT
mockFeatureResource(null)));
contents.add(JsContent.fromFeature(NORMAL_CONTENT_JS, null, null,
mockFeatureResource(ImmutableMap.of(UriCommon.Param.CAJOLE.getKey(),
"blah"))));
- contents.add(JsContent.fromFeature(CAJA_CONTENT_JS, null, "feature",
+ contents.add(JsContent.fromFeature(CAJA_CONTENT_JS, null, null,
mockFeatureResource(ImmutableMap.of(UriCommon.Param.CAJOLE.getKey(),
ATTRIB_VALUE))));
response = new JsResponse(contents, -1, -1, false, ERRORS, 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=1088735&r1=1088734&r2=1088735&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
Mon Apr 4 19:14:31 2011
@@ -122,10 +122,10 @@ public class GetJsContentProcessorTest {
eq(ImmutableList.<String>of()))).andReturn(lr);
expect(compiler.getJsContent(jsUri, bundles.get(0)))
.andReturn(ImmutableList.<JsContent>of(
- JsContent.fromFeature(JS_CODE1, "source1", "feature1", null)));
+ JsContent.fromFeature(JS_CODE1, "source1", bundles.get(0), null)));
expect(compiler.getJsContent(jsUri, bundles.get(1)))
.andReturn(ImmutableList.<JsContent>of(
- JsContent.fromFeature(JS_CODE2, "source2", "feature2", null)));
+ JsContent.fromFeature(JS_CODE2, "source2", bundles.get(1), null)));
}
private List<FeatureBundle> mockBundles(boolean proxyCacheable) {
Added:
shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/js/SeparatorCommentingProcessorTest.java
URL:
http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/js/SeparatorCommentingProcessorTest.java?rev=1088735&view=auto
==============================================================================
---
shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/js/SeparatorCommentingProcessorTest.java
(added)
+++
shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/js/SeparatorCommentingProcessorTest.java
Mon Apr 4 19:14:31 2011
@@ -0,0 +1,155 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations under the License.
+ */
+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 com.google.common.collect.ImmutableList;
+import com.google.common.collect.Lists;
+
+import org.apache.shindig.gadgets.features.FeatureRegistry.FeatureBundle;
+import org.easymock.IMocksControl;
+import org.junit.Before;
+import org.junit.Test;
+
+import java.util.List;
+
+public class SeparatorCommentingProcessorTest {
+ private static final List<String> ERRORS = ImmutableList.<String>of();
+
+ private IMocksControl control;
+ private SeparatorCommentingProcessor processor;
+ private JsResponse response;
+
+ @Before
+ public void setUp() {
+ control = createControl();
+ processor = new SeparatorCommentingProcessor();
+ }
+
+ @Test
+ public void testNoFeature() throws Exception {
+ JsResponseBuilder builder = newBuilder();
+
+ control.replay();
+ boolean actualReturn = processor.process(null, builder);
+ JsResponse actualResponse = builder.build();
+
+ control.verify();
+ assertTrue(actualReturn);
+ assertEquals("", actualResponse.toJsString());
+ }
+
+ @Test
+ public void testOneFeature() throws Exception {
+ JsContent js = JsContent.fromFeature("content", null,
mockBundle("bundle"), null);
+ JsResponseBuilder builder = newBuilder(js);
+
+ control.replay();
+ boolean actualReturn = processor.process(null, builder);
+ JsResponse actualResponse = builder.build();
+
+ control.verify();
+ assertTrue(actualReturn);
+ assertEquals(
+ "\n/* [start] feature=bundle */\n" +
+ "content" +
+ "\n/* [end] feature=bundle */\n",
+ actualResponse.toJsString());
+ }
+
+ @Test
+ public void testOneText() throws Exception {
+ JsContent text1 = JsContent.fromText("text1", null);
+ JsResponseBuilder builder = newBuilder(text1);
+
+ control.replay();
+ boolean actualReturn = processor.process(null, builder);
+ JsResponse actualResponse = builder.build();
+
+ control.verify();
+ assertTrue(actualReturn);
+ assertEquals("text1", actualResponse.toJsString());
+ }
+
+ @Test
+ public void testMultipleFeaturesWithoutInBetweenTexts() throws Exception {
+ JsContent js1 = JsContent.fromFeature("content1", null,
mockBundle("bundle1"), null);
+ JsContent js2 = JsContent.fromFeature("content2", null,
mockBundle("bundle2"), null);
+ JsResponseBuilder builder = newBuilder(js1, js2);
+
+ control.replay();
+ boolean actualReturn = processor.process(null, builder);
+ JsResponse actualResponse = builder.build();
+
+ control.verify();
+ assertTrue(actualReturn);
+ assertEquals(
+ "\n/* [start] feature=bundle1 */\n" +
+ "content1" +
+ "\n/* [end] feature=bundle1 */\n" +
+ "\n/* [start] feature=bundle2 */\n" +
+ "content2" +
+ "\n/* [end] feature=bundle2 */\n",
+ actualResponse.toJsString());
+ }
+
+ @Test
+ public void testMultipleFeaturesWithInBetweenTexts() throws Exception {
+ JsContent text1 = JsContent.fromText("text1", null);
+ JsContent text2 = JsContent.fromText("text2", null);
+ JsContent text3 = JsContent.fromText("text3", null);
+ JsContent js1 = JsContent.fromFeature("content1", null,
mockBundle("bundle1"), null);
+ JsContent js2 = JsContent.fromFeature("content2", null,
mockBundle("bundle2"), null);
+ JsResponseBuilder builder = newBuilder(text1, js1, text2, js2, text3);
+
+ control.replay();
+ boolean actualReturn = processor.process(null, builder);
+ JsResponse actualResponse = builder.build();
+
+ control.verify();
+ assertTrue(actualReturn);
+ assertEquals(
+ "text1" +
+ "\n/* [start] feature=bundle1 */\n" +
+ "content1" +
+ "\n/* [end] feature=bundle1 */\n" +
+ "text2" +
+ "\n/* [start] feature=bundle2 */\n" +
+ "content2" +
+ "\n/* [end] feature=bundle2 */\n" +
+ "text3",
+ actualResponse.toJsString());
+ }
+
+ private JsResponseBuilder newBuilder(JsContent... contents) {
+ response = new JsResponse(Lists.newArrayList(contents),
+ -1, -1, false, ERRORS, null);
+ return new JsResponseBuilder(response);
+ }
+
+ private FeatureBundle mockBundle(String name) {
+ FeatureBundle result = control.createMock(FeatureBundle.class);
+ expect(result.getName()).andReturn(name).anyTimes();
+ return result;
+ }
+
+}
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=1088735&r1=1088734&r2=1088735&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
Mon Apr 4 19:14:31 2011
@@ -146,10 +146,7 @@ public class ExportJsCompilerTest {
JsUri jsUri = mockJsUri(JsCompileMode.ALL_RUN_TIME);
FeatureBundle bundle = mockBundle(Lists.<FeatureResource>newArrayList(),
EMPTY, EMPTY); // empty
Iterable<JsContent> actual = compiler.getJsContent(jsUri, bundle);
- assertEquals(
- "\n/* [start] feature=" + RESOURCE_NAME + " */\n" +
- "\n/* [end] feature=" + RESOURCE_NAME + " */\n",
- getContent(actual));
+ assertEquals("", getContent(actual));
}
@Test
@@ -160,14 +157,12 @@ public class ExportJsCompilerTest {
FeatureBundle bundle = mockBundle(Lists.newArrayList(extRes, intRes),
EXPORTS, EXTERNS);
Iterable<JsContent> actual = compiler.getJsContent(jsUri, bundle);
assertEquals(
- "\n/* [start] feature=" + RESOURCE_NAME + " */\n" +
"document.write('<script src=\"" + RESOURCE_URL_DEB +
"\"></script>');\n" +
RESOURCE_CONTENT_DEB + ";\n" +
"exportJs('gadgets',[gadgets]);" +
"exportJs('cc',[cc]);" +
"exportJs('gadgets.rpc',[gadgets,gadgets.rpc],{call:'call'});" +
- "exportJs('cc.prototype',[cc,cc.prototype],{site:'site'});" +
- "\n/* [end] feature=" + RESOURCE_NAME + " */\n",
+ "exportJs('cc.prototype',[cc,cc.prototype],{site:'site'});",
getContent(actual));
}