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 2010/06/03 20:43:33 UTC

svn commit: r951107 - in /shindig/trunk: ./ config/ java/gadgets/src/main/java/org/apache/shindig/gadgets/ java/gadgets/src/main/java/org/apache/shindig/gadgets/oauth/ java/gadgets/src/main/java/org/apache/shindig/gadgets/render/ java/gadgets/src/main/...

Author: johnh
Date: Thu Jun  3 18:43:32 2010
New Revision: 951107

URL: http://svn.apache.org/viewvc?rev=951107&view=rev
Log:
This CL bites the bullet and removes all traces of the UrlGenerator
interface from Shindig, instead favoring the replacement *UriManager
classes.

@see UPGRADING for comments re: upgrading existing custom UrlGenerator impls
to *UriManager, as well as config updates that are required.


Removed:
    shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/DefaultUrlGenerator.java
    shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/UrlGenerator.java
    shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/UrlValidationStatus.java
    shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/uri/GlueUrlGenerator.java
    shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/DefaultUrlGeneratorTest.java
    shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/uri/GlueUrlGeneratorTest.java
Modified:
    shindig/trunk/UPGRADING
    shindig/trunk/config/container.js
    shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/DefaultGuiceModule.java
    shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/oauth/GadgetOAuthCallbackGenerator.java
    shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/render/RenderingGadgetRewriter.java
    shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/GadgetRenderingServlet.java
    shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/JsServlet.java
    shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/JsonRpcHandler.java
    shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/uri/DefaultJsUriManager.java
    shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/DefaultGadgetSpecFactoryTest.java
    shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/DefaultMessageBundleFactoryTest.java
    shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/oauth/GadgetOAuthCallbackGeneratorTest.java
    shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/oauth/GadgetTokenStoreTest.java
    shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/render/RenderingGadgetRewriterTest.java
    shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/GadgetRenderingServletTest.java
    shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/HtmlAccelServletTest.java
    shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/JsonRpcHandlerTest.java

Modified: shindig/trunk/UPGRADING
URL: http://svn.apache.org/viewvc/shindig/trunk/UPGRADING?rev=951107&r1=951106&r2=951107&view=diff
==============================================================================
--- shindig/trunk/UPGRADING (original)
+++ shindig/trunk/UPGRADING Thu Jun  3 18:43:32 2010
@@ -75,6 +75,24 @@ provision for reading "original" HttpRes
 ImageRewriters may be migrated to ResponseRewriters as well by mutating the builder,
 where previously a new HttpResponse was returned.
 
+* UrlManager -> IframeUriManager, JsUriManager, OAuthUriManager
+
+The UrlManager interface has been removed. In its place are IframeUriManager, JsUriManager, and OAuthUriManager,
+producing Uris (equivalent to previous Strings). This change is done to better encapsulate Uri logic, putting
+creation and processing logic in the same place.
+
+@see (now-removed) shim class
+http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/uri/GlueUrlGenerator.java?revision=906688&view=markup
+
+...for a schematic on how the previous methods map to new versions. This class was a bridge between the new
+and old interfaces.
+
+Default implementations of each UriManager class are provided in org.apache.shindig.gadgets.uri, each
+named DefaultX, where X = interface. These classes are suitable for subclassing to extend, should you prefer.
+Note that the ContainerConfig values the default implementations use are different (mostly by name/key)
+than those DefaultUrlGenerator used. Specific values are documented in the class comment and statics
+for each impl.
+
 * MediaItem
 
 Location field changed from String to Address.

Modified: shindig/trunk/config/container.js
URL: http://svn.apache.org/viewvc/shindig/trunk/config/container.js?rev=951107&r1=951106&r2=951107&view=diff
==============================================================================
--- shindig/trunk/config/container.js (original)
+++ shindig/trunk/config/container.js Thu Jun  3 18:43:32 2010
@@ -91,9 +91,18 @@
 //"gadgets.securityTokenType" : "secure",
 //"gadgets.securityTokenKeyFile" : "/path/to/key/file.txt",
 
+"defaultShindigTestHost": "http://localhost:9003",
+
+// Default Uri config: these must be overridden - specified here for testing purposes
+"gadgets.uri.iframe.unlockedDomain": "${Cur['defaultShindigTestHost']}",
+"gadgets.uri.iframe.lockedDomainSuffix": "${Cur['defaultShindigTestHost']}",
+
+// Default Js Uri config: also must be overridden.
+"gadgets.uri.js.host": "${Cur['defaultShindigTestHost']}",
+"gadgets.uri.js.path": "/gadgets/js",
 
 // Default concat Uri config; used for testing.
-"gadgets.uri.concat.host" : "localhost:9003",
+"gadgets.uri.concat.host" : "${Cur['defaultShindigTestHost']}",
 "gadgets.uri.concat.path" : "/gadgets/concat",
 
 // This config data will be passed down to javascript. Please

