Author: zhoresh
Date: Tue Oct 26 00:19:12 2010
New Revision: 1027321

URL: http://svn.apache.org/viewvc?rev=1027321&view=rev
Log:
Ref http://codereview.appspot.com/2622042/
Handle schema less url for proxy and concat

Modified:
    
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/uri/DefaultConcatUriManager.java
    
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/DefaultConcatUriManagerTest.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/DefaultConcatUriManager.java
URL: 
http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/uri/DefaultConcatUriManager.java?rev=1027321&r1=1027320&r2=1027321&view=diff
==============================================================================
--- 
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/uri/DefaultConcatUriManager.java
 (original)
+++ 
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/uri/DefaultConcatUriManager.java
 Tue Oct 26 00:19:12 2010
@@ -38,7 +38,7 @@ import java.util.Map;
 
 /**
  * Default implementation of a ConcatUriManager
- * 
+ *
  * @since 2.0.0
  */
 public class DefaultConcatUriManager implements ConcatUriManager {
@@ -46,21 +46,21 @@ public class DefaultConcatUriManager imp
   public static final String CONCAT_PATH_PARAM = "gadgets.uri.concat.path";
   public static final String CONCAT_JS_SPLIT_PARAM = 
"gadgets.uri.concat.js.splitToken";
   public static final String CONCAT_JS_EVAL_TPL = "eval(%s['%s']);";
-  
+
   private static final ConcatUri BAD_URI =
       new ConcatUri(UriStatus.BAD_URI, null, null, null, null);
   private static final Integer START_INDEX = 1;
-  
+
   private final ContainerConfig config;
   private final Versioner versioner;
   private boolean strictParsing;
-  
+
   @Inject
   public DefaultConcatUriManager(ContainerConfig config, @Nullable Versioner 
versioner) {
     this.config = config;
     this.versioner = versioner;
   }
-  
+
   @Inject(optional = true)
   public void setUseStrictParsing(
       @Named("shindig.uri.concat.use-strict-parsing") boolean useStrict) {
@@ -70,45 +70,45 @@ public class DefaultConcatUriManager imp
   public List<ConcatData> make(List<ConcatUri> resourceUris,
       boolean isAdjacent) {
     List<ConcatData> concatUris = 
Lists.newArrayListWithCapacity(resourceUris.size());
-    
+
     if (resourceUris.isEmpty()) {
       return concatUris;
     }
 
     ConcatUri exemplar = resourceUris.get(0);
     String container = exemplar.getContainer();
-    
+
     List<String> versions = null;
     List<List<Uri>> batches = 
Lists.newArrayListWithCapacity(resourceUris.size());
     for (ConcatUri ctx : resourceUris) {
       batches.add(ctx.getBatch());
     }
-    
+
     if (versioner != null) {
       versions = versioner.version(batches, container);
     }
-    
+
     Iterator<String> versionIt = versions != null ? versions.iterator() : null;
     for (ConcatUri ctx : resourceUris) {
       String version = versionIt != null ? versionIt.next() : null;
       concatUris.add(
           makeConcatUri(ctx, isAdjacent, version));
     }
-    
+
     return concatUris;
   }
-  
+
   private ConcatData makeConcatUri(ConcatUri ctx, boolean isAdjacent, String 
version) {
     // TODO: Consider per-bundle isAdjacent plus first-bundle direct evaluation
-    
+
     if (!isAdjacent && ctx.getType() != Type.JS) {
       // Split-concat is only supported for JS at the moment.
       // This situation should never occur due to ConcatLinkRewriter's 
implementation.
       throw new UnsupportedOperationException("Split concatenation only 
supported for JS");
     }
-    
+
     UriBuilder uriBuilder = ctx.makeQueryParams(null, version);
-    
+
     String concatHost = getReqVal(ctx.getContainer(), CONCAT_HOST_PARAM);
     String concatPath = getReqVal(ctx.getContainer(), CONCAT_PATH_PARAM);
     uriBuilder.setAuthority(concatHost);
@@ -117,7 +117,7 @@ public class DefaultConcatUriManager imp
     uriBuilder.addQueryParameter(Param.TYPE.getKey(), ctx.getType().getType());
     List<Uri> resourceUris = ctx.getBatch();
     Map<Uri, String> snippets = 
Maps.newHashMapWithExpectedSize(resourceUris.size());
-    
+
     String splitParam = config.getString(ctx.getContainer(), 
CONCAT_JS_SPLIT_PARAM);
     boolean doSplit = false;
     if (!isAdjacent && splitParam != null && 
!"false".equalsIgnoreCase(splitParam)) {
@@ -133,15 +133,15 @@ public class DefaultConcatUriManager imp
         snippets.put(resource, getJsSnippet(splitParam, resource));
       }
     }
-    
+
     return new ConcatData(uriBuilder.toUri(), snippets);
   }
-  
+
   static String getJsSnippet(String splitParam, Uri resource) {
     return String.format(CONCAT_JS_EVAL_TPL, splitParam,
         StringEscapeUtils.escapeJavaScript(resource.toString()));
   }
-  
+
   private String getReqVal(String container, String key) {
     String val = config.getString(container, key);
     if (val == null) {
@@ -156,7 +156,7 @@ public class DefaultConcatUriManager imp
     if (strictParsing && container == null) {
       return BAD_URI;
     }
-    
+
     if (strictParsing) {
       String concatHost = getReqVal(container, CONCAT_HOST_PARAM);
       String concatPath = getReqVal(container, CONCAT_PATH_PARAM);
@@ -165,7 +165,7 @@ public class DefaultConcatUriManager imp
         return BAD_URI;
       }
     }
-    
+
     // At this point the Uri is at least concat.
     UriStatus status = UriStatus.VALID_UNVERSIONED;
     List<Uri> uris = Lists.newLinkedList();
@@ -178,26 +178,31 @@ public class DefaultConcatUriManager imp
       }
     }
     String splitParam = type == Type.JS ? 
uri.getQueryParameter(Param.JSON.getKey()) : null;
-    
+
     Integer i = Integer.valueOf(START_INDEX);
     String uriStr = null;
     while ((uriStr = uri.getQueryParameter(i.toString())) != null) {
       try {
-        uris.add(Uri.parse(uriStr));
+        Uri concatUri = Uri.parse(uriStr);
+        if (concatUri.getScheme() == null) {
+          // For non schema url, use the request schema:
+          concatUri = new 
UriBuilder(concatUri).setScheme(uri.getScheme()).toUri();
+        }
+        uris.add(concatUri);
       } catch (IllegalArgumentException e) {
         // Malformed inbound Uri. Don't process.
         return BAD_URI;
       }
       i++;
     }
-    
+
     if (versioner != null) {
       String version = uri.getQueryParameter(Param.VERSION.getKey());
       if (version != null) {
         status = versioner.validate(uris, container, version);
       }
     }
-    
+
     return new ConcatUri(status, uris, splitParam, type, uri);
   }
 

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=1027321&r1=1027320&r2=1027321&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
 Tue Oct 26 00:19:12 2010
