Repository: jclouds-labs-aws Updated Branches: refs/heads/master 6ed371b52 -> 4c52e96b4
Added some fixes to the live test and a few things on the rest of the code for clarity. Project: http://git-wip-us.apache.org/repos/asf/jclouds-labs-aws/repo Commit: http://git-wip-us.apache.org/repos/asf/jclouds-labs-aws/commit/a144c2f2 Tree: http://git-wip-us.apache.org/repos/asf/jclouds-labs-aws/tree/a144c2f2 Diff: http://git-wip-us.apache.org/repos/asf/jclouds-labs-aws/diff/a144c2f2 Branch: refs/heads/master Commit: a144c2f2b07745daa62a68dcb858a51168349a17 Parents: 6ed371b Author: Roman C. Coedo <[email protected]> Authored: Fri May 30 22:04:51 2014 +0200 Committer: Andrew Gaul <[email protected]> Committed: Fri May 30 16:33:11 2014 -0700 ---------------------------------------------------------------------- .../org/jclouds/glacier/GlacierAsyncClient.java | 2 +- .../java/org/jclouds/glacier/GlacierClient.java | 12 ++--- .../glacier/GlacierResponseException.java | 5 +- .../jclouds/glacier/domain/VaultMetadata.java | 14 +++--- .../ParseGlacierErrorFromJsonContent.java | 5 +- .../glacier/options/PaginationOptions.java | 5 +- .../validators/VaultNameValidator.java | 7 ++- .../jclouds/glacier/GlacierClientLiveTest.java | 50 ++++++++------------ .../jclouds/glacier/GlacierClientMockTest.java | 2 +- .../validators/VaultNameValidatorTest.java | 8 ++-- 10 files changed, 52 insertions(+), 58 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/jclouds-labs-aws/blob/a144c2f2/glacier/src/main/java/org/jclouds/glacier/GlacierAsyncClient.java ---------------------------------------------------------------------- diff --git a/glacier/src/main/java/org/jclouds/glacier/GlacierAsyncClient.java b/glacier/src/main/java/org/jclouds/glacier/GlacierAsyncClient.java index 9554343..7e6a3aa 100644 --- a/glacier/src/main/java/org/jclouds/glacier/GlacierAsyncClient.java +++ b/glacier/src/main/java/org/jclouds/glacier/GlacierAsyncClient.java @@ -75,7 +75,7 @@ public interface GlacierAsyncClient extends Closeable { @DELETE @Path("/-/vaults/{vault}") @Fallback(FalseIfVaultNotEmpty.class) - ListenableFuture<Boolean> deleteVaultIfEmpty(@PathParam("vault") @ParamValidators(VaultNameValidator.class) String vaultName); + ListenableFuture<Boolean> deleteVault(@PathParam("vault") @ParamValidators(VaultNameValidator.class) String vaultName); /** * @see GlacierClient#describeVault http://git-wip-us.apache.org/repos/asf/jclouds-labs-aws/blob/a144c2f2/glacier/src/main/java/org/jclouds/glacier/GlacierClient.java ---------------------------------------------------------------------- diff --git a/glacier/src/main/java/org/jclouds/glacier/GlacierClient.java b/glacier/src/main/java/org/jclouds/glacier/GlacierClient.java index 8dc16d1..f078a16 100644 --- a/glacier/src/main/java/org/jclouds/glacier/GlacierClient.java +++ b/glacier/src/main/java/org/jclouds/glacier/GlacierClient.java @@ -34,7 +34,7 @@ import org.jclouds.glacier.options.PaginationOptions; public interface GlacierClient extends Closeable { /** - * A PUT request operation with a vault name to create a new vault to store archives. + * Creates a new vault to store archives. * * @param vaultName * A name for the Vault being created. @@ -44,17 +44,17 @@ public interface GlacierClient extends Closeable { URI createVault(String vaultName); /** - * A DELETE request operation with a vault name to delete an existing vault. The vault must be empty. + * A DELETE request operation with a vault name to delete an existing vault. * * @param vaultName * Name of the Vault being deleted. * @return False if the vault was not empty and therefore not deleted, true otherwise. * @see <a href="http://docs.aws.amazon.com/amazonglacier/latest/dev/api-vault-delete.html" /> */ - boolean deleteVaultIfEmpty(String vaultName); + boolean deleteVault(String vaultName); /** - * A GET request operation with a vault name to fetch the vault metadata. + * Retrieves the metadata for a vault. * * @param vaultName * Name of the Vault being described. @@ -64,7 +64,7 @@ public interface GlacierClient extends Closeable { VaultMetadata describeVault(String vaultName); /** - * A GET request operation to retrieve a vault listing. + * Lists vaults according to specified options. * * @param options * Options used for pagination. @@ -74,7 +74,7 @@ public interface GlacierClient extends Closeable { PaginatedVaultCollection listVaults(PaginationOptions options); /** - * A GET request operation to retrieve a vault listing. + * List vaults. * * @see GlacierClient#listVaults(PaginationOptions) */ http://git-wip-us.apache.org/repos/asf/jclouds-labs-aws/blob/a144c2f2/glacier/src/main/java/org/jclouds/glacier/GlacierResponseException.java ---------------------------------------------------------------------- diff --git a/glacier/src/main/java/org/jclouds/glacier/GlacierResponseException.java b/glacier/src/main/java/org/jclouds/glacier/GlacierResponseException.java index 4db19f3..978d973 100644 --- a/glacier/src/main/java/org/jclouds/glacier/GlacierResponseException.java +++ b/glacier/src/main/java/org/jclouds/glacier/GlacierResponseException.java @@ -40,9 +40,8 @@ public class GlacierResponseException extends HttpResponseException { } public GlacierResponseException(HttpCommand command, HttpResponse response, GlacierError error, Throwable cause) { - super("request " + command.getCurrentRequest().getRequestLine() + " failed with code " + response.getStatusCode() - + ", error: " + error.toString(), command, response, cause); - this.error = checkNotNull(error, "error"); + this("request " + command.getCurrentRequest().getRequestLine() + " failed with code " + response.getStatusCode() + + ", error: " + error.toString(), command, response, error, cause); } public GlacierResponseException(HttpCommand command, HttpResponse response, GlacierError error) { http://git-wip-us.apache.org/repos/asf/jclouds-labs-aws/blob/a144c2f2/glacier/src/main/java/org/jclouds/glacier/domain/VaultMetadata.java ---------------------------------------------------------------------- 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 d753cad..4e77d9e 100644 --- a/glacier/src/main/java/org/jclouds/glacier/domain/VaultMetadata.java +++ b/glacier/src/main/java/org/jclouds/glacier/domain/VaultMetadata.java @@ -43,20 +43,20 @@ public class VaultMetadata implements Comparable<VaultMetadata> { @SerializedName("LastInventoryDate") private final Date lastInventoryDate; @SerializedName("NumberOfArchives") - private final Long numberOfArchives; + private final long numberOfArchives; @SerializedName("SizeInBytes") - private final Long sizeInBytes; + private final long sizeInBytes; @ConstructorProperties({ "VaultName", "VaultARN", "CreationDate", "LastInventoryDate", "NumberOfArchives", "SizeInBytes" }) public VaultMetadata(String vaultName, String vaultARN, Date creationDate, @Nullable Date lastInventoryDate, long numberOfArchives, long sizeInBytes) { - this.vaultName = checkNotNull(vaultName); - this.vaultARN = checkNotNull(vaultARN); - this.creationDate = checkNotNull(creationDate); + this.vaultName = checkNotNull(vaultName, "vaultName"); + this.vaultARN = checkNotNull(vaultARN, "vaultARN"); + this.creationDate = checkNotNull(creationDate, "creationDate"); this.lastInventoryDate = lastInventoryDate; - this.numberOfArchives = checkNotNull(numberOfArchives); - this.sizeInBytes = checkNotNull(sizeInBytes); + this.numberOfArchives = numberOfArchives; + this.sizeInBytes = sizeInBytes; } public String getVaultName() { http://git-wip-us.apache.org/repos/asf/jclouds-labs-aws/blob/a144c2f2/glacier/src/main/java/org/jclouds/glacier/handlers/ParseGlacierErrorFromJsonContent.java ---------------------------------------------------------------------- diff --git a/glacier/src/main/java/org/jclouds/glacier/handlers/ParseGlacierErrorFromJsonContent.java b/glacier/src/main/java/org/jclouds/glacier/handlers/ParseGlacierErrorFromJsonContent.java index d68995e..0a9b84b 100644 --- a/glacier/src/main/java/org/jclouds/glacier/handlers/ParseGlacierErrorFromJsonContent.java +++ b/glacier/src/main/java/org/jclouds/glacier/handlers/ParseGlacierErrorFromJsonContent.java @@ -59,8 +59,9 @@ public class ParseGlacierErrorFromJsonContent extends ParseJson<GlacierError> im @Override public void handleError(HttpCommand command, HttpResponse response) { GlacierError error = this.apply(response); - Exception exception = error.isValid() ? refineException(error, new GlacierResponseException(command, response, - error)) : new HttpResponseException(command, response); + Exception exception = error.isValid() + ? refineException(error, new GlacierResponseException(command, response, error)) + : new HttpResponseException(command, response); command.setException(exception); } http://git-wip-us.apache.org/repos/asf/jclouds-labs-aws/blob/a144c2f2/glacier/src/main/java/org/jclouds/glacier/options/PaginationOptions.java ---------------------------------------------------------------------- diff --git a/glacier/src/main/java/org/jclouds/glacier/options/PaginationOptions.java b/glacier/src/main/java/org/jclouds/glacier/options/PaginationOptions.java index 3536786..1f95adf 100644 --- a/glacier/src/main/java/org/jclouds/glacier/options/PaginationOptions.java +++ b/glacier/src/main/java/org/jclouds/glacier/options/PaginationOptions.java @@ -24,6 +24,7 @@ import org.jclouds.http.options.BaseHttpRequestOptions; /** * Pagination options used to specify the collection responses. * + * @see <a href="http://docs.aws.amazon.com/amazonglacier/latest/dev/api-vaults-get.html" /> * @author Roman Coedo */ public class PaginationOptions extends BaseHttpRequestOptions { @@ -37,8 +38,8 @@ public class PaginationOptions extends BaseHttpRequestOptions { } public PaginationOptions limit(int limit) { - checkArgument(limit >= MIN_LIMIT, "limit must be >= " + MIN_LIMIT); - checkArgument(limit <= MAX_LIMIT, "limit must be <= " + MAX_LIMIT); + checkArgument(limit >= MIN_LIMIT, "limit must be >= " + MIN_LIMIT + " but was " + limit); + checkArgument(limit <= MAX_LIMIT, "limit must be <= " + MAX_LIMIT + " but was " + limit); queryParameters.put("limit", Integer.toString(limit)); return this; } http://git-wip-us.apache.org/repos/asf/jclouds-labs-aws/blob/a144c2f2/glacier/src/main/java/org/jclouds/glacier/predicates/validators/VaultNameValidator.java ---------------------------------------------------------------------- diff --git a/glacier/src/main/java/org/jclouds/glacier/predicates/validators/VaultNameValidator.java b/glacier/src/main/java/org/jclouds/glacier/predicates/validators/VaultNameValidator.java index b6005e0..9e03533 100644 --- a/glacier/src/main/java/org/jclouds/glacier/predicates/validators/VaultNameValidator.java +++ b/glacier/src/main/java/org/jclouds/glacier/predicates/validators/VaultNameValidator.java @@ -16,6 +16,8 @@ */ package org.jclouds.glacier.predicates.validators; +import static com.google.common.base.Strings.isNullOrEmpty; + import org.jclouds.predicates.Validator; import com.google.common.base.CharMatcher; @@ -24,6 +26,7 @@ import com.google.inject.Singleton; /** * Validates Vault names according to Amazon Vault conventions. * + * @see <a href="http://docs.aws.amazon.com/amazonglacier/latest/dev/api-vault-put.html" /> * @author Roman Coedo */ @Singleton @@ -34,7 +37,7 @@ public class VaultNameValidator extends Validator<String> { @Override public void validate(String vaultName) { - if (vaultName == null || vaultName.length() < MIN_LENGTH || vaultName.length() > MAX_LENGTH) + if (isNullOrEmpty(vaultName) || vaultName.length() > MAX_LENGTH) throw exception(vaultName, "Can't be null or empty. Length must be " + MIN_LENGTH + " to " + MAX_LENGTH + " symbols."); CharMatcher range = getAcceptableRange(); @@ -47,7 +50,7 @@ public class VaultNameValidator extends Validator<String> { .or(CharMatcher.anyOf("-_.")); } - protected IllegalArgumentException exception(String vaultName, String reason) { + protected static IllegalArgumentException exception(String vaultName, String reason) { return new IllegalArgumentException( String.format( "Object '%s' doesn't match AWS Vault naming convention. " http://git-wip-us.apache.org/repos/asf/jclouds-labs-aws/blob/a144c2f2/glacier/src/test/java/org/jclouds/glacier/GlacierClientLiveTest.java ---------------------------------------------------------------------- diff --git a/glacier/src/test/java/org/jclouds/glacier/GlacierClientLiveTest.java b/glacier/src/test/java/org/jclouds/glacier/GlacierClientLiveTest.java index 6756973..e062c57 100644 --- a/glacier/src/test/java/org/jclouds/glacier/GlacierClientLiveTest.java +++ b/glacier/src/test/java/org/jclouds/glacier/GlacierClientLiveTest.java @@ -16,10 +16,9 @@ */ package org.jclouds.glacier; -import static org.testng.Assert.assertEquals; +import static org.testng.Assert.assertNull; import static org.testng.Assert.assertTrue; -import java.util.Iterator; import java.util.UUID; import org.jclouds.apis.BaseApiLiveTest; @@ -45,45 +44,36 @@ public class GlacierClientLiveTest extends BaseApiLiveTest<GlacierClient>{ @Test(groups = { "integration", "live" }) public void testDeleteVaultIfEmptyOrNotFound() throws Exception { - assertTrue(api.deleteVaultIfEmpty(UUID.randomUUID().toString())); + assertTrue(api.deleteVault(UUID.randomUUID().toString())); } @Test(groups = { "integration", "live" }) public void testDescribeNonExistentVault() throws Exception { VaultMetadata vault = api.describeVault(UUID.randomUUID().toString()); - assertEquals(vault, null); + assertNull(vault); } - private void testDescribeVault() throws Exception { - VaultMetadata vault = api.describeVault(VAULT_NAME1); - assertEquals(vault.getVaultName(), VAULT_NAME1); - assertEquals(vault.getNumberOfArchives(), 0); - assertEquals(vault.getSizeInBytes(), 0); - assertEquals(vault.getLastInventoryDate(), null); + @Test(groups = { "integration", "live" }) + public void testCreateVault() throws Exception { + String path = api.createVault(VAULT_NAME1).toString(); + api.createVault(VAULT_NAME2); + api.createVault(VAULT_NAME3); + assertTrue(path.contains("https://glacier.us-east-1.amazonaws.com/")); + assertTrue(path.contains("/vaults/" + VAULT_NAME1)); } - private void testListVaults() throws Exception { + @Test(groups = { "integration", "live" }, dependsOnMethods = { "testCreateVault" }) + public void testListAndDescribeVaults() throws Exception { PaginatedVaultCollection vaults = api.listVaults(); - Iterator<VaultMetadata> i = vaults.iterator(); - assertEquals(i.next().getVaultName(), VAULT_NAME1); - assertEquals(i.next().getVaultName(), VAULT_NAME2); - assertEquals(i.next().getVaultName(), VAULT_NAME3); + assertTrue(vaults.contains(api.describeVault(VAULT_NAME1))); + assertTrue(vaults.contains(api.describeVault(VAULT_NAME2))); + assertTrue(vaults.contains(api.describeVault(VAULT_NAME3))); } - @Test(groups = { "integration", "live" }) - public void testCreateDescribeAndListVault() throws Exception { - try { - String path = api.createVault(VAULT_NAME1).toString(); - api.createVault(VAULT_NAME2); - api.createVault(VAULT_NAME3); - assertTrue(path.contains("https://glacier.us-east-1.amazonaws.com/")); - assertTrue(path.contains("/vaults/" + VAULT_NAME1)); - this.testDescribeVault(); - this.testListVaults(); - } finally { - api.deleteVaultIfEmpty(VAULT_NAME1); - api.deleteVaultIfEmpty(VAULT_NAME2); - api.deleteVaultIfEmpty(VAULT_NAME3); - } + @Test(groups = { "integration", "live" }, dependsOnMethods = { "testListAndDescribeVaults" }) + public void testDeleteVault() throws Exception { + api.deleteVault(VAULT_NAME1); + api.deleteVault(VAULT_NAME2); + api.deleteVault(VAULT_NAME3); } } http://git-wip-us.apache.org/repos/asf/jclouds-labs-aws/blob/a144c2f2/glacier/src/test/java/org/jclouds/glacier/GlacierClientMockTest.java ---------------------------------------------------------------------- diff --git a/glacier/src/test/java/org/jclouds/glacier/GlacierClientMockTest.java b/glacier/src/test/java/org/jclouds/glacier/GlacierClientMockTest.java index 9daa336..51906a6 100644 --- a/glacier/src/test/java/org/jclouds/glacier/GlacierClientMockTest.java +++ b/glacier/src/test/java/org/jclouds/glacier/GlacierClientMockTest.java @@ -99,7 +99,7 @@ public class GlacierClientMockTest { // Send the request and check the response try { GlacierClient client = getGlacierClient(server.getUrl("/")); - assertTrue(client.deleteVaultIfEmpty(VAULT_NAME)); + assertTrue(client.deleteVault(VAULT_NAME)); RecordedRequest request = server.takeRequest(); assertEquals(request.getRequestLine(), "DELETE /-/vaults/" + VAULT_NAME + " HTTP/1.1"); } finally { http://git-wip-us.apache.org/repos/asf/jclouds-labs-aws/blob/a144c2f2/glacier/src/test/java/org/jclouds/glacier/predicates/validators/VaultNameValidatorTest.java ---------------------------------------------------------------------- diff --git a/glacier/src/test/java/org/jclouds/glacier/predicates/validators/VaultNameValidatorTest.java b/glacier/src/test/java/org/jclouds/glacier/predicates/validators/VaultNameValidatorTest.java index fd5cfc3..f5841f2 100644 --- a/glacier/src/test/java/org/jclouds/glacier/predicates/validators/VaultNameValidatorTest.java +++ b/glacier/src/test/java/org/jclouds/glacier/predicates/validators/VaultNameValidatorTest.java @@ -32,22 +32,22 @@ public class VaultNameValidatorTest { } @Test(expectedExceptions = IllegalArgumentException.class) - public void testValidateInvalidName() { + public void testEmptyName() { VALIDATOR.validate(""); } @Test(expectedExceptions = IllegalArgumentException.class) - public void testValidateInvalidName2() { + public void testIllegalCharacters() { VALIDATOR.validate("<InvalidName>"); } @Test(expectedExceptions = IllegalArgumentException.class) - public void testValidateInvalidName3() { + public void testIllegalCharacters2() { VALIDATOR.validate("INVALID,NAME"); } @Test(expectedExceptions = IllegalArgumentException.class) - public void testValidateInvalidName4() { + public void testNameTooLong() { VALIDATOR.validate("INVALIDNAMEINVALIDNAMEINVALIDNAMEINVALIDNAMEINVALIDNAMEINVALIDNAMEINVALIDNAMEINVALIDNAMEINVAL" + "IDNAMEINVALIDNAMEINVALIDNAMEINVALIDNAMEINVALIDNAMEINVALIDNAMEINVALIDNAMEINVALIDNAMEINVALIDNAMEINVALIDNAMEI" + "NVALIDNAMEINVALIDNAMEINVALIDNAMEINVALIDNAMEINVALIDNAMEINVALIDNAMEINVALIDNAMEINVALIDNAME");
