Revised CallPath to handle null or empty paths correctly.

Updated ResourceQuery callspec to accept a list in the response body.
This commit is contained in:
Inderjeet Singh 2010-11-11 08:17:40 +00:00
parent eac1505670
commit f1e278c4c0
3 changed files with 34 additions and 7 deletions

View File

@ -63,7 +63,10 @@ public class ResourceQueryClient<I extends ID, R extends RestResource<I, R>, Q>
}
private static <T> WebServiceCallSpec generateCallSpec(CallPath callPath) {
return new WebServiceCallSpec.Builder(callPath).supportsHttpMethod(HttpMethod.GET).build();
return new WebServiceCallSpec.Builder(callPath)
.supportsHttpMethod(HttpMethod.GET)
.addResponseBodyParam(TypedKeysQuery.RESOURCE_LIST)
.build();
}
@SuppressWarnings({"unchecked", "rawtypes"})

View File

@ -25,14 +25,15 @@ import com.google.gson.webservice.definition.internal.utils.Pair;
*/
public final class CallPath {
private static final double IGNORE_VERSION = -1D;
/** Visible for testing only */
static final double IGNORE_VERSION = -1D;
private final String path;
private final double version;
private final long resourceId;
public CallPath(String path) {
if (path == null) {
this.path = null;
if (path == null || path.trim().equals("")) {
this.path = path;
version = IGNORE_VERSION;
resourceId = ID.INVALID_ID;
} else {

View File

@ -15,6 +15,8 @@
*/
package com.google.gson.webservice.definition;
import com.google.gson.rest.definition.ID;
import junit.framework.TestCase;
/**
@ -28,14 +30,14 @@ public class CallPathTest extends TestCase {
CallPath path = new CallPath("/1.0/rest/service1");
assertEquals("/rest/service1", path.get());
assertEquals(1D, path.getVersion());
assertEquals(-1L, path.getResourceId());
assertEquals(ID.INVALID_ID, path.getResourceId());
}
public void testVersionNotPresent() {
CallPath path = new CallPath("/rest/service1");
assertEquals("/rest/service1", path.get());
assertEquals(-1D, path.getVersion());
assertEquals(-1L, path.getResourceId());
assertEquals(CallPath.IGNORE_VERSION, path.getVersion());
assertEquals(ID.INVALID_ID, path.getResourceId());
}
public void testResourceIdPresent() {
@ -56,4 +58,25 @@ public class CallPathTest extends TestCase {
assertEquals("/rest/service53", path.get());
assertEquals(323222L, path.getResourceId());
}
public void testNullPath() {
CallPath path = new CallPath(null);
assertEquals(CallPath.IGNORE_VERSION, path.getVersion());
assertEquals(ID.INVALID_ID, path.getResourceId());
assertNull(path.get());
}
public void testEmptyPath() {
CallPath path = new CallPath("");
assertEquals(CallPath.IGNORE_VERSION, path.getVersion());
assertEquals(ID.INVALID_ID, path.getResourceId());
assertEquals("", path.get());
}
public void testWhiteSpacePath() {
CallPath path = new CallPath("\r\n");
assertEquals(CallPath.IGNORE_VERSION, path.getVersion());
assertEquals(ID.INVALID_ID, path.getResourceId());
assertEquals("\r\n", path.get());
}
}