@@ -199,6 +199,10 @@ public class DefaultProxyUriManager impl
             if (chainedChunks.length == 2 && chainedChunks[1].length() > 0) {
               endToken = chainedChunks[1];
             }
+            if (!endToken.endsWith("/")) {
+              // add suffix '/' that was added by the creator
+              endToken = endToken + "/";
+            }
 
             // Pull URI out of original inUri's full representation.
             String fullProxyUri = uriIn.toString();
@@ -211,10 +215,6 @@ public class DefaultProxyUriManager impl
               }
               queryUri = new UriBuilder().setQuery(chainedQuery).toUri();
               uriStr = fullProxyUri.substring(endIx + endToken.length());
-              while (uriStr.startsWith("/")) {
-                uriStr = uriStr.substring(1);
-              }
-
             }
           }
         }
@@ -246,6 +246,10 @@ public class DefaultProxyUriManager impl
 
     try {
       uri = Uri.parse(uriStr);
+      if (uri.getScheme() == null) {
+        // For non schema url, use the proxy schema:
+        uri = new UriBuilder(uri).setScheme(uriIn.getScheme()).toUri();
+      }
     } catch (Exception e) {
       // NullPointerException or InvalidArgumentException.
       throw new GadgetException(GadgetException.Code.INVALID_PARAMETER,

Modified: 
shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/uri/DefaultConcatUriManagerTest.java
URL: 
http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/uri/DefaultConcatUriManagerTest.java?rev=1027321&r1=1027320&r2=1027321&view=diff
==============================================================================
--- 
shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/uri/DefaultConcatUriManagerTest.java
 (original)
+++ 
shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/uri/DefaultConcatUriManagerTest.java
 Tue Oct 26 00:19:12 2010
@@ -41,50 +41,50 @@ import java.util.List;
 import java.util.NoSuchElementException;
 
 public class DefaultConcatUriManagerTest extends UriManagerTestBase {
-  private static final String CONTAINER = "container";
   private static final Uri RESOURCE_1 = 
Uri.parse("http://example.com/one.dat";);
   private static final Uri RESOURCE_2 = 
Uri.parse("http://gadgets.com/two.dat";);
-  private static final Uri RESOURCE_3 = 
Uri.parse("http://foobar.com/three.dat";);
+  private static final Uri RESOURCE_3_NOSCHEMA = 
Uri.parse("//foobar.com/three.dat");
+  private static final Uri RESOURCE_3_HTTP = 
Uri.parse("http://foobar.com/three.dat";);
   private static final List<Uri> RESOURCES_ONE =
-      ImmutableList.of(RESOURCE_1, RESOURCE_2, RESOURCE_3);
-  private static final List<Uri> RESOURCES_TWO = 
-      ImmutableList.of(RESOURCE_3, RESOURCE_2, RESOURCE_1);
-  
+      ImmutableList.of(RESOURCE_1, RESOURCE_2, RESOURCE_3_HTTP);
+  private static final List<Uri> RESOURCES_TWO =
+      ImmutableList.of(RESOURCE_3_HTTP, RESOURCE_2, RESOURCE_1);
+
   @Test
   public void typeCssBasicParams() throws Exception {
     checkBasicParams(ConcatUriManager.Type.CSS);
   }
-  
+
   @Test
   public void typeCssAltParams() throws Exception {
     checkAltParams(ConcatUriManager.Type.CSS);
   }
-  
+
   @Test
   public void typeCssBatch() throws Exception {
     checkBatchAdjacent(ConcatUriManager.Type.CSS);
   }
-  
+
   @Test
   public void typeCssValidatedGeneratedBatch() throws Exception {
     checkValidatedBatchAdjacent(ConcatUriManager.Type.CSS);
   }
-  
+
   @Test(expected = NoSuchElementException.class)
   public void typeCssBatchInsufficientVersions() throws Exception {
     checkBatchInsufficientVersions(ConcatUriManager.Type.CSS);
   }
-  
+
   @Test(expected = RuntimeException.class)
   public void typeCssMissingHostConfig() throws Exception {
     checkMissingHostConfig(ConcatUriManager.Type.CSS);
   }
-  
+
   @Test(expected = RuntimeException.class)
   public void typeCssMissingPathConfig() throws Exception {
     checkMissingPathConfig(ConcatUriManager.Type.CSS);
   }
-  
+
   @Test(expected = UnsupportedOperationException.class)
   public void typeCssSplitNotSupported() throws Exception {
     // Unique to type=CSS, split isn't supported.
@@ -93,22 +93,22 @@ public class DefaultConcatUriManagerTest
     List<List<Uri>> resourceUris = ImmutableList.<List<Uri>>of(RESOURCES_ONE);
     manager.make(fromList(gadget, resourceUris, ConcatUriManager.Type.CSS), 
false);
   }
-  
+
   @Test
   public void typeJsBasicParams() throws Exception {
     checkBasicParams(ConcatUriManager.Type.JS);
   }
-  
+
   @Test
   public void typeJsAltParams() throws Exception {
     checkAltParams(ConcatUriManager.Type.JS);
   }
-  
+
   @Test
   public void typeJsBatchAdjacent() throws Exception {
     checkBatchAdjacent(ConcatUriManager.Type.JS);
   }
-  
+
   @Test
   public void typeJsBatchSplitBatched() throws Exception {
     // Unique to type=JS, split is supported.
@@ -122,19 +122,20 @@ public class DefaultConcatUriManagerTest
     DefaultConcatUriManager manager = makeManager(host, path, splitParam, 
versioner);
     List<List<Uri>> resourceUris =
         ImmutableList.<List<Uri>>of(RESOURCES_ONE, RESOURCES_TWO, 
RESOURCES_ONE);
-    
+
     List<ConcatData> concatUris =
         manager.make(fromList(gadget, resourceUris, type), false);
     assertEquals(3, concatUris.size());
-    
+
     for (int i = 0; i < 3; ++i) {
       ConcatData uri = concatUris.get(i);
       assertEquals(DefaultConcatUriManager.getJsSnippet(splitParam, 
RESOURCE_1),
           uri.getSnippet(RESOURCE_1));
       assertEquals(DefaultConcatUriManager.getJsSnippet(splitParam, 
RESOURCE_2),
           uri.getSnippet(RESOURCE_2));
-      assertEquals(DefaultConcatUriManager.getJsSnippet(splitParam, 
RESOURCE_3),
-          uri.getSnippet(RESOURCE_3));
+      assertNull(uri.getSnippet(RESOURCE_3_NOSCHEMA));
+      assertEquals(DefaultConcatUriManager.getJsSnippet(splitParam, 
RESOURCE_3_HTTP),
+          uri.getSnippet(RESOURCE_3_HTTP));
       assertNull(uri.getUri().getScheme());
       assertEquals(host, uri.getUri().getAuthority());
       assertEquals(path, uri.getUri().getPath());
@@ -152,12 +153,12 @@ public class DefaultConcatUriManagerTest
       assertEquals(versions[i], 
uri.getUri().getQueryParameter(Param.VERSION.getKey()));
     }
   }
-  
+
   @Test
   public void typeJsValidatedGeneratedBatch() throws Exception {
     checkValidatedBatchAdjacent(ConcatUriManager.Type.JS);
   }
-  
+
   @Test(expected=NoSuchElementException.class)
   public void typeJsBatchInsufficientVersions() throws Exception {
     Gadget gadget = mockGadget(true, true);
@@ -169,7 +170,7 @@ public class DefaultConcatUriManagerTest
     List<List<Uri>> resourceUris = ImmutableList.<List<Uri>>of(RESOURCES_ONE, 
RESOURCES_ONE);
     manager.make(fromList(gadget, resourceUris, ConcatUriManager.Type.JS), 
true);
   }
-  
+
   @Test(expected = RuntimeException.class)
   public void typeJsMissingHostConfig() throws Exception {
     Gadget gadget = mockGadget(false, false);
@@ -177,7 +178,7 @@ public class DefaultConcatUriManagerTest
     List<List<Uri>> resourceUris = 
ImmutableList.<List<Uri>>of(ImmutableList.of(RESOURCE_1));
     manager.make(fromList(gadget, resourceUris, ConcatUriManager.Type.JS), 
false);
   }
-  
+
   @Test(expected = RuntimeException.class)
   public void typeJsMissingPathConfig() throws Exception {
     Gadget gadget = mockGadget(false, false);
@@ -185,7 +186,7 @@ public class DefaultConcatUriManagerTest
     List<List<Uri>> resourceUris = 
ImmutableList.<List<Uri>>of(ImmutableList.of(RESOURCE_1));
     manager.make(fromList(gadget, resourceUris, ConcatUriManager.Type.JS), 
false);
   }
-  
+
   @Test
   public void typeJsMissingSplitTokenConfig() throws Exception {
     Gadget gadget = mockGadget(false, false);
@@ -195,13 +196,13 @@ public class DefaultConcatUriManagerTest
     assertEquals(1, concatUris.size());
     
assertNull(concatUris.get(0).getUri().getQueryParameter(Param.JSON.getKey()));
   }
-  
+
   @Test
   public void jsEvalSnippet() {
     assertEquals("eval(_js['" + 
StringEscapeUtils.escapeJavaScript(RESOURCE_1.toString()) + "']);",
         DefaultConcatUriManager.getJsSnippet("_js", RESOURCE_1));
   }
-  
+
   @Test
   public void validateNoContainerStrict() {
     DefaultConcatUriManager manager = makeManager("host.com", "/path", null, 
null);
@@ -210,7 +211,7 @@ public class DefaultConcatUriManagerTest
         manager.process(Uri.parse("http://host.com/path?q=f";));
     assertEquals(UriStatus.BAD_URI, validated.getStatus());
   }
-  
+
   @Test
   public void validateNoContainer() {
     DefaultConcatUriManager manager = makeManager("host.com", "/path", null, 
null);
@@ -218,7 +219,7 @@ public class DefaultConcatUriManagerTest
         manager.process(Uri.parse("http://host.com/path?q=f";));
     assertEquals(UriStatus.BAD_URI, validated.getStatus());
   }
-  
+
   @Test
   public void validateHostMismatchStrict() {
     DefaultConcatUriManager manager = makeManager("host.com", "/path", null, 
null);
@@ -228,7 +229,7 @@ public class DefaultConcatUriManagerTest
             Param.CONTAINER.getKey() + '=' + CONTAINER + "&type=css"));
     assertEquals(UriStatus.BAD_URI, validated.getStatus());
   }
-  
+
   @Test
   public void validatePathMismatchStrict() {
     DefaultConcatUriManager manager = makeManager("host.com", "/path", null, 
null);
@@ -238,7 +239,7 @@ public class DefaultConcatUriManagerTest
             Param.CONTAINER.getKey() + '=' + CONTAINER + "&type=css"));
     assertEquals(UriStatus.BAD_URI, validated.getStatus());
   }
