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()));


Reply via email to