Author: johnh
Date: Thu Jan 27 23:33:29 2011
New Revision: 1064357
URL: http://svn.apache.org/viewvc?rev=1064357&view=rev
Log:
Inject ___jsl hint to JavaScript serving via HTTP to give JS code knowledge of
the script tag and feature(s) that are currently being loaded.
Added:
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/js/InjectJsInfoVariableProcessor.java
shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/js/InjectJsInfoVariableProcessorTest.java
Modified:
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/JsLoadProcessor.java
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/GadgetsHandlerService.java
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/uri/DefaultJsUriManager.java
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/uri/JsUriManager.java
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/uri/ProxyUriBase.java
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/uri/UriCommon.java
shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/js/JsLoadProcessorTest.java
shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/GadgetsHandlerServiceTest.java
shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/GadgetsHandlerTest.java
shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/uri/DefaultJsUriManagerTest.java
shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/uri/JsUriManagerTest.java
Added:
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/js/InjectJsInfoVariableProcessor.java
URL:
http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/js/InjectJsInfoVariableProcessor.java?rev=1064357&view=auto
==============================================================================
---
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/js/InjectJsInfoVariableProcessor.java
(added)
+++
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/js/InjectJsInfoVariableProcessor.java
Thu Jan 27 23:33:29 2011
@@ -0,0 +1,82 @@
+/*
+ * 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.annotations.VisibleForTesting;
+import com.google.common.collect.Lists;
+import com.google.inject.Inject;
+
+import org.apache.commons.lang.StringEscapeUtils;
+import org.apache.commons.lang.StringUtils;
+import org.apache.shindig.common.uri.Uri;
+import org.apache.shindig.gadgets.uri.JsUriManager;
+import org.apache.shindig.gadgets.uri.JsUriManager.JsUri;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * Injects a global ___jsl variable with information about the JS request.
+ *
+ * Used when loading embedded JS configuration in core.config/config.js.
+ */
+public class InjectJsInfoVariableProcessor implements JsProcessor {
+
+ @VisibleForTesting
+ static final String HINT_TEMPLATE =
"window['___jsl']={'u':'%s','f':[%s]};\n";
+
+ private final JsUriManager jsUriManager;
+
+ @Inject
+ public InjectJsInfoVariableProcessor(JsUriManager jsUriManager) {
+ this.jsUriManager = jsUriManager;
+ }
+
+ public boolean process(JsRequest jsRequest, JsResponseBuilder builder) {
+ JsUri jsUri = jsRequest.getJsUri();
+ if (!jsUri.isNohint()) {
+ String uri = StringEscapeUtils.escapeJavaScript(getUri(jsUri));
+ String features = getFeatures(jsUri);
+ builder.getJsCode().insert(0, String.format(HINT_TEMPLATE, uri,
features));
+ }
+ return true;
+ }
+
+ private String getUri(JsUri jsUri) {
+ Uri uri = jsUri.getOrigUri();
+ if (uri == null || jsUri.isJsload()) {
+ JsUri auxUri = new JsUri(jsUri);
+ auxUri.setJsload(false);
+ if (jsUri.isJsload()) {
+ auxUri.setNohint(true);
+ }
+ uri = jsUriManager.makeExternJsUri(auxUri);
+ }
+ return uri.toString();
+ }
+
+ private String getFeatures(JsUri jsUri) {
+ Collection<String> libs = jsUri.getLibs();
+ List<Object> features = Lists.newArrayList();
+ for (String lib : libs) {
+ features.add("'" + StringEscapeUtils.escapeJavaScript(lib) + "'");
+ }
+ return StringUtils.join(features, ",");
+ }
+}
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=1064357&r1=1064356&r2=1064357&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
Thu Jan 27 23:33:29 2011
@@ -37,12 +37,13 @@ public class JavascriptModule extends Ab
@Provides
@Inject
- public List<JsProcessor> provideProcessors(JsLoadProcessor
jsLoaderGeneratorProcessor,
- IfModifiedSinceProcessor ifModifiedSinceProcessor,
+ public List<JsProcessor> provideProcessors(
+ InjectJsInfoVariableProcessor injectJsInfoVariableProcessor,
+ JsLoadProcessor jsLoaderGeneratorProcessor, IfModifiedSinceProcessor
ifModifiedSinceProcessor,
GetJsContentProcessor getJsContentProcessor,
AddOnloadFunctionProcessor addOnloadFunctionProcessor) {
- return ImmutableList.of(jsLoaderGeneratorProcessor,
ifModifiedSinceProcessor,
- getJsContentProcessor, addOnloadFunctionProcessor);
+ return ImmutableList.of(injectJsInfoVariableProcessor,
jsLoaderGeneratorProcessor,
+ ifModifiedSinceProcessor, getJsContentProcessor,
addOnloadFunctionProcessor);
}
}
Modified:
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/js/JsLoadProcessor.java
URL:
http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/js/JsLoadProcessor.java?rev=1064357&r1=1064356&r2=1064357&view=diff
==============================================================================
---
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/js/JsLoadProcessor.java
(original)
+++
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/js/JsLoadProcessor.java
Thu Jan 27 23:33:29 2011
@@ -82,12 +82,13 @@ public class JsLoadProcessor implements
}
jsUri.setJsload(false);
+ jsUri.setNohint(true);
Uri incUri = jsUriManager.makeExternJsUri(jsUri);
int refresh = getCacheTtlSecs(jsUri);
resp.setCacheTtlSecs(refresh);
resp.setProxyCacheable(true);
- resp.setJsCode(createJsloadScript(incUri));
+ resp.addJsCode(createJsloadScript(incUri));
}
private int getCacheTtlSecs(JsUri jsUri) {
Modified:
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/GadgetsHandlerService.java
URL:
http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/GadgetsHandlerService.java?rev=1064357&r1=1064356&r2=1064357&view=diff
==============================================================================
---
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/GadgetsHandlerService.java
(original)
+++
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/GadgetsHandlerService.java
Thu Jan 27 23:33:29 2011
@@ -474,7 +474,7 @@ public class GadgetsHandlerService {
return new JsUri(request.getRefresh(), request.getDebug(),
request.getIgnoreCache(),
request.getContainer(), request.getGadget(), request.getFeatures(),
request.getOnload(),
- false, context);
+ false, false, context, request.getUrl());
}
@VisibleForTesting
Modified:
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/uri/DefaultJsUriManager.java
URL:
http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/uri/DefaultJsUriManager.java?rev=1064357&r1=1064356&r2=1064357&view=diff
==============================================================================
---
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/uri/DefaultJsUriManager.java
(original)
+++
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/uri/DefaultJsUriManager.java
Thu Jan 27 23:33:29 2011
@@ -21,7 +21,6 @@ package org.apache.shindig.gadgets.uri;
import com.google.common.base.Joiner;
import com.google.common.base.Splitter;
import com.google.common.collect.ImmutableList;
-import com.google.common.collect.Lists;
import com.google.inject.Inject;
import org.apache.shindig.common.uri.Uri;
@@ -96,6 +95,10 @@ public class DefaultJsUriManager impleme
if (ctx.isJsload()) {
uri.addQueryParameter(Param.JSLOAD.getKey(), "1");
}
+
+ if (ctx.isNohint()) {
+ uri.addQueryParameter(Param.NO_HINT.getKey(), "1");
+ }
// Finally, version it, but only if !nocache.
if (versioner != null && !ctx.isNoCache()) {
Modified:
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/uri/JsUriManager.java
URL:
http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/uri/JsUriManager.java?rev=1064357&r1=1064356&r2=1064357&view=diff
==============================================================================
---
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/uri/JsUriManager.java
(original)
+++
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/uri/JsUriManager.java
Thu Jan 27 23:33:29 2011
@@ -55,7 +55,9 @@ public interface JsUriManager {
private final Collection<String> loadedLibs;
private final String onload;
private boolean jsload;
+ private boolean nohint;
private final RenderingContext context;
+ private final Uri origUri;
public JsUri(UriStatus status, Uri origUri, Collection<String> libs,
Collection<String> have) {
super(status, origUri);
@@ -64,13 +66,16 @@ public interface JsUriManager {
this.context = RenderingContext.valueOfParam(param);
this.jsload =
"1".equals(origUri.getQueryParameter(Param.JSLOAD.getKey()));
this.onload = origUri.getQueryParameter(Param.ONLOAD.getKey());
+ this.nohint =
"1".equals(origUri.getQueryParameter(Param.NO_HINT.getKey()));
} else {
this.context = RenderingContext.GADGET;
this.jsload = false;
this.onload = null;
+ this.nohint = false;
}
this.libs = nonNullLibs(libs);
this.loadedLibs = nonNullLibs(have);
+ this.origUri = origUri;
}
public JsUri(UriStatus status) {
@@ -78,32 +83,53 @@ public interface JsUriManager {
}
public JsUri(UriStatus status, Collection<String> libs, RenderingContext
context,
- String onload, boolean jsload) {
+ String onload, boolean jsload, boolean nohint) {
super(status, null);
this.context = context;
this.onload = onload;
this.jsload = jsload;
+ this.nohint = nohint;
this.libs = libs;
this.loadedLibs = EMPTY_COLL;
+ this.origUri = null;
}
public JsUri(Gadget gadget, Collection<String> libs) {
super(gadget);
this.onload = null;
this.jsload = false;
+ this.nohint = false;
this.context = RenderingContext.GADGET;
this.libs = libs;
this.loadedLibs = EMPTY_COLL;
+ this.origUri = null;
}
public JsUri(Integer refresh, boolean debug, boolean noCache, String
container, String gadget,
- Collection<String> libs, String onload, boolean jsload,
RenderingContext context) {
+ Collection<String> libs, String onload, boolean jsload, boolean
nohint, RenderingContext context, Uri origUri) {
super(null, refresh, debug, noCache, container, gadget);
this.onload = onload;
this.jsload = jsload;
+ this.nohint = nohint;
this.context = context;
this.libs = libs;
this.loadedLibs = EMPTY_COLL;
+ this.origUri = origUri;
+ }
+
+ public JsUri(JsUri origJsUri) {
+ super(origJsUri.getStatus(), origJsUri.getRefresh(),
+ origJsUri.isDebug(),
+ origJsUri.isNoCache(),
+ origJsUri.getContainer(),
+ origJsUri.getGadget());
+ this.libs = origJsUri.getLibs();
+ this.loadedLibs = origJsUri.getLoadedLibs();
+ this.onload = origJsUri.getOnload();
+ this.jsload = origJsUri.isJsload();
+ this.nohint = origJsUri.isNohint();
+ this.context = origJsUri.getContext();
+ this.origUri = origJsUri.getOrigUri();
}
public Collection<String> getLibs() {
@@ -134,6 +160,18 @@ public interface JsUriManager {
public void setJsload(boolean jsload) {
this.jsload = jsload;
}
+
+ public boolean isNohint() {
+ return nohint;
+ }
+
+ public void setNohint(boolean nohint) {
+ this.nohint = nohint;
+ }
+
+ public Uri getOrigUri() {
+ return origUri;
+ }
@Override
public boolean equals(Object obj) {
@@ -149,7 +187,9 @@ public interface JsUriManager {
&& Objects.equal(this.loadedLibs, objUri.loadedLibs)
&& Objects.equal(this.onload, objUri.onload)
&& Objects.equal(this.jsload, objUri.jsload)
- && Objects.equal(this.context, objUri.context));
+ && Objects.equal(this.nohint, objUri.nohint)
+ && Objects.equal(this.context, objUri.context))
+ && Objects.equal(this.origUri, objUri.origUri);
}
}
Modified:
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/uri/ProxyUriBase.java
URL:
http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/uri/ProxyUriBase.java?rev=1064357&r1=1064356&r2=1064357&view=diff
==============================================================================
---
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/uri/ProxyUriBase.java
(original)
+++
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/uri/ProxyUriBase.java
Thu Jan 27 23:33:29 2011
@@ -112,7 +112,7 @@ public class ProxyUriBase {
}
ProxyUriBase objUri = (ProxyUriBase) obj;
return (Objects.equal(this.status, objUri.status)
- && Objects.equal(this.refresh, objUri.refresh)
+ && (noCache || Objects.equal(this.refresh, objUri.refresh))
&& Objects.equal(this.container, objUri.container)
&& Objects.equal(this.gadget, objUri.gadget)
&& Objects.equal(this.rewriteMimeType, objUri.rewriteMimeType)
Modified:
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/uri/UriCommon.java
URL:
http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/uri/UriCommon.java?rev=1064357&r1=1064356&r2=1064357&view=diff
==============================================================================
---
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/uri/UriCommon.java
(original)
+++
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/uri/UriCommon.java
Thu Jan 27 23:33:29 2011
@@ -50,6 +50,7 @@ public interface UriCommon {
JSLOAD("jsload"),
ONLOAD("onload"),
ALREADY_HAVE("loaded"),
+ NO_HINT("nohint"),
// Proxy resize params:
RESIZE_HEIGHT("resize_h"),
Added:
shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/js/InjectJsInfoVariableProcessorTest.java
URL:
http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/js/InjectJsInfoVariableProcessorTest.java?rev=1064357&view=auto
==============================================================================
---
shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/js/InjectJsInfoVariableProcessorTest.java
(added)
+++
shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/js/InjectJsInfoVariableProcessorTest.java
Thu Jan 27 23:33:29 2011
@@ -0,0 +1,104 @@
+/*
+ * 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.junit.Assert.*;
+
+import com.google.common.collect.ImmutableList;
+
+import org.apache.shindig.common.uri.Uri;
+import org.apache.shindig.gadgets.uri.JsUriManager;
+import org.apache.shindig.gadgets.uri.JsUriManager.JsUri;
+import org.apache.shindig.gadgets.uri.UriStatus;
+import org.easymock.Capture;
+import org.easymock.EasyMock;
+import org.easymock.IMocksControl;
+import org.junit.Before;
+import org.junit.Test;
+
+import java.util.List;
+
+
+/**
+ * Tests for {@link InjectJsInfoVariableProcessor}.
+ */
+public class InjectJsInfoVariableProcessorTest {
+
+ private static final String URI = "http://localhost";
+ private static final List<String> LIBS = ImmutableList.of("fo'o", "bar",
"baz");
+ private static final String GENERATED_URI = "http://localhost?nohint=1";
+ private static final String URI_JS = "http:\\/\\/localhost";
+ private static final String LIBS_JS = "'fo\\'o','bar','baz'";
+ private static final String GENERATED_URI_JS =
"http:\\/\\/localhost?nohint=1";
+
+ private IMocksControl control;
+ private JsRequest request;
+ private JsUriManager jsUriManager;
+ private JsUri jsUri;
+ private JsResponseBuilder response;
+ private InjectJsInfoVariableProcessor processor;
+
+ @Before
+ public void setUp() {
+ control = EasyMock.createControl();
+ request = control.createMock(JsRequest.class);
+ jsUriManager = control.createMock(JsUriManager.class);
+ response = new JsResponseBuilder();
+ processor = new InjectJsInfoVariableProcessor(jsUriManager);
+ }
+
+ @Test
+ public void testSkipsWhenNohintIsTrue() throws Exception {
+ response = control.createMock(JsResponseBuilder.class);
+ setJsUri(URI + "?nohint=1");
+ control.replay();
+ processor.process(request, response);
+ control.verify();
+ }
+
+ @Test
+ public void testAddsHint() throws Exception {
+ setJsUri(URI);
+ control.replay();
+ processor.process(request, response);
+ String expected =
String.format(InjectJsInfoVariableProcessor.HINT_TEMPLATE, URI_JS, LIBS_JS);
+ assertEquals(expected, response.getJsCode().toString());
+ control.verify();
+ }
+
+ @Test
+ public void testAddsHintWithoutJsLoad() throws Exception {
+ setJsUri(URI + "?jsload=1");
+ Capture<JsUri> captureJsUri = new Capture<JsUri>();
+
EasyMock.expect(jsUriManager.makeExternJsUri(EasyMock.capture(captureJsUri))).andReturn(Uri.parse(GENERATED_URI));
+ control.replay();
+ processor.process(request, response);
+ String expected =
String.format(InjectJsInfoVariableProcessor.HINT_TEMPLATE, GENERATED_URI_JS,
LIBS_JS);
+ assertEquals(expected, response.getJsCode().toString());
+ assertFalse(captureJsUri.getValue().isJsload());
+ assertTrue(captureJsUri.getValue().isNohint());
+ control.verify();
+ }
+
+
+ private void setJsUri(String uri) {
+ jsUri = new JsUri(UriStatus.VALID_UNVERSIONED, Uri.parse(uri), LIBS, null);
+ EasyMock.expect(request.getJsUri()).andReturn(jsUri);
+ }
+}
Modified:
shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/js/JsLoadProcessorTest.java
URL:
http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/js/JsLoadProcessorTest.java?rev=1064357&r1=1064356&r2=1064357&view=diff
==============================================================================
---
shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/js/JsLoadProcessorTest.java
(original)
+++
shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/js/JsLoadProcessorTest.java
Thu Jan 27 23:33:29 2011
@@ -111,6 +111,7 @@ public class JsLoadProcessorTest {
EasyMock.expect(jsUri.isJsload()).andReturn(true);
EasyMock.expect(jsUri.getOnload()).andReturn(ONLOAD_FUNCTION);
jsUri.setJsload(false);
+ jsUri.setNohint(true);
EasyMock.expect(jsUriManager.makeExternJsUri(jsUri)).andReturn(uri);
EasyMock.expect(jsUri.isNoCache()).andReturn(noCache);
if (!noCache) {
Modified:
shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/GadgetsHandlerServiceTest.java
URL:
http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/GadgetsHandlerServiceTest.java?rev=1064357&r1=1064356&r2=1064357&view=diff
==============================================================================
---
shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/GadgetsHandlerServiceTest.java
(original)
+++
shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/GadgetsHandlerServiceTest.java
Thu Jan 27 23:33:29 2011
@@ -284,7 +284,7 @@ public class GadgetsHandlerServiceTest e
GadgetsHandlerApi.JsResponse response = gadgetHandler.getJs(request);
JsUri expectedUri = new JsUri(null, false, false, CONTAINER, null,
- features, null, false, RenderingContext.GADGET);
+ features, null, false, false, RenderingContext.GADGET, null);
assertEquals(expectedUri, uriCapture.getValue());
assertEquals(resUri, response.getJsUrl());
assertNull(response.getJsContent());
@@ -319,7 +319,7 @@ public class GadgetsHandlerServiceTest e
GadgetsHandlerApi.JsResponse response = gadgetHandler.getJs(request);
JsUri expectedUri = new JsUri(null, false, false, CONTAINER,
FakeProcessor.SPEC_URL.toString(),
- features, onload, false, RenderingContext.CONTAINER);
+ features, onload, false, false, RenderingContext.CONTAINER, null);
assertEquals(expectedUri, uriCapture.getValue());
assertNull(response.getJsUrl());
assertEquals(jsContent, response.getJsContent());
Modified:
shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/GadgetsHandlerTest.java
URL:
http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/GadgetsHandlerTest.java?rev=1064357&r1=1064356&r2=1064357&view=diff
==============================================================================
---
shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/GadgetsHandlerTest.java
(original)
+++
shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/GadgetsHandlerTest.java
Thu Jan 27 23:33:29 2011
@@ -565,7 +565,7 @@ public class GadgetsHandlerTest extends
JSONObject results = new
JSONObject(converter.convertToString(responseObj));
assertEquals(jsUri.toString(), results.getString("jsUrl"));
JsUri expectedUri = new JsUri(null, false, false, CONTAINER, GADGET1_URL,
- features, null, false, RenderingContext.GADGET);
+ features, null, false, false, RenderingContext.GADGET, null);
assertEquals(expectedUri, captureUri.getValue());
assertFalse(results.has("error"));
assertFalse(results.has("jsContent"));
@@ -607,7 +607,7 @@ public class GadgetsHandlerTest extends
JSONObject results = new
JSONObject(converter.convertToString(responseObj));
assertEquals(jsUri.toString(), results.getString("jsUrl"));
JsUri expectedUri = new JsUri(123, true, true, CONTAINER, GADGET1_URL,
- features, onload, false, RenderingContext.CONTAINER);
+ features, onload, false, false, RenderingContext.CONTAINER, null);
assertEquals(expectedUri, captureUri.getValue());
assertFalse(results.has("error"));
assertEquals(jsContent, results.getString("jsContent"));
Modified:
shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/uri/DefaultJsUriManagerTest.java
URL:
http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/uri/DefaultJsUriManagerTest.java?rev=1064357&r1=1064356&r2=1064357&view=diff
==============================================================================
---
shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/uri/DefaultJsUriManagerTest.java
(original)
+++
shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/uri/DefaultJsUriManagerTest.java
Thu Jan 27 23:33:29 2011
@@ -385,7 +385,9 @@ public class DefaultJsUriManagerTest {
expect(context.getLibs()).andStubReturn(extern);
expect(context.getOnload()).andStubReturn(null);
expect(context.isJsload()).andStubReturn(false);
+ expect(context.isNohint()).andStubReturn(false);
expect(context.getExtensionParams()).andStubReturn(params);
+ expect(context.getOrigUri()).andStubReturn(null);
replay(context);
return context;
}
Modified:
shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/uri/JsUriManagerTest.java
URL:
http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/uri/JsUriManagerTest.java?rev=1064357&r1=1064356&r2=1064357&view=diff
==============================================================================
---
shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/uri/JsUriManagerTest.java
(original)
+++
shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/uri/JsUriManagerTest.java
Thu Jan 27 23:33:29 2011
@@ -18,6 +18,7 @@
*/
package org.apache.shindig.gadgets.uri;
+import static org.junit.Assert.*;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNull;
@@ -25,9 +26,11 @@ import static org.junit.Assert.assertTru
import com.google.caja.util.Lists;
+import org.apache.shindig.common.uri.Uri;
import org.apache.shindig.common.uri.UriBuilder;
import org.apache.shindig.config.ContainerConfig;
import org.apache.shindig.gadgets.RenderingContext;
+import org.apache.shindig.gadgets.uri.JsUriManager.JsUri;
import org.apache.shindig.gadgets.uri.UriCommon.Param;
import org.junit.Test;
@@ -43,28 +46,32 @@ public class JsUriManagerTest extends Ur
@Test
public void newJsUriWithOriginalUri() throws Exception {
- UriBuilder builder = newTestUriBuilder(RenderingContext.CONTAINER);
- JsUriManager.JsUri jsUri = new JsUriManager.JsUri(STATUS, builder.toUri(),
LIBS, HAVE);
+ Uri uri = newTestUriBuilder(RenderingContext.CONTAINER).toUri();
+ JsUriManager.JsUri jsUri = new JsUriManager.JsUri(STATUS, uri, LIBS, HAVE);
assertEquals(RenderingContext.CONTAINER, jsUri.getContext());
assertEquals(CONTAINER_VALUE, jsUri.getContainer());
assertTrue(jsUri.isJsload());
assertTrue(jsUri.isNoCache());
+ assertTrue(jsUri.isNohint());
assertEquals(ONLOAD_VALUE, jsUri.getOnload());
assertEquals(LIBS, Lists.newArrayList(jsUri.getLibs()));
assertEquals(HAVE, Lists.newArrayList(jsUri.getLoadedLibs()));
+ assertEquals(uri, jsUri.getOrigUri());
}
@Test
public void newJsUriWithConfiguredGadgetContext() throws Exception {
- UriBuilder builder = newTestUriBuilder(RenderingContext.CONFIGURED_GADGET);
- JsUriManager.JsUri jsUri = new JsUriManager.JsUri(STATUS, builder.toUri(),
LIBS, HAVE);
+ Uri uri = newTestUriBuilder(RenderingContext.CONFIGURED_GADGET).toUri();
+ JsUriManager.JsUri jsUri = new JsUriManager.JsUri(STATUS, uri, LIBS, HAVE);
assertEquals(RenderingContext.CONFIGURED_GADGET, jsUri.getContext());
assertEquals(CONTAINER_VALUE, jsUri.getContainer());
assertTrue(jsUri.isJsload());
assertTrue(jsUri.isNoCache());
+ assertTrue(jsUri.isNohint());
assertEquals(ONLOAD_VALUE, jsUri.getOnload());
assertEquals(LIBS, Lists.newArrayList(jsUri.getLibs()));
assertEquals(HAVE, Lists.newArrayList(jsUri.getLoadedLibs()));
+ assertEquals(uri, jsUri.getOrigUri());
}
@Test
@@ -75,9 +82,19 @@ public class JsUriManagerTest extends Ur
assertEquals(ContainerConfig.DEFAULT_CONTAINER, jsUri.getContainer());
assertFalse(jsUri.isJsload());
assertFalse(jsUri.isNoCache());
+ assertFalse(jsUri.isNohint());
assertNull(jsUri.getOnload());
assertTrue(jsUri.getLibs().isEmpty());
assertTrue(jsUri.getLoadedLibs().isEmpty());
+ assertNull(jsUri.getOrigUri());
+ }
+
+ @Test
+ public void newJsUriCopyOfOtherJsUri() throws Exception {
+ Uri uri = newTestUriBuilder(RenderingContext.CONTAINER).toUri();
+ JsUriManager.JsUri jsUri = new JsUriManager.JsUri(STATUS, uri, LIBS, HAVE);
+ JsUriManager.JsUri jsUriCopy = new JsUriManager.JsUri(jsUri);
+ assertEquals(jsUri, jsUriCopy);
}
private UriBuilder newTestUriBuilder(RenderingContext context) {
@@ -89,6 +106,7 @@ public class JsUriManagerTest extends Ur
builder.addQueryParameter(Param.CONTAINER_MODE.getKey(),
context.getParamValue());
builder.addQueryParameter(Param.JSLOAD.getKey(), "1");
builder.addQueryParameter(Param.NO_CACHE.getKey(), "1");
+ builder.addQueryParameter(Param.NO_HINT.getKey(), "1");
builder.addQueryParameter(Param.ONLOAD.getKey(), ONLOAD_VALUE);
return builder;
}