You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@shindig.apache.org by rb...@apache.org on 2011/10/20 01:51:42 UTC
svn commit: r1186569 - in /shindig/trunk/java/gadgets/src:
main/java/org/apache/shindig/gadgets/admin/
test/java/org/apache/shindig/gadgets/admin/
Author: rbaxter85
Date: Wed Oct 19 23:51:42 2011
New Revision: 1186569
URL: http://svn.apache.org/viewvc?rev=1186569&view=rev
Log:
SHINDIG-1643
Gadget Admin Code Does Not Take Into Account Ports In Gadget URLs
Modified:
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/admin/ContainerAdminData.java
shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/admin/BasicGadgetAdminStoreTest.java
shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/admin/ContainerAdminDataTest.java
Modified: shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/admin/ContainerAdminData.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/admin/ContainerAdminData.java?rev=1186569&r1=1186568&r2=1186569&view=diff
==============================================================================
--- shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/admin/ContainerAdminData.java (original)
+++ shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/admin/ContainerAdminData.java Wed Oct 19 23:51:42 2011
@@ -18,6 +18,8 @@
*/
package org.apache.shindig.gadgets.admin;
+import java.net.MalformedURLException;
+import java.net.URL;
import java.util.Map;
import java.util.Set;
@@ -30,6 +32,12 @@ import com.google.common.base.Objects;
* @version $Id: $
*/
public class ContainerAdminData {
+ private static final String STAR = "*";
+ private static final String HTTP = "http";
+ private static final String HTTPS = "https";
+ private static final int HTTP_PORT = 80;
+ private static final int HTTPS_PORT = 443;
+
private Map<String, GadgetAdminData> gadgetAdminMap;
/**
@@ -139,17 +147,53 @@ public class ContainerAdminData {
*/
private String getGadgetAdminDataKey(String gadgetUrl) {
Set<String> gadgetUrls = this.gadgetAdminMap.keySet();
+ String normalizedGadgetUrl = createUrlWithPort(gadgetUrl);
String key = null;
for (String url : gadgetUrls) {
- if (url.endsWith("*") && gadgetUrl.startsWith(url.substring(0, url.length() - 1))) {
- if (key == null || (key != null && key.length() < url.length())) {
+ String normalizedUrl = createUrlWithPort(url);
+ if (normalizedUrl.endsWith(STAR)
+ && normalizedGadgetUrl.startsWith(normalizedUrl.substring(0,
+ normalizedUrl.length() - 1))) {
+ if (key == null || (key != null && key.length() < normalizedUrl.length())) {
key = url;
}
+ } else if (normalizedUrl.equals(normalizedGadgetUrl)) {
+ key = url;
+ break;
}
}
return key;
}
+ /**
+ * Creates a new URL with the default port if one is not already there.
+ *
+ * @param gadgetUrl
+ * The gadget URL to add the port to.
+ * @return A new URL with the default port.
+ */
+ private String createUrlWithPort(String gadgetUrl) {
+ try {
+ URL origUrl = new URL(gadgetUrl);
+ URL urlWithPort = null;
+ String origHost = origUrl.getHost();
+ if (origUrl.getPort() <= 0 && origHost != null && origHost.length() != 0
+ && !STAR.equals(origHost)) {
+ if (origUrl.getProtocol().equalsIgnoreCase(HTTP)) {
+ urlWithPort = new URL(origUrl.getProtocol(), origUrl.getHost(), HTTP_PORT, origUrl.getFile());
+ }
+ else if (origUrl.getProtocol().equalsIgnoreCase(HTTPS)) {
+ urlWithPort = new URL(origUrl.getProtocol(), origUrl.getHost(), HTTPS_PORT, origUrl.getFile());
+ }
+ return urlWithPort == null ? origUrl.toString() : urlWithPort.toString();
+ } else {
+ return origUrl.toString();
+ }
+ } catch (MalformedURLException e) {
+ return gadgetUrl;
+ }
+ }
+
@Override
public boolean equals(Object obj) {
if (obj instanceof ContainerAdminData) {
Modified: shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/admin/BasicGadgetAdminStoreTest.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/admin/BasicGadgetAdminStoreTest.java?rev=1186569&r1=1186568&r2=1186569&view=diff
==============================================================================
--- shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/admin/BasicGadgetAdminStoreTest.java (original)
+++ shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/admin/BasicGadgetAdminStoreTest.java Wed Oct 19 23:51:42 2011
@@ -53,22 +53,23 @@ import com.google.common.collect.Sets;
public class BasicGadgetAdminStoreTest extends EasyMockTestCase {
private static final String SAMPLE_STORE = "{" + "\"default\" : {" + "\"gadgets\" : {"
- + "\"http://www.google.com/ig/modules/horoscope.xml\" : {"
+ + "\"http://www.google.com:80/ig/modules/horoscope.xml\" : {"
+ "\"features\" : [\"views\", \"tabs\", \"setprefs\", \"dynamic-height\", \"settitle\"],"
+ "\"type\" : \"whitelist\"" + "},"
+ "\"http://www.labpixies.com/campaigns/todo/todo.xml\" : {"
+ "\"features\" : [\"setprefs\", \"dynamic-height\", \"views\"],"
+ "\"type\" : \"blacklist\"" + "},"
- + "\"http://foo.com/*\" : {"
+ + "\"https://foo.com/*\" : {"
+ "\"features\" : []" + "},"
+ "\"http://*\" : {"
+ "\"features\" : []," + "\"type\" : \"whitelist\"" + "},"+ "}" + "}" + "}";
private static final String DEFAULT = "default";
private static final String HOROSCOPE = "http://www.google.com/ig/modules/horoscope.xml";
+ private static final String HOROSCOPE_WITH_PORT = "http://www.google.com:80/ig/modules/horoscope.xml";
private static final String TODO = "http://www.labpixies.com/campaigns/todo/todo.xml";
private static final String TEST_GADGET = "http://www.example.com/gadget.xml";
- private static final String FOO_GADGET = "http://foo.com/*";
+ private static final String FOO_GADGET = "https://foo.com/*";
private static final String HTTP_GADGET = "http://*";
private Set<String> HOROSCOPE_FEATURES = Sets.newHashSet("views", "tabs", "setprefs",
"dynamic-height", "settitle", "core");
@@ -118,7 +119,7 @@ public class BasicGadgetAdminStoreTest e
defaultAdminData = new ContainerAdminData();
defaultAdminData.addGadgetAdminData(TODO, todoAdminData);
- defaultAdminData.addGadgetAdminData(HOROSCOPE, horoscopeAdminData);
+ defaultAdminData.addGadgetAdminData(HOROSCOPE_WITH_PORT, horoscopeAdminData);
defaultAdminData.addGadgetAdminData(FOO_GADGET, fooAdminData);
defaultAdminData.addGadgetAdminData(HTTP_GADGET, httpAdminData);
@@ -182,7 +183,8 @@ public class BasicGadgetAdminStoreTest e
public void testGetGadgetAdminData() {
assertEquals(horoscopeAdminData, enabledStore.getGadgetAdminData(DEFAULT, HOROSCOPE));
assertEquals(todoAdminData, enabledStore.getGadgetAdminData(DEFAULT, TODO));
- assertEquals(fooAdminData, enabledStore.getGadgetAdminData(DEFAULT, "http://foo.com/bar/gadget.xml"));
+ assertEquals(fooAdminData, enabledStore.getGadgetAdminData(DEFAULT, "https://foo.com/bar/gadget.xml"));
+ assertEquals(fooAdminData, enabledStore.getGadgetAdminData(DEFAULT, "https://foo.com:443/bar/gadget.xml"));
assertNull(enabledStore.getGadgetAdminData("my_container", HOROSCOPE));
assertEquals(httpAdminData, enabledStore.getGadgetAdminData(DEFAULT, "http://example.com/gadget2.xml"));
}
Modified: shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/admin/ContainerAdminDataTest.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/admin/ContainerAdminDataTest.java?rev=1186569&r1=1186568&r2=1186569&view=diff
==============================================================================
--- shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/admin/ContainerAdminDataTest.java (original)
+++ shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/admin/ContainerAdminDataTest.java Wed Oct 19 23:51:42 2011
@@ -48,8 +48,11 @@ public class ContainerAdminDataTest {
private static final String EE = "embedded-experiences";
private static final String SELECTION = "selection";
private static final String GADGET_URL_1 = "http://sample.com/gadget1.xml";
+ private static final String GADGET_URL_1_WITH_PORT = "http://sample.com:80/gadget1.xml";
private static final String GADGET_URL_2 = "http://sample.com/gadget2.xml";
private static final String GADGET_URL_3 = "http://example.com/*";
+ private static final String GADGET_URL_4 = "https://sample.com/gadget1.xml";
+ private static final String GADGET_URL_4_WITH_PORT = "https://sample.com:443/gadget1.xml";
private Set<String> whitelist;
private Set<String> blacklist;
@@ -78,6 +81,7 @@ public class ContainerAdminDataTest {
gadgetMap.put(GADGET_URL_2, blacklistData);
gadgetMap.put(GADGET_URL_3, new GadgetAdminData());
gadgetMap.put("http://*", blacklistData);
+ gadgetMap.put(GADGET_URL_4_WITH_PORT, whitelistData);
validData = new ContainerAdminData(gadgetMap);
emptyData = new ContainerAdminData(new HashMap<String, GadgetAdminData>());
@@ -104,12 +108,17 @@ public class ContainerAdminDataTest {
@Test
public void testGetGadgetAdminData() {
assertEquals(whitelistData, validData.getGadgetAdminData(GADGET_URL_1));
+ assertEquals(whitelistData, validData.getGadgetAdminData(GADGET_URL_1_WITH_PORT));
assertEquals(blacklistData, validData.getGadgetAdminData(GADGET_URL_2));
assertEquals(new GadgetAdminData(),
validData.getGadgetAdminData("http://example.com/gadgets/gadget.xml"));
assertEquals(new GadgetAdminData(),
validData.getGadgetAdminData("http://example.com/gadget.xml"));
assertEquals(blacklistData, validData.getGadgetAdminData("http://foo.com/gadget.xml"));
+ assertEquals(blacklistData, validData.getGadgetAdminData("http://foo.com:80/gadget.xml"));
+ assertNull(validData.getGadgetAdminData("https://foo.com:80/gadget.xml"));
+ assertEquals(whitelistData, validData.getGadgetAdminData(GADGET_URL_4));
+ assertEquals(whitelistData, validData.getGadgetAdminData(GADGET_URL_4_WITH_PORT));
assertNull(emptyData.getGadgetAdminData(GADGET_URL_1));
assertNull(nullData.getGadgetAdminData(GADGET_URL_1));
assertNull(defaultData.getGadgetAdminData(GADGET_URL_1));
@@ -181,8 +190,15 @@ public class ContainerAdminDataTest {
public void testHasGadgetAdminData() {
assertTrue(validData.hasGadgetAdminData(GADGET_URL_1));
assertTrue(validData.hasGadgetAdminData(GADGET_URL_2));
+ assertTrue(validData.hasGadgetAdminData(GADGET_URL_1_WITH_PORT));
assertTrue(validData.hasGadgetAdminData("http://example.com/gadget3.xml"));
+ assertTrue(validData.hasGadgetAdminData("http://example.com:80/gadget3.xml"));
assertFalse(validData.hasGadgetAdminData("https://example.com/gadget3.xml"));
+ assertTrue(validData.hasGadgetAdminData(GADGET_URL_4));
+ assertTrue(validData.hasGadgetAdminData(GADGET_URL_4_WITH_PORT));
+ assertTrue(validData.hasGadgetAdminData("http://foo.com/gadget.xml"));
+ assertTrue(validData.hasGadgetAdminData("http://foo.com:80/gadget.xml"));
+ assertFalse(validData.hasGadgetAdminData("https://foo.com/gadget.xml"));
assertFalse(nullData.hasGadgetAdminData(GADGET_URL_1));
assertFalse(emptyData.hasGadgetAdminData(GADGET_URL_2));
assertFalse(defaultData.hasGadgetAdminData(GADGET_URL_2));