-  
+
   @Test
   public void validateInvalidChildUri() {
     DefaultConcatUriManager manager = makeManager("host.com", "/path", null, 
null);
@@ -248,7 +249,7 @@ public class DefaultConcatUriManagerTest
             "&1=!!!"));
     assertEquals(UriStatus.BAD_URI, validated.getStatus());
   }
-  
+
   @Test
   public void validateNullTypeUri() {
     DefaultConcatUriManager manager = makeManager("host.com", "/path", null, 
null);
@@ -258,7 +259,7 @@ public class DefaultConcatUriManagerTest
             "&1=http://legit.com/1.dat";));
     assertEquals(UriStatus.BAD_URI, validated.getStatus());
   }
-  
+
   @Test
   public void validateBadTypeUri() {
     DefaultConcatUriManager manager = makeManager("host.com", "/path", null, 
null);
@@ -268,7 +269,7 @@ public class DefaultConcatUriManagerTest
             "&1=http://legit.com/1.dat&"; + Param.TYPE.getKey() + "=NOTATYPE"));
     assertEquals(UriStatus.BAD_URI, validated.getStatus());
   }
-  
+
   @Test
   public void validateOldStyleTypeUri() {
     DefaultConcatUriManager manager = makeManager("host.com", "/path", null, 
null);
@@ -279,37 +280,37 @@ public class DefaultConcatUriManagerTest
     assertEquals(UriStatus.VALID_UNVERSIONED, validated.getStatus());
     assertEquals(ConcatUriManager.Type.CSS, validated.getType());
   }