Modified: shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/DefaultGuiceModule.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/DefaultGuiceModule.java?rev=951107&r1=951106&r2=951107&view=diff
==============================================================================
--- shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/DefaultGuiceModule.java (original)
+++ shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/DefaultGuiceModule.java Thu Jun  3 18:43:32 2010
@@ -99,7 +99,8 @@ public class DefaultGuiceModule extends 
    * Sets up the multibinding for extended feature resources
    */
   protected void registerFeatureHandlers() {
-    Multibinder<String> featureBinder = Multibinder.newSetBinder(binder(), String.class, Names.named("org.apache.shindig.features-extended"));
+    /*Multibinder<String> featureBinder = */
+        Multibinder.newSetBinder(binder(), String.class, Names.named("org.apache.shindig.features-extended"));
   }
 
   /**

Modified: shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/oauth/GadgetOAuthCallbackGenerator.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/oauth/GadgetOAuthCallbackGenerator.java?rev=951107&r1=951106&r2=951107&view=diff
==============================================================================
--- shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/oauth/GadgetOAuthCallbackGenerator.java (original)
+++ shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/oauth/GadgetOAuthCallbackGenerator.java Thu Jun  3 18:43:32 2010
@@ -30,11 +30,11 @@ import org.apache.shindig.common.uri.Uri
 import org.apache.shindig.gadgets.Gadget;
 import org.apache.shindig.gadgets.GadgetContext;
 import org.apache.shindig.gadgets.LockedDomainService;
-import org.apache.shindig.gadgets.UrlGenerator;
 import org.apache.shindig.gadgets.http.HttpRequest;
 import org.apache.shindig.gadgets.process.ProcessingException;
 import org.apache.shindig.gadgets.process.Processor;
 import org.apache.shindig.gadgets.servlet.OAuthCallbackServlet;
+import org.apache.shindig.gadgets.uri.OAuthUriManager;
 
 /**
  * Generates callback URLs for gadgets using OAuth 1.0a.  There are three relevant callback URLs:
@@ -82,16 +82,16 @@ public class GadgetOAuthCallbackGenerato
 
   private final Processor processor;
   private final LockedDomainService lockedDomainService;
-  private final UrlGenerator urlGenerator;
+  private final OAuthUriManager oauthUriManager;
   private final BlobCrypter stateCrypter;
 
   @Inject
   public GadgetOAuthCallbackGenerator(Processor processor, LockedDomainService lockedDomainService,
-      UrlGenerator urlGenerator, @Named(OAuthFetcherConfig.OAUTH_STATE_CRYPTER)
+      OAuthUriManager oauthUriManager, @Named(OAuthFetcherConfig.OAUTH_STATE_CRYPTER)
       BlobCrypter stateCrypter) {
     this.processor = processor;
     this.lockedDomainService = lockedDomainService;
-    this.urlGenerator = urlGenerator;
+    this.oauthUriManager = oauthUriManager;
     this.stateCrypter = stateCrypter;
   }
   
@@ -128,14 +128,13 @@ public class GadgetOAuthCallbackGenerato
   }
 
   private String getGadgetDomainCallback(SecurityToken securityToken, Uri activeUrl) {
-    String baseCallback = urlGenerator.getGadgetDomainOAuthCallback(
+    Uri gadgetCallback = oauthUriManager.makeOAuthCallbackUri(
         securityToken.getContainer(), activeUrl.getAuthority());
-    if (baseCallback == null) {
+    if (gadgetCallback == null) {
       return null;
     }
-    UriBuilder gadgetCallback = UriBuilder.parse(baseCallback);
     if (StringUtils.isEmpty(gadgetCallback.getScheme())) {
-      gadgetCallback.setScheme(activeUrl.getScheme());
+      gadgetCallback = new UriBuilder(gadgetCallback).setScheme(activeUrl.getScheme()).toUri();
     }
     return gadgetCallback.toString();
   }

Modified: shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/render/RenderingGadgetRewriter.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/render/RenderingGadgetRewriter.java?rev=951107&r1=951106&r2=951107&view=diff
==============================================================================
--- shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/render/RenderingGadgetRewriter.java (original)
+++ shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/render/RenderingGadgetRewriter.java Thu Jun  3 18:43:32 2010
@@ -29,7 +29,6 @@ import org.apache.shindig.gadgets.Gadget
 import org.apache.shindig.gadgets.GadgetException;
 import org.apache.shindig.gadgets.MessageBundleFactory;
 import org.apache.shindig.gadgets.UnsupportedFeatureException;
-import org.apache.shindig.gadgets.UrlGenerator;
 import org.apache.shindig.gadgets.features.FeatureRegistry;
 import org.apache.shindig.gadgets.features.FeatureResource;
 import org.apache.shindig.gadgets.oauth.OAuthArguments;
@@ -43,6 +42,7 @@ import org.apache.shindig.gadgets.spec.M
 import org.apache.shindig.gadgets.spec.ModulePrefs;
 import org.apache.shindig.gadgets.spec.UserPref;
 import org.apache.shindig.gadgets.spec.View;
+import org.apache.shindig.gadgets.uri.JsUriManager;
 import org.apache.commons.lang.StringUtils;
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
@@ -99,7 +99,7 @@ public class RenderingGadgetRewriter imp
   protected final MessageBundleFactory messageBundleFactory;
   protected final ContainerConfig containerConfig;
   protected final FeatureRegistry featureRegistry;
-  protected final UrlGenerator urlGenerator;
+  protected final JsUriManager jsUriManager;
   protected final RpcServiceLookup rpcServiceLookup;
   protected Set<String> defaultExternLibs = ImmutableSet.of();
 
@@ -112,12 +112,12 @@ public class RenderingGadgetRewriter imp
   public RenderingGadgetRewriter(MessageBundleFactory messageBundleFactory,
                                  ContainerConfig containerConfig,
                                  FeatureRegistry featureRegistry,
-                                 UrlGenerator urlGenerator,
+                                 JsUriManager jsUriManager,
                                  RpcServiceLookup rpcServiceLookup) {
     this.messageBundleFactory = messageBundleFactory;
     this.containerConfig = containerConfig;
     this.featureRegistry = featureRegistry;
-    this.urlGenerator = urlGenerator;
+    this.jsUriManager = jsUriManager;
     this.rpcServiceLookup = rpcServiceLookup;
   }
 
@@ -242,7 +242,7 @@ public class RenderingGadgetRewriter imp
     }
 
     if (!externForcedLibs.isEmpty()) {
-      String jsUrl = urlGenerator.getBundledJsUrl(externForcedLibs, context);
+      String jsUrl = jsUriManager.makeExternJsUri(gadget, externForcedLibs).toString();
       Element libsTag = headTag.getOwnerDocument().createElement("script");
       libsTag.setAttribute("src", StringUtils.replace(jsUrl, "&", "&amp;"));
       headTag.appendChild(libsTag);
@@ -284,7 +284,7 @@ public class RenderingGadgetRewriter imp
       externGadgetLibs.removeAll(externForcedLibs);
 
       if (!externGadgetLibs.isEmpty()) {
-        String jsUrl = urlGenerator.getBundledJsUrl(externGadgetLibs, context);
+        String jsUrl = jsUriManager.makeExternJsUri(gadget, externGadgetLibs).toString();
         Element libsTag = headTag.getOwnerDocument().createElement("script");
         libsTag.setAttribute("src", StringUtils.replace(jsUrl, "&", "&amp;"));
         headTag.appendChild(libsTag);

Modified: shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/GadgetRenderingServlet.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/GadgetRenderingServlet.java?rev=951107&r1=951106&r2=951107&view=diff
==============================================================================
--- shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/GadgetRenderingServlet.java (original)
+++ shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/GadgetRenderingServlet.java Thu Jun  3 18:43:32 2010
@@ -19,12 +19,13 @@ package org.apache.shindig.gadgets.servl
 
 import org.apache.shindig.common.servlet.HttpUtil;
 import org.apache.shindig.common.servlet.InjectedServlet;
+import org.apache.shindig.common.uri.UriBuilder;
 import org.apache.shindig.gadgets.GadgetContext;
-import org.apache.shindig.gadgets.UrlGenerator;
-import org.apache.shindig.gadgets.UrlValidationStatus;
 import org.apache.shindig.gadgets.http.HttpRequest;
 import org.apache.shindig.gadgets.render.Renderer;
 import org.apache.shindig.gadgets.render.RenderingResults;
+import org.apache.shindig.gadgets.uri.IframeUriManager;
+import org.apache.shindig.gadgets.uri.UriStatus;
 
 import com.google.inject.Inject;
 
@@ -46,7 +47,7 @@ public class GadgetRenderingServlet exte
   private static final Logger LOG = Logger.getLogger(GadgetRenderingServlet.class.getName());
 
   private Renderer renderer;
-  private UrlGenerator urlGenerator;
+  private IframeUriManager iframeUriManager;
 
   @Inject
   public void setRenderer(Renderer renderer) {
@@ -54,11 +55,11 @@ public class GadgetRenderingServlet exte
   }
   
   @Inject
-  public void setUrlGenerator(UrlGenerator gadgetUrlGenerator) {
-    this.urlGenerator = gadgetUrlGenerator;
+  public void setIframeUriManager(IframeUriManager iframeUriManager) {
+    this.iframeUriManager = iframeUriManager;
   }
 
-  private void render(HttpServletRequest req, HttpServletResponse resp, UrlValidationStatus urlstatus)
+  private void render(HttpServletRequest req, HttpServletResponse resp, UriStatus urlstatus)
       throws IOException {
     if (req.getHeader(HttpRequest.DOS_PREVENTION_HEADER) != null) {
       // Refuse to render for any request that came from us.
@@ -76,9 +77,9 @@ public class GadgetRenderingServlet exte
     switch (results.getStatus()) {
       case OK:
         if (context.getIgnoreCache() ||
-            urlstatus == UrlValidationStatus.INVALID) {
+            urlstatus == UriStatus.INVALID_VERSION) {
           HttpUtil.setCachingHeaders(resp, 0);
-        } else if (urlstatus == UrlValidationStatus.VALID_VERSIONED) {
+        } else if (urlstatus == UriStatus.VALID_VERSIONED) {
           // Versioned files get cached indefinitely
           HttpUtil.setCachingHeaders(resp, true);
         } else {
@@ -113,10 +114,10 @@ public class GadgetRenderingServlet exte
     // If an If-Modified-Since header is ever provided, we always say
     // not modified. This is because when there actually is a change,
     // cache busting should occur.
-    UrlValidationStatus urlstatus = getUrlStatus(req);
+    UriStatus urlstatus = getUrlStatus(req);
     if (req.getHeader("If-Modified-Since") != null &&
         !"1".equals(req.getParameter("nocache")) &&
-        urlstatus == UrlValidationStatus.VALID_VERSIONED) {
+        urlstatus == UriStatus.VALID_VERSIONED) {
       resp.setStatus(HttpServletResponse.SC_NOT_MODIFIED);
       return;
     }
@@ -128,8 +129,7 @@ public class GadgetRenderingServlet exte
     render(req, resp, getUrlStatus(req));
   }
   
-  private UrlValidationStatus getUrlStatus(HttpServletRequest req) {
-    return urlGenerator.validateIframeUrl(
-        req.getRequestURL().append('?').append(req.getQueryString()).toString());
+  private UriStatus getUrlStatus(HttpServletRequest req) {
+    return iframeUriManager.validateRenderingUri(new UriBuilder(req).toUri());
   }
 }

Modified: shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/JsServlet.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/JsServlet.java?rev=951107&r1=951106&r2=951107&view=diff
==============================================================================
--- shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/JsServlet.java (original)
+++ shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/JsServlet.java Thu Jun  3 18:43:32 2010
@@ -26,13 +26,14 @@ import org.apache.commons.lang.StringUti
 import org.apache.shindig.common.JsonSerializer;
 import org.apache.shindig.common.servlet.HttpUtil;
 import org.apache.shindig.common.servlet.InjectedServlet;
+import org.apache.shindig.common.uri.UriBuilder;
 import org.apache.shindig.config.ContainerConfig;
 import org.apache.shindig.gadgets.GadgetContext;
 import org.apache.shindig.gadgets.RenderingContext;
-import org.apache.shindig.gadgets.UrlGenerator;
-import org.apache.shindig.gadgets.UrlValidationStatus;
 import org.apache.shindig.gadgets.features.FeatureRegistry;
 import org.apache.shindig.gadgets.features.FeatureResource;
+import org.apache.shindig.gadgets.uri.JsUriManager;
+import org.apache.shindig.gadgets.uri.UriStatus;
 
 import com.google.inject.Inject;
 
@@ -64,10 +65,10 @@ public class JsServlet extends InjectedS
     this.registry = registry;
   }
   
-  private UrlGenerator urlGenerator;
+  private JsUriManager jsUriManager;
   @Inject
-  public void setUrlGenerator(UrlGenerator urlGenerator) {
-    this.urlGenerator = urlGenerator;
+  public void setUrlGenerator(JsUriManager jsUriManager) {
+    this.jsUriManager = jsUriManager;
   }
 
   private ContainerConfig containerConfig;
@@ -82,10 +83,9 @@ public class JsServlet extends InjectedS
     // If an If-Modified-Since header is ever provided, we always say
     // not modified. This is because when there actually is a change,
     // cache busting should occur.
-    UrlValidationStatus vstatus = urlGenerator.validateJsUrl(
-        req.getRequestURL().append('?').append(req.getQueryString()).toString());
+    UriStatus vstatus = jsUriManager.processExternJsUri(new UriBuilder(req).toUri()).getStatus();
     if (req.getHeader("If-Modified-Since") != null &&
-        vstatus == UrlValidationStatus.VALID_VERSIONED) {
+        vstatus == UriStatus.VALID_VERSIONED) {
       resp.setStatus(HttpServletResponse.SC_NOT_MODIFIED);
       return;
     }
@@ -182,7 +182,7 @@ public class JsServlet extends InjectedS
         // Unversioned files get cached for 1 hour.
         HttpUtil.setCachingHeaders(resp, 60 * 60, !isProxyCacheable);
         break;
-      case INVALID:
+      case INVALID_VERSION:
         // URL is invalid in some way, likely version mismatch.
         // Indicate no-cache forcing subsequent requests to regenerate URLs.
         HttpUtil.setNoCache(resp);

Modified: shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/JsonRpcHandler.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/JsonRpcHandler.java?rev=951107&r1=951106&r2=951107&view=diff
==============================================================================
--- shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/JsonRpcHandler.java (original)
+++ shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/JsonRpcHandler.java Thu Jun  3 18:43:32 2010
@@ -20,13 +20,13 @@ package org.apache.shindig.gadgets.servl
 
 import org.apache.shindig.gadgets.Gadget;
 import org.apache.shindig.gadgets.GadgetContext;
-import org.apache.shindig.gadgets.UrlGenerator;
 import org.apache.shindig.gadgets.process.Processor;
 import org.apache.shindig.gadgets.spec.GadgetSpec;
 import org.apache.shindig.gadgets.spec.LinkSpec;
 import org.apache.shindig.gadgets.spec.ModulePrefs;
 import org.apache.shindig.gadgets.spec.UserPref;
 import org.apache.shindig.gadgets.spec.View;
+import org.apache.shindig.gadgets.uri.IframeUriManager;
 
 import com.google.common.collect.Lists;
 import com.google.inject.Inject;
@@ -51,13 +51,13 @@ import java.util.concurrent.ExecutorServ
 public class JsonRpcHandler {
   protected final ExecutorService executor;
   protected final Processor processor;
-  protected final UrlGenerator urlGenerator;
+  protected final IframeUriManager iframeUriManager;
 
   @Inject
-  public JsonRpcHandler(ExecutorService executor, Processor processor, UrlGenerator urlGenerator) {
+  public JsonRpcHandler(ExecutorService executor, Processor processor, IframeUriManager iframeUriManager) {
     this.executor = executor;
     this.processor = processor;
-    this.urlGenerator = urlGenerator;
+    this.iframeUriManager = iframeUriManager;
   }
 
   /**
@@ -195,7 +195,7 @@ public class JsonRpcHandler {
         // TODO: This should probably just copy all data from
         // ModulePrefs.getAttributes(), but names have to be converted to
         // camel case.
-        gadgetJson.put("iframeUrl", urlGenerator.getIframeUrl(gadget))
+        gadgetJson.put("iframeUrl", iframeUriManager.makeRenderingUri(gadget).toString())
                   .put("url",context.getUrl().toString())
                   .put("moduleId", context.getModuleId())
                   .put("title", prefs.getTitle())

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=951107&r1=951106&r2=951107&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 Jun  3 18:43:32 2010
@@ -105,7 +105,7 @@ public class DefaultJsUriManager impleme
     }
     
     // Get config values up front.
-    String jsHost = getReqConfig(container, JS_HOST_PARAM);
+    getReqConfig(container, JS_HOST_PARAM); // validate that it exists
     String jsPrefix = getReqConfig(container, JS_PATH_PARAM);
     
     String host = uri.getAuthority();

Modified: shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/DefaultGadgetSpecFactoryTest.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/DefaultGadgetSpecFactoryTest.java?rev=951107&r1=951106&r2=951107&view=diff
==============================================================================
--- shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/DefaultGadgetSpecFactoryTest.java (original)
+++ shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/DefaultGadgetSpecFactoryTest.java Thu Jun  3 18:43:32 2010
@@ -152,7 +152,7 @@ public class DefaultGadgetSpecFactoryTes
     expect(pipeline.execute(request)).andReturn(response);
     replay(pipeline);
 
-    GadgetSpec spec = specFactory.getGadgetSpec(createContext(SPEC_URL, true));
+    specFactory.getGadgetSpec(createContext(SPEC_URL, true));
   }
 
   @Test(expected = GadgetException.class)
@@ -351,9 +351,5 @@ public class DefaultGadgetSpecFactoryTes
       this.request = request;
       return new HttpResponse(LOCAL_SPEC_XML);
     }
-
-    public void normalizeProtocol(HttpRequest request) throws GadgetException {
-      //No Op
-    }
   }
 }

Modified: shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/DefaultMessageBundleFactoryTest.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/DefaultMessageBundleFactoryTest.java?rev=951107&r1=951106&r2=951107&view=diff
==============================================================================
--- shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/DefaultMessageBundleFactoryTest.java (original)
+++ shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/DefaultMessageBundleFactoryTest.java Thu Jun  3 18:43:32 2010
@@ -347,7 +347,5 @@ public class DefaultMessageBundleFactory
       this.request = request;
       return new HttpResponse(BASIC_BUNDLE);
     }
-
-    public void normalizeProtocol(HttpRequest request) { }
   }
 }

Modified: shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/oauth/GadgetOAuthCallbackGeneratorTest.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/oauth/GadgetOAuthCallbackGeneratorTest.java?rev=951107&r1=951106&r2=951107&view=diff
==============================================================================
--- shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/oauth/GadgetOAuthCallbackGeneratorTest.java (original)
+++ shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/oauth/GadgetOAuthCallbackGeneratorTest.java Thu Jun  3 18:43:32 2010
@@ -31,10 +31,10 @@ import org.apache.shindig.common.uri.Uri
 import org.apache.shindig.gadgets.Gadget;
 import org.apache.shindig.gadgets.GadgetContext;
 import org.apache.shindig.gadgets.LockedDomainService;
-import org.apache.shindig.gadgets.UrlGenerator;
 import org.apache.shindig.gadgets.http.HttpRequest;
 import org.apache.shindig.gadgets.process.ProcessingException;
 import org.apache.shindig.gadgets.process.Processor;
+import org.apache.shindig.gadgets.uri.OAuthUriManager;
 import org.easymock.IArgumentMatcher;
 import org.easymock.EasyMock;
 import org.easymock.IMocksControl;
@@ -51,7 +51,7 @@ public class GadgetOAuthCallbackGenerato
   private IMocksControl control;
   private Processor processor;
   private LockedDomainService lockedDomainService;
-  private UrlGenerator urlGenerator;
+  private OAuthUriManager oauthUriManager;
   private BlobCrypter stateCrypter;
   private SecurityToken securityToken;
   private Gadget gadget;
@@ -63,7 +63,7 @@ public class GadgetOAuthCallbackGenerato
     control = EasyMock.createNiceControl();
     processor = control.createMock(Processor.class);
     lockedDomainService = control.createMock(LockedDomainService.class);
-    urlGenerator = control.createMock(UrlGenerator.class);
+    oauthUriManager = control.createMock(OAuthUriManager.class);
     stateCrypter = new BasicBlobCrypter("1111111111111111111".getBytes());
     securityToken = new BasicSecurityToken("viewer", "viewer", "app", "container.com",
         "gadget", "0", "default", MAKE_REQUEST_URL, null);
@@ -73,7 +73,7 @@ public class GadgetOAuthCallbackGenerato
   }
   
   private GadgetOAuthCallbackGenerator getGenerator() {
-    return new GadgetOAuthCallbackGenerator(processor, lockedDomainService, urlGenerator,
+    return new GadgetOAuthCallbackGenerator(processor, lockedDomainService, oauthUriManager,
         stateCrypter);
   }
 
@@ -128,8 +128,8 @@ public class GadgetOAuthCallbackGenerato
         .andReturn(gadget);
     expect(lockedDomainService.gadgetCanRender("renderinghost", gadget, "default"))
         .andReturn(true);
-    expect(urlGenerator.getGadgetDomainOAuthCallback("default", "renderinghost"))
-        .andReturn("//renderinghost/final/callback");
+    expect(oauthUriManager.makeOAuthCallbackUri("default", "renderinghost"))
+        .andReturn(Uri.parse("//renderinghost/final/callback"));
     
     control.replay();
     
@@ -155,8 +155,8 @@ public class GadgetOAuthCallbackGenerato
         .andReturn(gadget);
     expect(lockedDomainService.gadgetCanRender("renderinghost", gadget, "default"))
         .andReturn(true);
-    expect(urlGenerator.getGadgetDomainOAuthCallback("default", "renderinghost"))
-        .andReturn("https://renderinghost/final/callback");
+    expect(oauthUriManager.makeOAuthCallbackUri("default", "renderinghost"))
+        .andReturn(Uri.parse("https://renderinghost/final/callback"));
     
     control.replay();
     
@@ -182,8 +182,8 @@ public class GadgetOAuthCallbackGenerato
         .andReturn(gadget);
     expect(lockedDomainService.gadgetCanRender("renderinghost", gadget, "default"))
         .andReturn(true);
-    expect(urlGenerator.getGadgetDomainOAuthCallback("default", "renderinghost"))
-        .andReturn("https://renderinghost/final/callback");
+    expect(oauthUriManager.makeOAuthCallbackUri("default", "renderinghost"))
+        .andReturn(Uri.parse("https://renderinghost/final/callback"));
     
     control.replay();
     
@@ -210,7 +210,7 @@ public class GadgetOAuthCallbackGenerato
         .andReturn(gadget);
     expect(lockedDomainService.gadgetCanRender("renderinghost", gadget, "default"))
         .andReturn(true);
-    expect(urlGenerator.getGadgetDomainOAuthCallback("default", "renderinghost"))
+    expect(oauthUriManager.makeOAuthCallbackUri("default", "renderinghost"))
         .andReturn(null);
     
     control.replay();

Modified: shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/oauth/GadgetTokenStoreTest.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/oauth/GadgetTokenStoreTest.java?rev=951107&r1=951106&r2=951107&view=diff
==============================================================================
--- shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/oauth/GadgetTokenStoreTest.java (original)
+++ shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/oauth/GadgetTokenStoreTest.java Thu Jun  3 18:43:32 2010
@@ -82,7 +82,6 @@ public class GadgetTokenStoreTest {
   private OAuthClientState clientState;
   private OAuthResponseParams responseParams;
   private OAuthFetcherConfig fetcherConfig;
-  private OAuthFetcherConfig fetcherConfigSecureOwner;
 
   @Before
   public void setUp() throws Exception {
@@ -106,7 +105,6 @@ public class GadgetTokenStoreTest {
     clientState = new OAuthClientState(stateCrypter);
     responseParams = new OAuthResponseParams(socialToken, null, stateCrypter);
     fetcherConfig = new OAuthFetcherConfig(stateCrypter, store, new FakeTimeSource(), null, false);
-    fetcherConfigSecureOwner = new OAuthFetcherConfig(stateCrypter, store, new FakeTimeSource(), null, true);
   }
 
   @Test

Modified: shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/render/RenderingGadgetRewriterTest.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/render/RenderingGadgetRewriterTest.java?rev=951107&r1=951106&r2=951107&view=diff
==============================================================================
--- shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/render/RenderingGadgetRewriterTest.java (original)
+++ shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/render/RenderingGadgetRewriterTest.java Thu Jun  3 18:43:32 2010
@@ -41,8 +41,6 @@ import org.apache.shindig.config.Abstrac
 import org.apache.shindig.gadgets.Gadget;
 import org.apache.shindig.gadgets.GadgetContext;
 import org.apache.shindig.gadgets.GadgetException;
-import org.apache.shindig.gadgets.UrlGenerator;
-import org.apache.shindig.gadgets.UrlValidationStatus;
 import org.apache.shindig.gadgets.features.FeatureRegistry;
 import org.apache.shindig.gadgets.features.FeatureResource;
 import org.apache.shindig.gadgets.parse.GadgetHtmlParser;
@@ -53,6 +51,7 @@ import org.apache.shindig.gadgets.rewrit
 import org.apache.shindig.gadgets.rewrite.RewritingException;
 import org.apache.shindig.gadgets.spec.GadgetSpec;
 import org.apache.shindig.gadgets.spec.View;
+import org.apache.shindig.gadgets.uri.JsUriManager;
 import org.easymock.IAnswer;
 import org.json.JSONArray;
 import org.json.JSONException;
@@ -96,7 +95,7 @@ public class RenderingGadgetRewriterTest
 
   private final FakeMessageBundleFactory messageBundleFactory = new FakeMessageBundleFactory();
   private final FakeContainerConfig config = new FakeContainerConfig();
-  private final UrlGenerator urlGenerator = new FakeUrlGenerator();
+  private final JsUriManager jsUriManager = new FakeJsUriManager();
   private final MapGadgetContext context = new MapGadgetContext();
 
   private FeatureRegistry featureRegistry;
@@ -107,7 +106,7 @@ public class RenderingGadgetRewriterTest
   public void setUp() throws Exception {
     featureRegistry = createMock(FeatureRegistry.class);
     rewriter
-        = new RenderingGadgetRewriter(messageBundleFactory, config, featureRegistry, urlGenerator, null);
+        = new RenderingGadgetRewriter(messageBundleFactory, config, featureRegistry, jsUriManager, null);
     Injector injector = Guice.createInjector(new ParseModule(), new PropertiesModule());
     parser = injector.getInstance(GadgetHtmlParser.class);
   }
@@ -984,31 +983,12 @@ public class RenderingGadgetRewriterTest
     }
   }
 
-  private static class FakeUrlGenerator implements UrlGenerator {
-    protected FakeUrlGenerator() {
+  private static class FakeJsUriManager implements JsUriManager {
+    public Uri makeExternJsUri(Gadget gadget, Collection<String> extern) {
+      return Uri.parse("/js/" + Join.join(":", extern));
     }
 
-    public String getBundledJsParam(Collection<String> features, GadgetContext context) {
-      throw new UnsupportedOperationException();
-    }
-    
-    public UrlValidationStatus validateJsUrl(String url) {
-      throw new UnsupportedOperationException();
-    }
-
-    public String getIframeUrl(Gadget gadget) {
-      throw new UnsupportedOperationException();
-    }
-    
-    public UrlValidationStatus validateIframeUrl(String url) {
-      throw new UnsupportedOperationException();
-    }
-
-    public String getBundledJsUrl(Collection<String> features, GadgetContext context) {
-      return "/js/" + Join.join(":", features);
-    }
-
-    public String getGadgetDomainOAuthCallback(String container, String gadgetHost) {
+    public JsUri processExternJsUri(Uri uri) {
       throw new UnsupportedOperationException();
     }
   }

Modified: shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/GadgetRenderingServletTest.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/GadgetRenderingServletTest.java?rev=951107&r1=951106&r2=951107&view=diff
==============================================================================
--- shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/GadgetRenderingServletTest.java (original)
+++ shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/GadgetRenderingServletTest.java Thu Jun  3 18:43:32 2010
@@ -24,12 +24,13 @@ import static org.junit.Assert.assertEqu
 import static org.junit.Assert.assertNull;
 
 import org.apache.shindig.common.servlet.HttpServletResponseRecorder;
+import org.apache.shindig.common.uri.Uri;
 import org.apache.shindig.gadgets.GadgetContext;
-import org.apache.shindig.gadgets.UrlGenerator;
-import org.apache.shindig.gadgets.UrlValidationStatus;
 import org.apache.shindig.gadgets.http.HttpRequest;
 import org.apache.shindig.gadgets.render.Renderer;
 import org.apache.shindig.gadgets.render.RenderingResults;
+import org.apache.shindig.gadgets.uri.IframeUriManager;
+import org.apache.shindig.gadgets.uri.UriStatus;
 
 import org.easymock.IMocksControl;
 import org.easymock.EasyMock;
@@ -44,19 +45,19 @@ public class GadgetRenderingServletTest 
       = "Games, HQ, Mang\u00E1, Anime e tudo que um bom nerd ama";
 
   private final IMocksControl control = EasyMock.createNiceControl();
-  private final HttpServletRequest request = control.createMock(HttpServletRequest.class);
+  private final HttpServletRequest request = makeRequestMock(this);
   private final HttpServletResponse response = control.createMock(HttpServletResponse.class);
   private final Renderer renderer = control.createMock(Renderer.class);
   public final HttpServletResponseRecorder recorder = new HttpServletResponseRecorder(response);
   private final GadgetRenderingServlet servlet = new GadgetRenderingServlet();
-  private final UrlGenerator urlGenerator = control.createMock(UrlGenerator.class);
+  private final IframeUriManager iframeUriManager = control.createMock(IframeUriManager.class);
   
   @Before
   public void setUpUrlGenerator() {
-    expect(urlGenerator.validateIframeUrl(isA(String.class))).andReturn(UrlValidationStatus.VALID_UNVERSIONED);
+    expect(iframeUriManager.validateRenderingUri(isA(Uri.class))).andReturn(UriStatus.VALID_UNVERSIONED);
     expect(request.getRequestURL()).andReturn(new StringBuffer("http://foo.com"));
     expect(request.getQueryString()).andReturn("?q=a");
-    servlet.setUrlGenerator(urlGenerator);
+    servlet.setIframeUriManager(iframeUriManager);
   }
 
   @Test
@@ -172,4 +173,13 @@ public class GadgetRenderingServletTest 
     servlet.doGet(request, recorder);
     assertEquals("private,max-age=300", recorder.getHeader("Cache-Control"));
   }
+
+  private static HttpServletRequest makeRequestMock(GadgetRenderingServletTest testcase) {
+    HttpServletRequest req = testcase.control.createMock(HttpServletRequest.class);
+    expect(req.getScheme()).andReturn("http").anyTimes();
+    expect(req.getServerPort()).andReturn(80).anyTimes();
+    expect(req.getServerName()).andReturn("example.com").anyTimes();
+    expect(req.getRequestURI()).andReturn("/path").anyTimes();
+    return req;
+  }
 }

Modified: shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/HtmlAccelServletTest.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/HtmlAccelServletTest.java?rev=951107&r1=951106&r2=951107&view=diff
==============================================================================
--- shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/HtmlAccelServletTest.java (original)
+++ shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/HtmlAccelServletTest.java Thu Jun  3 18:43:32 2010
@@ -27,18 +27,17 @@ import com.google.common.collect.Maps;
 import org.apache.shindig.common.uri.Uri;
 import org.apache.shindig.gadgets.Gadget;
 import org.apache.shindig.gadgets.GadgetContext;
-import org.apache.shindig.gadgets.UrlGenerator;
-import org.apache.shindig.gadgets.UrlValidationStatus;
 import org.apache.shindig.gadgets.http.HttpRequest;
 import org.apache.shindig.gadgets.http.HttpResponse;
 import org.apache.shindig.gadgets.http.HttpResponseBuilder;
 import org.apache.shindig.gadgets.render.Renderer;
 import org.apache.shindig.gadgets.render.RenderingResults;
+import org.apache.shindig.gadgets.uri.IframeUriManager;
+import org.apache.shindig.gadgets.uri.UriStatus;
 import org.easymock.Capture;
 import org.junit.Before;
 import org.junit.Test;
 
-import java.util.Collection;
 import java.util.Map;
 
 public class HtmlAccelServletTest extends ServletTestFixture {
@@ -52,7 +51,7 @@ public class HtmlAccelServletTest extend
   public void setUp() throws Exception {
     servlet = new HtmlAccelServlet();
     servlet.setRequestPipeline(pipeline);
-    servlet.setUrlGenerator(new FakeUrlGenerator());
+    servlet.setIframeUriManager(new FakeIframeUriManager());
     renderer = mock(Renderer.class);
     servlet.setRenderer(renderer);
   }
@@ -251,9 +250,9 @@ public class HtmlAccelServletTest extend
 
   private void expectRequest(String extraPath, String url) {
     expect(request.getServletPath()).andReturn(SERVLET).anyTimes();
-    expect(request.getScheme()).andReturn("http").once();
-    expect(request.getServerName()).andReturn("apache.org").once();
-    expect(request.getServerPort()).andReturn(-1).once();    
+    expect(request.getScheme()).andReturn("http").anyTimes();
+    expect(request.getServerName()).andReturn("apache.org").anyTimes();
+    expect(request.getServerPort()).andReturn(-1).anyTimes();    
     expect(request.getRequestURI()).andReturn(SERVLET + extraPath).anyTimes();    
     expect(request.getRequestURL())
         .andReturn(new StringBuffer("apache.org" + SERVLET + extraPath))
@@ -262,25 +261,12 @@ public class HtmlAccelServletTest extend
     expect(request.getQueryString()).andReturn(queryParams).anyTimes();
   }
 
-  private static class FakeUrlGenerator implements UrlGenerator {
-
-    public UrlValidationStatus validateJsUrl(String url) {
-      throw new UnsupportedOperationException();
-    }
-
-    public String getIframeUrl(Gadget gadget) {
-      throw new UnsupportedOperationException();
-    }
-
-    public UrlValidationStatus validateIframeUrl(String url) {
-      return UrlValidationStatus.VALID_UNVERSIONED;
-    }
-
-    public String getBundledJsUrl(Collection<String> features, GadgetContext context) {
-      throw new UnsupportedOperationException();
+  private static class FakeIframeUriManager implements IframeUriManager {
+    public UriStatus validateRenderingUri(Uri uri) {
+      return UriStatus.VALID_UNVERSIONED;
     }
 
-    public String getGadgetDomainOAuthCallback(String container, String gadgetHost) {
+    public Uri makeRenderingUri(Gadget gadget) {
       throw new UnsupportedOperationException();
     }
   }

Modified: shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/JsonRpcHandlerTest.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/JsonRpcHandlerTest.java?rev=951107&r1=951106&r2=951107&view=diff
==============================================================================
--- shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/JsonRpcHandlerTest.java (original)
+++ shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/JsonRpcHandlerTest.java Thu Jun  3 18:43:32 2010
@@ -27,12 +27,12 @@ import org.apache.shindig.common.uri.Uri
 import org.apache.shindig.gadgets.Gadget;
 import org.apache.shindig.gadgets.GadgetContext;
 import org.apache.shindig.gadgets.GadgetException;
-import org.apache.shindig.gadgets.UrlGenerator;
-import org.apache.shindig.gadgets.UrlValidationStatus;
 import org.apache.shindig.gadgets.process.ProcessingException;
 import org.apache.shindig.gadgets.process.Processor;
 import org.apache.shindig.gadgets.spec.GadgetSpec;
 import org.apache.shindig.gadgets.spec.View;
+import org.apache.shindig.gadgets.uri.IframeUriManager;
+import org.apache.shindig.gadgets.uri.UriStatus;
 
 import com.google.common.collect.Maps;
 
@@ -42,7 +42,6 @@ import org.json.JSONObject;
 import org.junit.Before;
 import org.junit.Test;
 
-import java.util.Collection;
 import java.util.Collections;
 import java.util.Map;
 
@@ -80,7 +79,7 @@ public class JsonRpcHandlerTest {
       "</Module>";
 
   private final FakeProcessor processor = new FakeProcessor();
-  private final FakeUrlGenerator urlGenerator = new FakeUrlGenerator();
+  private final FakeIframeUriManager urlGenerator = new FakeIframeUriManager();
   private final JsonRpcHandler jsonRpcHandler
       = new JsonRpcHandler(new TestExecutorService(), processor, urlGenerator);
 
@@ -111,7 +110,7 @@ public class JsonRpcHandlerTest {
         .put("context", createContext("en", "US"))
         .put("gadgets", gadgets);
 
-    urlGenerator.iframeUrl = SPEC_URL.toString();
+    urlGenerator.iframeUrl = SPEC_URL;
 
     JSONObject response = jsonRpcHandler.process(input);
 
@@ -261,37 +260,20 @@ public class JsonRpcHandlerTest {
     }
   }
 
-  protected static class FakeUrlGenerator implements UrlGenerator {
+  protected static class FakeIframeUriManager implements IframeUriManager {
     protected boolean throwRandomFault = false;
-    protected String iframeUrl = "http://example.org/gadgets/foo-does-not-matter";
+    protected Uri iframeUrl = Uri.parse("http://example.org/gadgets/foo-does-not-matter");
 
-    protected FakeUrlGenerator() {
-    }
-
-    public String getBundledJsParam(Collection<String> features, GadgetContext context) {
-      throw new UnsupportedOperationException();
-    }
+    protected FakeIframeUriManager() { }
 
-    public String getBundledJsUrl(Collection<String> features, GadgetContext context) {
-      throw new UnsupportedOperationException();
-    }
-    
-    public UrlValidationStatus validateJsUrl(String jsUrl) {
-      throw new UnsupportedOperationException();
-    }
-
-    public String getIframeUrl(Gadget gadget) {
+    public Uri makeRenderingUri(Gadget gadget) {
       if (throwRandomFault) {
         throw new RuntimeException("BROKEN");
       }
       return iframeUrl;
     }
-    
-    public UrlValidationStatus validateIframeUrl(String url) {
-      throw new UnsupportedOperationException();
-    }
 
-    public String getGadgetDomainOAuthCallback(String container, String gadgetHost) {
+    public UriStatus validateRenderingUri(Uri uri) {
       throw new UnsupportedOperationException();
     }
   }