Author: lindner Date: Thu Apr 7 02:11:14 2011 New Revision: 1089708 URL: http://svn.apache.org/viewvc?rev=1089708&view=rev Log: Patch from Stanton Sievers | DefaultIframeUriManager changes for handling locked domains"
http://codereview.appspot.com/4343053/ Modified: shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/uri/DefaultIframeUriManager.java shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/uri/DefaultIframeUriManagerTest.java Modified: shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/uri/DefaultIframeUriManager.java URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/uri/DefaultIframeUriManager.java?rev=1089708&r1=1089707&r2=1089708&view=diff ============================================================================== --- shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/uri/DefaultIframeUriManager.java (original) +++ shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/uri/DefaultIframeUriManager.java Thu Apr 7 02:11:14 2011 @@ -126,23 +126,32 @@ public class DefaultIframeUriManager imp // 2. Set host/authority. String host; if (usingLockedDomain(gadget, container)) { - host = ldGen.getLockedDomainPrefix(gadget.getSpec().getUrl()) + + host = "//" + ldGen.getLockedDomainPrefix(gadget.getSpec().getUrl()) + getReqVal(container, LOCKED_DOMAIN_SUFFIX_KEY); } else { host = getReqVal(container, UNLOCKED_DOMAIN_KEY); } - // 3. Set host/authority and protocol/schema. Uri gadgetUri = Uri.parse(host); + if (gadgetUri.getAuthority() == null + && gadgetUri.getScheme() == null + && gadgetUri.getPath().equals(host)) { + // This is for backwards compatibility with unlocked domains like + // "unlockeddomain.com" + gadgetUri = Uri.parse("//" + host); + } + + // 3. Set the scheme. if (StringUtils.isBlank(gadgetUri.getScheme())) { - uri.setAuthority(host); uri.setScheme(getScheme(gadget, container)); } else { - uri.setAuthority(gadgetUri.getAuthority()); uri.setScheme(gadgetUri.getScheme()); } - // 4. Add the URL. + // 4. Set the authority. + uri.setAuthority(gadgetUri.getAuthority()); + + // 5. Add the URL. uri.addQueryParameter(Param.URL.getKey(), context.getUrl().toString()); } Modified: shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/uri/DefaultIframeUriManagerTest.java URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/uri/DefaultIframeUriManagerTest.java?rev=1089708&r1=1089707&r2=1089708&view=diff ============================================================================== --- shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/uri/DefaultIframeUriManagerTest.java (original) +++ shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/uri/DefaultIframeUriManagerTest.java Thu Apr 7 02:11:14 2011 @@ -62,6 +62,7 @@ public class DefaultIframeUriManagerTest private static final String LD_SUFFIX = ".lockeddomain.com"; private static final String LD_SUFFIX_ALT = ".altld.com"; private static final String UNLOCKED_DOMAIN = "unlockeddomain.com"; + private static final String UNLOCKED_DOMAIN_CONFIG_VALUE = "//" + UNLOCKED_DOMAIN; private static final int TYPE_URL_NUM_BASE_PARAMS = 8; private static final int TYPE_HTML_NUM_BASE_PARAMS = 8; @@ -654,6 +655,38 @@ public class DefaultIframeUriManagerTest assertEquals(UriStatus.VALID_UNVERSIONED, manager.validateRenderingUri(testUri)); } + @Test + public void schemeLessUnlockedDomain() throws Exception { + Gadget gadget = mockGadget(); + ContainerConfig config = new BasicContainerConfig(); + config + .newTransaction() + .addContainer(ImmutableMap.<String, Object>builder() + .put(ContainerConfig.CONTAINER_KEY, ContainerConfig.DEFAULT_CONTAINER) + .put(LOCKED_DOMAIN_SUFFIX_KEY, LD_SUFFIX) + .build()) + .addContainer(ImmutableMap.<String, Object> builder() + .put(ContainerConfig.CONTAINER_KEY, CONTAINER) + .put(IFRAME_BASE_PATH_KEY, IFRAME_PATH) + .put(UNLOCKED_DOMAIN_KEY, UNLOCKED_DOMAIN) + .build()) + .commit(); + + TestDefaultIframeUriManager manager = new TestDefaultIframeUriManager(config); + + Uri renderingUri = manager.makeRenderingUri(gadget); + assertNotNull(renderingUri); + + UriBuilder uri = new UriBuilder(renderingUri); + assertEquals("", uri.getScheme()); + assertEquals(UNLOCKED_DOMAIN, uri.getAuthority()); + assertEquals(IFRAME_PATH, uri.getPath()); + + // Basic sanity checks on params + assertEquals(TYPE_HTML_NUM_BASE_PARAMS, uri.getQueryParameters().size()); + assertEquals(0, uri.getFragmentParameters().size()); + } + private Uri makeValidationTestUri(String domain, String version) { UriBuilder uri = new UriBuilder(); uri.setAuthority(domain); @@ -682,7 +715,7 @@ public class DefaultIframeUriManagerTest .put(ContainerConfig.CONTAINER_KEY, CONTAINER) .put(IFRAME_BASE_PATH_KEY, IFRAME_PATH) .put(LOCKED_DOMAIN_SUFFIX_KEY, LD_SUFFIX) - .put(UNLOCKED_DOMAIN_KEY, UNLOCKED_DOMAIN) + .put(UNLOCKED_DOMAIN_KEY, UNLOCKED_DOMAIN_CONFIG_VALUE) .put(SECURITY_TOKEN_ALWAYS_KEY, alwaysToken) .put(LOCKED_DOMAIN_REQUIRED_KEY, ldRequired) .build())