-  
+
   @Test
   public void validateCssUriUnversioned() {
     checkUnversionedUri(ConcatUriManager.Type.CSS, false);
   }
-  
+
   @Test
   public void validateCssUriVersioned() {
     checkValidateUri(UriStatus.VALID_VERSIONED, ConcatUriManager.Type.CSS, 
false);
   }
-  
+
   @Test
   public void validateCssUriBadVersion() {
     checkValidateUri(UriStatus.INVALID_VERSION, ConcatUriManager.Type.CSS, 
false);
   }
-  
+
   @Test
   public void validateJsUriUnversioned() {
     checkUnversionedUri(ConcatUriManager.Type.JS, true);
   }
-  
+
   @Test
   public void validateJsUriVersioned() {
     checkValidateUri(UriStatus.VALID_VERSIONED, ConcatUriManager.Type.JS, 
true);
   }
-  
+
   @Test
   public void validateJsUriBadVersion() {
     checkValidateUri(UriStatus.INVALID_VERSION, ConcatUriManager.Type.JS, 
true);
   }
-  
+
   private void checkUnversionedUri(ConcatUriManager.Type type, boolean 
hasSplit) {
     // Returns VALID_VERSIONED, but no version is present.
     ConcatUriManager.Versioner versioner = 
makeVersioner(UriStatus.VALID_VERSIONED);
@@ -331,7 +332,7 @@ public class DefaultConcatUriManagerTest
     assertEquals(123, validated.getRefresh().intValue());
     assertEquals(hasSplit ? "split" : null, validated.getSplitParam());
   }
