Author: johnh
Date: Thu Mar 11 02:28:27 2010
New Revision: 921666
URL: http://svn.apache.org/viewvc?rev=921666&view=rev
Log:
The DefaultProxyUriManagerTest implementation was also not using the process()
method to verify parsing behavior, as it ought to have. Changing the logic
surfaced the issue.
Thanks to Ziv Horesh for taking notice.
Modified:
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/uri/DefaultProxyUriManager.java
shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/uri/DefaultProxyUriManagerTest.java
Modified:
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/uri/DefaultProxyUriManager.java
URL:
http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/uri/DefaultProxyUriManager.java?rev=921666&r1=921665&r2=921666&view=diff
==============================================================================
---
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/uri/DefaultProxyUriManager.java
(original)
+++
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/uri/DefaultProxyUriManager.java
Thu Mar 11 02:28:27 2010
@@ -174,15 +174,24 @@ public class DefaultProxyUriManager impl
String proxyPath = config.getString(container, PROXY_PATH_PARAM);
if (proxyPath != null) {
String[] chainedChunks = proxyPath.split(CHAINED_PARAMS_TOKEN);
+
+ // Parse out the URI of the actual resource. This URI is found as
the
+ // substring of the "full" URI, after the chained proxy prefix. We
+ // first search for the pre- and post-fixes of the original
/pre/%chained_params%/post
+ // ContainerConfig value, and take the URI as everything beyond
that point.
+ String startToken = chainedChunks[0], endToken = "/";
if (chainedChunks.length == 2) {
- // Pull URI out of original inUri's full representation.
- String fullProxyUri = uriIn.toString();
- int sfxIx = fullProxyUri.indexOf(chainedChunks[1]);
- if (sfxIx > 0) {
- uriStr = fullProxyUri.substring(sfxIx +
chainedChunks[1].length());
- while (uriStr.startsWith("/")) {
- uriStr = uriStr.substring(1);
- }
+ endToken = chainedChunks[1];
+ }
+
+ // Pull URI out of original inUri's full representation.
+ String fullProxyUri = uriIn.toString();
+ int startIx = fullProxyUri.indexOf(startToken);
+ int endIx = fullProxyUri.indexOf(endToken, startIx +
startToken.length());
+ if (startIx > 0 && endIx > 0) {
+ uriStr = fullProxyUri.substring(endIx + endToken.length());
+ while (uriStr.startsWith("/")) {
+ uriStr = uriStr.substring(1);
}
}
}
Modified:
shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/uri/DefaultProxyUriManagerTest.java
URL:
http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/uri/DefaultProxyUriManagerTest.java?rev=921666&r1=921665&r2=921666&view=diff
==============================================================================
---
shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/uri/DefaultProxyUriManagerTest.java
(original)
+++
shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/uri/DefaultProxyUriManagerTest.java
Thu Mar 11 02:28:27 2010
@@ -34,6 +34,7 @@ import org.apache.shindig.common.uri.Uri
import org.apache.shindig.common.uri.UriBuilder;
import org.apache.shindig.gadgets.Gadget;
import org.apache.shindig.gadgets.GadgetException;
+import org.apache.shindig.gadgets.uri.ProxyUriManager.ProxyUri;
import org.apache.shindig.gadgets.uri.UriCommon.Param;
import org.junit.Test;
@@ -61,7 +62,7 @@ public class DefaultProxyUriManagerTest
List<Uri> resources = ImmutableList.<Uri>of(RESOURCE_1);
List<Uri> uris = makeAndGet(host, path, debug, noCache, resources,
version);
assertEquals(1, uris.size());
- verifyQueryUri(RESOURCE_1, uris.get(0), debug, noCache, version);
+ verifyQueryUri(RESOURCE_1, uris.get(0), debug, noCache, version, host,
path);
}
@Test
@@ -80,7 +81,7 @@ public class DefaultProxyUriManagerTest
List<Uri> resources = ImmutableList.<Uri>of(RESOURCE_1);
List<Uri> uris = makeAndGet(host, path, debug, noCache, resources,
version);
assertEquals(1, uris.size());
- verifyChainedUri(RESOURCE_1, uris.get(0), debug, noCache, version, false);
+ verifyChainedUri(RESOURCE_1, uris.get(0), debug, noCache, version, false,
host, path);
}
@Test
@@ -99,7 +100,7 @@ public class DefaultProxyUriManagerTest
List<Uri> resources = ImmutableList.<Uri>of(RESOURCE_1);
List<Uri> uris = makeAndGet(host, path, debug, noCache, resources,
version);
assertEquals(1, uris.size());
- verifyChainedUri(RESOURCE_1, uris.get(0), debug, noCache, version, true);
+ verifyChainedUri(RESOURCE_1, uris.get(0), debug, noCache, version, true,
host, path);
}
@Test
@@ -111,7 +112,7 @@ public class DefaultProxyUriManagerTest
List<Uri> uris = makeAndGet(host, path, true, true, resources, versions);
assertEquals(3, uris.size());
for (int i = 0; i < 3; ++i) {
- verifyQueryUri(resources.get(i), uris.get(i), true, true, versions[i]);
+ verifyQueryUri(resources.get(i), uris.get(i), true, true, versions[i],
host, path);
}
}
@@ -124,7 +125,7 @@ public class DefaultProxyUriManagerTest
List<Uri> uris = makeAndGet(host, path, true, true, resources, versions);
assertEquals(3, uris.size());
for (int i = 0; i < 3; ++i) {
- verifyChainedUri(resources.get(i), uris.get(i), true, true, versions[i],
false);
+ verifyChainedUri(resources.get(i), uris.get(i), true, true, versions[i],
false, host, path);
}
}
@@ -235,25 +236,37 @@ public class DefaultProxyUriManagerTest
ProxyUriManager.ProxyUri.fromList(gadget, resources), 123);
}
- private void verifyQueryUri(Uri orig, Uri uri, boolean debug, boolean
noCache, String version)
- throws Exception {
- assertEquals(version == null ? 6 : 7, uri.getQueryParameters().size());
- assertEquals(SPEC_URI.toString(),
uri.getQueryParameter(Param.GADGET.getKey()));
- assertEquals(CONTAINER, uri.getQueryParameter(Param.CONTAINER.getKey()));
- assertEquals(debug ? "1" : "0",
uri.getQueryParameter(Param.DEBUG.getKey()));
- assertEquals(noCache ? "1" : "0",
uri.getQueryParameter(Param.NO_CACHE.getKey()));
+ private void verifyQueryUri(Uri orig, Uri uri, boolean debug, boolean
noCache, String version,
+ String host, String path) throws Exception {
+ // Make sure the manager can parse out results.
+ DefaultProxyUriManager manager = makeManager(host, path, null);
+ ProxyUri proxyUri = manager.process(uri);
+ assertEquals(orig, proxyUri.getResource());
+ assertEquals(debug, proxyUri.isDebug());
+ assertEquals(noCache, proxyUri.isNoCache());
+ assertEquals(noCache ? 0 : 123, (int)proxyUri.getRefresh());
+ assertEquals(CONTAINER, proxyUri.getContainer());
+ assertEquals(SPEC_URI.toString(), proxyUri.getGadget());
+
+ // "Raw" query param verification.
assertEquals("123", uri.getQueryParameter(Param.REFRESH.getKey()));
- assertEquals(orig.toString(), uri.getQueryParameter(Param.URL.getKey()));
if (version != null) {
assertEquals(version, uri.getQueryParameter(Param.VERSION.getKey()));
}
}
private void verifyChainedUri(Uri orig, Uri uri, boolean debug, boolean
noCache, String version,
- boolean endOfPath)
+ boolean endOfPath, String host, String path)
throws Exception {
- // Query params should copy over (even if none)
- assertEquals(orig.getQueryParameters().size(),
uri.getQueryParameters().size());
+ // Make sure the manager can parse out results.
+ DefaultProxyUriManager manager = makeManager(host, path, null);
+ ProxyUri proxyUri = manager.process(uri);
+ assertEquals(orig, proxyUri.getResource());
+ assertEquals(debug, proxyUri.isDebug());
+ assertEquals(noCache, proxyUri.isNoCache());
+ assertEquals(noCache ? 0 : 123, (int)proxyUri.getRefresh());
+ assertEquals(CONTAINER, proxyUri.getContainer());
+ assertEquals(SPEC_URI.toString(), proxyUri.getGadget());
// URI should end with the proxied content.
String uriStr = uri.toString();
@@ -266,11 +279,8 @@ public class DefaultProxyUriManagerTest
(endOfPath ? uriStr.indexOf("/", proxyEnd) : uriStr.indexOf("/path"))
- DefaultProxyUriManager.CHAINED_PARAMS_END_BEACON.length());
uri = new UriBuilder().setQuery(paramsUri).toUri();
- assertEquals(version == null ? 5 : 6, uri.getQueryParameters().size());
- assertEquals(SPEC_URI.toString(),
uri.getQueryParameter(Param.GADGET.getKey()));
- assertEquals(CONTAINER, uri.getQueryParameter(Param.CONTAINER.getKey()));
- assertEquals(debug ? "1" : "0",
uri.getQueryParameter(Param.DEBUG.getKey()));
- assertEquals(noCache ? "1" : "0",
uri.getQueryParameter(Param.NO_CACHE.getKey()));
+
+ // "Raw" query param verification.
assertEquals("123", uri.getQueryParameter(Param.REFRESH.getKey()));
if (version != null) {
assertEquals(version, uri.getQueryParameter(Param.VERSION.getKey()));