JCLOUDS-457: Multiple fixes
This commit addresses some problems found in the code:
- Now VaultMetadata returns a copy of the creation date instead
of their own instance.
- Added a checkNotNull for PaginatedVaultCollection iterable.
- Added a test for listVaults with an empty list of vaults.
diff --git a/glacier/src/main/java/org/jclouds/glacier/domain/PaginatedVaultCollection.java b/glacier/src/main/java/org/jclouds/glacier/domain/PaginatedVaultCollection.java
index f39e02f..8f0eae4 100644
--- a/glacier/src/main/java/org/jclouds/glacier/domain/PaginatedVaultCollection.java
+++ b/glacier/src/main/java/org/jclouds/glacier/domain/PaginatedVaultCollection.java
@@ -16,6 +16,8 @@
*/
package org.jclouds.glacier.domain;
+import static com.google.common.base.Preconditions.checkNotNull;
+
import java.beans.ConstructorProperties;
import java.util.Iterator;
@@ -37,7 +39,7 @@
@ConstructorProperties({ "VaultList", "Marker" })
public PaginatedVaultCollection(Iterable<VaultMetadata> vaults, String marker) {
- this.vaults = vaults;
+ this.vaults = checkNotNull(vaults, "vaults");
this.marker = marker;
}
diff --git a/glacier/src/main/java/org/jclouds/glacier/domain/VaultMetadata.java b/glacier/src/main/java/org/jclouds/glacier/domain/VaultMetadata.java
index 6a6c5fd..0acb20c 100644
--- a/glacier/src/main/java/org/jclouds/glacier/domain/VaultMetadata.java
+++ b/glacier/src/main/java/org/jclouds/glacier/domain/VaultMetadata.java
@@ -51,7 +51,7 @@
long numberOfArchives, long sizeInBytes) {
this.vaultName = checkNotNull(vaultName, "vaultName");
this.vaultARN = checkNotNull(vaultARN, "vaultARN");
- this.creationDate = checkNotNull(creationDate, "creationDate");
+ this.creationDate = (Date) checkNotNull(creationDate, "creationDate").clone();
this.lastInventoryDate = lastInventoryDate;
this.numberOfArchives = numberOfArchives;
this.sizeInBytes = sizeInBytes;
@@ -66,7 +66,7 @@
}
public Date getCreationDate() {
- return creationDate;
+ return (Date) creationDate.clone();
}
public Date getLastInventoryDate() {
diff --git a/glacier/src/test/java/org/jclouds/glacier/GlacierClientMockTest.java b/glacier/src/test/java/org/jclouds/glacier/GlacierClientMockTest.java
index acc6a39..6efb566 100644
--- a/glacier/src/test/java/org/jclouds/glacier/GlacierClientMockTest.java
+++ b/glacier/src/test/java/org/jclouds/glacier/GlacierClientMockTest.java
@@ -186,6 +186,17 @@
}
@Test
+ public void testListVaultsWithEmptyList() throws InterruptedException, IOException {
+ MockResponse mr = buildBaseResponse(200);
+ mr.addHeader(HttpHeaders.CONTENT_TYPE, MediaType.JSON_UTF_8);
+ mr.setBody(getResponseBody("/json/listVaultsWithEmptyListResponseBody.json"));
+ mr.addHeader(HttpHeaders.CONTENT_LENGTH, mr.getBody().length);
+ server.enqueue(mr);
+
+ assertTrue(client.listVaults().isEmpty());
+ }
+
+ @Test
public void testListVaultsWithQueryParams() throws InterruptedException, IOException {
MockResponse mr = buildBaseResponse(200);
mr.addHeader(HttpHeaders.CONTENT_TYPE, MediaType.JSON_UTF_8);
diff --git a/glacier/src/test/resources/json/listVaultsWithEmptyListResponseBody.json b/glacier/src/test/resources/json/listVaultsWithEmptyListResponseBody.json
new file mode 100644
index 0000000..0eb76a2
--- /dev/null
+++ b/glacier/src/test/resources/json/listVaultsWithEmptyListResponseBody.json
@@ -0,0 +1,4 @@
+{
+ "Marker": null,
+ "VaultList": []
+}