-  
+
   private void checkValidateUri(UriStatus status, ConcatUriManager.Type type, 
boolean hasSplit) {
     ConcatUriManager.Versioner versioner = makeVersioner(status);
     DefaultConcatUriManager manager = makeManager("host.com", "/path", null, 
versioner);
@@ -352,22 +353,22 @@ public class DefaultConcatUriManagerTest
     assertEquals(123, validated.getRefresh().intValue());
     assertEquals(hasSplit ? "split" : null, validated.getSplitParam());
   }
-  
+
   private void checkBasicParams(ConcatUriManager.Type type) throws Exception {
     Gadget gadget = mockGadget(false, false);
     String host = "host.com";
     String path = "/concat/path";
     DefaultConcatUriManager manager = makeManager(host, path, "token", null);
     List<List<Uri>> resourceUris = ImmutableList.<List<Uri>>of(RESOURCES_ONE);
-    
+
     List<ConcatData> concatUris =
       manager.make(fromList(gadget, resourceUris, type), true);
     assertEquals(1, concatUris.size());
-    
+
     ConcatData uri = concatUris.get(0);
     assertNull(uri.getSnippet(RESOURCE_1));
     assertNull(uri.getSnippet(RESOURCE_2));
-    assertNull(uri.getSnippet(RESOURCE_3));
+    assertNull(uri.getSnippet(RESOURCE_3_NOSCHEMA));
     assertNull(uri.getUri().getScheme());
     assertEquals(host, uri.getUri().getAuthority());
     assertEquals(path, uri.getUri().getPath());
@@ -381,7 +382,7 @@ public class DefaultConcatUriManagerTest
     assertEquals(RESOURCES_ONE.get(1).toString(), 
uri.getUri().getQueryParameter("2"));
     assertEquals(RESOURCES_ONE.get(2).toString(), 
uri.getUri().getQueryParameter("3"));
   }
