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;
   }


Reply via email to