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/03/11 03:28:27 UTC

svn commit: r921666 - in /shindig/trunk/java/gadgets/src: main/java/org/apache/shindig/gadgets/uri/DefaultProxyUriManager.java test/java/org/apache/shindig/gadgets/uri/DefaultProxyUriManagerTest.java

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