-  
+
   private void checkAltParams(ConcatUriManager.Type type) throws Exception {
     Gadget gadget = mockGadget(true, true);
     String host = "bar.com";
@@ -390,15 +391,15 @@ public class DefaultConcatUriManagerTest
     ConcatUriManager.Versioner versioner = makeVersioner(null, version);
     DefaultConcatUriManager manager = makeManager(host, path, "token", 
versioner);
     List<List<Uri>> resourceUris = ImmutableList.<List<Uri>>of(RESOURCES_ONE);
-    
+
     List<ConcatData> concatUris =
       manager.make(fromList(gadget, resourceUris, type), true);
     assertEquals(1, concatUris.size());
-    
+
     ConcatData uri = concatUris.get(0);
     assertNull(uri.getSnippet(RESOURCE_1));
     assertNull(uri.getSnippet(RESOURCE_2));
-    assertNull(uri.getSnippet(RESOURCE_3));
+    assertNull(uri.getSnippet(RESOURCE_3_NOSCHEMA));
     assertNull(uri.getUri().getScheme());
     assertEquals(host, uri.getUri().getAuthority());
     assertEquals(path, uri.getUri().getPath());
@@ -424,16 +425,16 @@ public class DefaultConcatUriManagerTest
     DefaultConcatUriManager manager = makeManager(host, path, "token", 
versioner);
     List<List<Uri>> resourceUris =
         ImmutableList.<List<Uri>>of(RESOURCES_ONE, RESOURCES_TWO, 
RESOURCES_ONE);
-    
+
     List<ConcatData> concatUris =
       manager.make(fromList(gadget, resourceUris, type), true);
     assertEquals(3, concatUris.size());
-    
+
     for (int i = 0; i < 3; ++i) {
       ConcatData uri = concatUris.get(i);
       assertNull(uri.getSnippet(RESOURCE_1));
       assertNull(uri.getSnippet(RESOURCE_2));
-      assertNull(uri.getSnippet(RESOURCE_3));
+      assertNull(uri.getSnippet(RESOURCE_3_NOSCHEMA));
       assertNull(uri.getUri().getScheme());
       assertEquals(host, uri.getUri().getAuthority());
       assertEquals(path, uri.getUri().getPath());
@@ -450,7 +451,7 @@ public class DefaultConcatUriManagerTest
       assertEquals(versions[i], 
uri.getUri().getQueryParameter(Param.VERSION.getKey()));
     }
   }
-  
+
   private void checkValidatedBatchAdjacent(ConcatUriManager.Type type) throws 
