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