package com.yammer.breakerbox.azure; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonProperty; import com.microsoft.windowsazure.services.core.storage.StorageCredentialsAccountAndKey; import io.dropwizard.util.Duration; import javax.validation.Valid; import javax.validation.constraints.NotNull; import static com.google.common.base.Preconditions.checkNotNull; public class AzureTableConfiguration { @NotNull @Valid private final StorageCredentialsAccountAndKey storageCredentialsAccountAndKey; @NotNull @Valid private final Duration timeout; @NotNull @Valid private final Duration retryInterval; @Valid private final int retryAttempts; @JsonCreator public AzureTableConfiguration(@JsonProperty("accountName") String accountName, @JsonProperty("accountKey") String accountKey, @JsonProperty("timeout")Duration timeout, @JsonProperty("retryInterval") Duration retryInterval, @JsonProperty("retryAttempts") int retryAttempts) { this.retryInterval = checkNotNull(retryInterval, "retryInterval cannot be null"); this.retryAttempts = retryAttempts; this.timeout = checkNotNull(timeout, "timeout cannot be null"); this.storageCredentialsAccountAndKey = new StorageCredentialsAccountAndKey( checkNotNull(accountName, "accountName cannot be null"), checkNotNull(accountKey, "accountKey cannot be null")); } @JsonIgnore public StorageCredentialsAccountAndKey getStorageCredentialsAccountAndKey() { return storageCredentialsAccountAndKey; } public Duration getRetryInterval() { return retryInterval; } public int getRetryAttempts() { return retryAttempts; } public Duration getTimeout() { return timeout; } }