Exception {
     // This is essentially the "integration" test ensuring that a
     // DefaultConcatUriManager's created Uris can be validated by it in turn.
@@ -462,11 +463,11 @@ public class DefaultConcatUriManagerTest
     DefaultConcatUriManager manager = makeManager(host, path, "token", 
versioner);
     List<List<Uri>> resourceUris =
         ImmutableList.<List<Uri>>of(RESOURCES_ONE, RESOURCES_TWO, 
RESOURCES_ONE);
-    
+
     List<ConcatData> concatUris =
         manager.make(fromList(gadget, resourceUris, type), true);
     assertEquals(3, concatUris.size());
-    
+
     for (int i = 0; i < 3; ++i) {
       ConcatUriManager.ConcatUri validated =
           manager.process(concatUris.get(i).getUri());
@@ -476,7 +477,7 @@ public class DefaultConcatUriManagerTest
       assertEquals(type, validated.getType());
     }
   }
-  
+
   private void checkBatchInsufficientVersions(ConcatUriManager.Type type) 
throws Exception {
     Gadget gadget = mockGadget(true, true);
     String host = "bar.com";
@@ -487,21 +488,21 @@ public class DefaultConcatUriManagerTest
     List<List<Uri>> resourceUris = ImmutableList.<List<Uri>>of(RESOURCES_ONE, 
RESOURCES_ONE);
     manager.make(fromList(gadget, resourceUris, type), true);
   }
-  
+
   private void checkMissingHostConfig(ConcatUriManager.Type type) throws 
Exception {
     Gadget gadget = mockGadget(false, false);
     DefaultConcatUriManager manager = makeManager(null, "/foo", "token", null);
     List<List<Uri>> resourceUris = ImmutableList.<List<Uri>>of(RESOURCES_ONE);
     manager.make(fromList(gadget, resourceUris, type), true);
   }
-  
+
   private void checkMissingPathConfig(ConcatUriManager.Type type) throws 
Exception {
     Gadget gadget = mockGadget(false, false);
     DefaultConcatUriManager manager = makeManager("host.com", null, "token", 
null);
     List<List<Uri>> resourceUris = ImmutableList.<List<Uri>>of(RESOURCES_ONE);
     manager.make(fromList(gadget, resourceUris, type), false);
   }
-  
+
   private DefaultConcatUriManager makeManager(String host, String path, String 
splitToken,
       ConcatUriManager.Versioner versioner) {
     ContainerConfig config = createMock(ContainerConfig.class);
@@ -514,7 +515,7 @@ public class DefaultConcatUriManagerTest
     replay(config);
     return new DefaultConcatUriManager(config, versioner);
   }
-  
+
   @SuppressWarnings("unchecked")
   private ConcatUriManager.Versioner makeVersioner(UriStatus status, String... 
versions) {
     ConcatUriManager.Versioner versioner = 
createMock(ConcatUriManager.Versioner.class);

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=1027321&r1=1027320&r2=1027321&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
 Tue Oct 26 00:19:12 2010
@@ -40,6 +40,7 @@ public class DefaultProxyUriManagerTest 
   private static final Uri RESOURCE_1 = 
Uri.parse("http://example.com/one.dat?param=value";);
   private static final Uri RESOURCE_2 = 
Uri.parse("http://gadgets.com/two.dat";);
   private static final Uri RESOURCE_3 = 
Uri.parse("http://foobar.com/three.dat";);
+  private static final Uri RESOURCE_4 = Uri.parse("//foobar.com/three.dat");
 
   @Test
   public void basicProxyQueryStyle() throws Exception {
@@ -61,6 +62,21 @@ public class DefaultProxyUriManagerTest 
   }
 
   @Test
+  public void testSchemaLessProxy() throws Exception {
+    boolean debug = false;
+    boolean noCache = false;
+    String version = "ver";
+    String host = "host.com";
+    String path = "/proxy/path";
+    List<Uri> resources = ImmutableList.<Uri>of(RESOURCE_4);
+    List<Uri> uris = makeAndGet(host, path, debug, noCache, resources, 
version);
+    assertEquals(1, uris.size());
+    verifyQueryUri(new UriBuilder(RESOURCE_4).setScheme("http").toUri(),
+        new UriBuilder(uris.get(0)).setScheme("http").toUri(),
+        debug, noCache, version, host, path);
+  }
+
+  @Test
   public void refreshVerifyBasic() throws Exception {
     verifyRefresh(false, false, "version", 20);
   }


Reply via email to