Skip to content

Commit 352147d

Browse files
committed
---
yaml --- r: 1719 b: refs/heads/master c: a62c69d h: refs/heads/master i: 1717: 8259e5d 1715: cbd89cd 1711: 152369a
1 parent 261f5dc commit 352147d

3 files changed

Lines changed: 36 additions & 6 deletions

File tree

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
---
2-
refs/heads/master: 5fea7ce3b1796f8dea70286a6fbfd2ed7ed0eed9
2+
refs/heads/master: a62c69dec52fcb1248c173fa3f2e104af9473048
33
refs/heads/travis: e21ee7b88a5edc3f3d8c71f90c3fc32abf7e8dd6
44
refs/heads/gh-pages: d1b373c30c176edc08692348167bec3a244bb823
55
refs/heads/bigquery: 762fa5830e6c398c0396177e3e7fd243bd62cfc3

trunk/gcloud-java-resourcemanager/src/main/java/com/google/gcloud/resourcemanager/testing/LocalResourceManagerHelper.java

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@ public class LocalResourceManagerHelper {
6060
ImmutableSet.of("gzip", "x-gzip");
6161
private static final Pattern LIST_FIELDS_PATTERN =
6262
Pattern.compile("(.*?)projects\\((.*?)\\)(.*?)");
63+
private static final String[] NO_FIELDS = {};
6364

6465
static {
6566
try {
@@ -245,6 +246,9 @@ private static Map<String, Object> parseListOptions(String query) throws IOExcep
245246
if (matcher.matches()) {
246247
options.put("projectFields", matcher.group(2).split(","));
247248
options.put("listFields", (matcher.group(1) + matcher.group(3)).split(","));
249+
} else {
250+
options.put("projectFields", NO_FIELDS);
251+
options.put("listFields", argEntry[1].split(","));
248252
}
249253
break;
250254
case "filter":
@@ -393,14 +397,23 @@ Response list(Map<String, Object> options) {
393397
}
394398
}
395399
}
396-
StringBuilder responseBody = new StringBuilder();
397-
responseBody.append("{\"projects\": [");
398-
Joiner.on(",").appendTo(responseBody, projectsSerialized);
399-
responseBody.append(']');
400400
String[] listFields = (String[]) options.get("listFields");
401+
StringBuilder responseBody = new StringBuilder();
402+
responseBody.append('{');
403+
boolean commaNeeded = false;
404+
// If fields parameter is set but no project field is selected we must return no projects.
405+
if (!(projectFields != null && projectFields.length == 0)) {
406+
responseBody.append("\"projects\": [");
407+
Joiner.on(",").appendTo(responseBody, projectsSerialized);
408+
responseBody.append(']');
409+
commaNeeded = true;
410+
}
401411
if (nextPageToken != null && (listFields == null
402412
|| ImmutableSet.copyOf(listFields).contains("nextPageToken"))) {
403-
responseBody.append(", \"nextPageToken\": \"");
413+
if (commaNeeded) {
414+
responseBody.append(',');
415+
}
416+
responseBody.append("\"nextPageToken\": \"");
404417
responseBody.append(nextPageToken);
405418
responseBody.append('"');
406419
}

trunk/gcloud-java-resourcemanager/src/test/java/com/google/gcloud/resourcemanager/LocalResourceManagerHelperTest.java

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -408,6 +408,23 @@ public void testListNoPageTokenFieldOptions() {
408408
assertFalse(iterator.hasNext());
409409
}
410410

411+
@Test
412+
public void testListPageTokenNoFieldsOptions() {
413+
Map<ResourceManagerRpc.Option, Object> rpcOptions = new HashMap<>();
414+
rpcOptions.put(ResourceManagerRpc.Option.PAGE_SIZE, 1);
415+
rpcOptions.put(ResourceManagerRpc.Option.FIELDS, "nextPageToken");
416+
rpc.create(PARTIAL_PROJECT);
417+
rpc.create(COMPLETE_PROJECT);
418+
Tuple<String, Iterable<com.google.api.services.cloudresourcemanager.model.Project>> projects =
419+
rpc.list(rpcOptions);
420+
assertNotNull(projects.x());
421+
assertNull(projects.y());
422+
rpcOptions.put(ResourceManagerRpc.Option.PAGE_TOKEN, projects.x());
423+
projects = rpc.list(rpcOptions);
424+
assertNull(projects.x());
425+
assertNull(projects.y());
426+
}
427+
411428
@Test
412429
public void testListFilterOptions() {
413430
Map<ResourceManagerRpc.Option, Object> rpcFilterOptions = new HashMap<>();

0 commit comments

Comments
 (0)