Skip to content

Commit 69ee68e

Browse files
committed
---
yaml --- r: 4547 b: refs/heads/logging-alpha c: a62c69d h: refs/heads/master i: 4545: 54fff2a 4543: 6f46d92
1 parent e5a79f0 commit 69ee68e

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
@@ -12,7 +12,7 @@ refs/heads/compute-alpha: 969cba2627f1d53d352cc4a5ffe0879dacf65e6c
1212
refs/heads/dns-alpha: 2f90e7e338349287ace33375896907af0f032ca1
1313
refs/heads/dns-alpha-batch: 17442b07867021b85d0452f5f3eda29a3413288f
1414
refs/heads/gcs-nio: 283aeaf15efdcf3621eb6859f05e55ad7764375d
15-
refs/heads/logging-alpha: 5fea7ce3b1796f8dea70286a6fbfd2ed7ed0eed9
15+
refs/heads/logging-alpha: a62c69dec52fcb1248c173fa3f2e104af9473048
1616
refs/tags/v0.1.0: a615317f7424ed58621b1f65d5c4d8cbbe8a6ed8
1717
refs/tags/v0.1.1: 7a7f6985fe465e9dd6a075af55493f42b4933be0
1818
refs/tags/v0.1.2: 3eb3fe866ba22487686048f45d927b8c8638ea3f

branches/logging-alpha/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
}

branches/logging-alpha/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)