Updated DeprecateOptions to AutoValue + Builder

This commit is contained in:
Daniel Broudy 2015-01-30 17:13:52 -08:00 committed by Ignasi Barrera
parent a9eecfad81
commit adf6999899
3 changed files with 78 additions and 84 deletions

View File

@ -18,15 +18,37 @@ package org.jclouds.googlecomputeengine.options;
import java.net.URI; import java.net.URI;
import java.util.Date; import java.util.Date;
import org.jclouds.googlecomputeengine.domain.Deprecated.State; import org.jclouds.googlecomputeengine.domain.Deprecated.State;
import org.jclouds.javax.annotation.Nullable;
import org.jclouds.json.SerializedNames;
import com.google.auto.value.AutoValue;
/** /**
* Options to set the deprecation status of a resource. Currently only for images. * Options to set the deprecation status of a resource. Currently only for images.
* *
* @see <a href="https://developers.google.com/compute/docs/reference/latest/images/deprecate" /> * @see <a href="https://developers.google.com/compute/docs/reference/latest/images/deprecate" />
*/ */
public class DeprecateOptions { @AutoValue
public abstract class DeprecateOptions {
@Nullable public abstract State state();
@Nullable public abstract URI replacement();
@Nullable public abstract Date deprecated();
@Nullable public abstract Date obsolete();
@Nullable public abstract Date deleted();
@SerializedNames({"state", "replacement", "deprecated", "obsolete", "deleted"})
static DeprecateOptions create(State state, URI replacement, Date deprecated,
Date obsolete, Date deleted){
return new AutoValue_DeprecateOptions(state, replacement, deprecated, obsolete, deleted);
}
DeprecateOptions(){
}
public static class Builder {
private State state; private State state;
private URI replacement; private URI replacement;
private Date deprecated; private Date deprecated;
@ -38,8 +60,9 @@ public class DeprecateOptions {
* *
* @return the new deprecation state. * @return the new deprecation state.
*/ */
public State getState() { public Builder state(State state) {
return state; this.state = state;
return this;
} }
/** /**
@ -47,8 +70,9 @@ public class DeprecateOptions {
* *
* @return the URL * @return the URL
*/ */
public URI getReplacement() { public Builder replacement(URI replacement) {
return replacement; this.replacement = replacement;
return this;
} }
/** /**
@ -56,8 +80,9 @@ public class DeprecateOptions {
* *
* @return the timestamp * @return the timestamp
*/ */
public Date getDeprecated() { public Builder deprecated(Date deprecated) {
return deprecated; this.deprecated = deprecated;
return this;
} }
/** /**
@ -65,8 +90,9 @@ public class DeprecateOptions {
* *
* @return the timestamp * @return the timestamp
*/ */
public Date getObsolete() { public Builder obsolete(Date obsolete) {
return obsolete; this.obsolete = obsolete;
return this;
} }
/** /**
@ -74,48 +100,14 @@ public class DeprecateOptions {
* *
* @return the timestamp * @return the timestamp
*/ */
public Date getDeleted() { public Builder deleted(Date deleted) {
return deleted;
}
/**
* @see DeprecateOptions#getState()
*/
public DeprecateOptions state(State state) {
this.state = state;
return this;
}
/**
* @see DeprecateOptions#getReplacement()
*/
public DeprecateOptions replacement(URI replacement) {
this.replacement = replacement;
return this;
}
/**
* @see DeprecateOptions#getDeprecated()
*/
public DeprecateOptions deprecated(Date deprecated) {
this.deprecated = deprecated;
return this;
}
/**
* @see DeprecateOptions#getObsolete()
*/
public DeprecateOptions obsolete(Date obsolete) {
this.obsolete = obsolete;
return this;
}
/**
* @see DeprecateOptions#getDeleted()
*/
public DeprecateOptions deleted(Date deleted) {
this.deleted = deleted; this.deleted = deleted;
return this; return this;
} }
public DeprecateOptions build(){
return create(state, replacement, deprecated,
obsolete, deleted);
}
}
} }

View File

@ -96,11 +96,12 @@ public class ImageApiLiveTest extends BaseGoogleComputeEngineApiLiveTest {
URI replacement = URI.create("https://www.googleapis.com/compute/v1/projects/centos-cloud/global/images/centos-6-2-v20120326test"); URI replacement = URI.create("https://www.googleapis.com/compute/v1/projects/centos-cloud/global/images/centos-6-2-v20120326test");
DeprecateOptions deprecateOptions = new DeprecateOptions().state(State.DEPRECATED) DeprecateOptions deprecateOptions = new DeprecateOptions.Builder().state(State.DEPRECATED)
.replacement(replacement) .replacement(replacement)
.deprecated(new SimpleDateFormatDateService().iso8601DateParse(deprecated)) .deprecated(new SimpleDateFormatDateService().iso8601DateParse(deprecated))
.obsolete(new SimpleDateFormatDateService().iso8601DateParse(obsolete)) .obsolete(new SimpleDateFormatDateService().iso8601DateParse(obsolete))
.deleted(new SimpleDateFormatDateService().iso8601DateParse(deleted)); .deleted(new SimpleDateFormatDateService().iso8601DateParse(deleted))
.build();
assertOperationDoneSuccessfully(api().deprecate(IMAGE_NAME, deprecateOptions)); assertOperationDoneSuccessfully(api().deprecate(IMAGE_NAME, deprecateOptions));

View File

@ -136,11 +136,12 @@ public class ImageApiMockTest extends BaseGoogleComputeEngineApiMockTest {
String imageName = "test-image"; String imageName = "test-image";
server.enqueue(jsonResponse("/operation.json")); server.enqueue(jsonResponse("/operation.json"));
DeprecateOptions options = new DeprecateOptions().state(State.DEPRECATED) DeprecateOptions options = new DeprecateOptions.Builder().state(State.DEPRECATED)
.replacement(URI.create(url("/projects/centos-cloud/global/images/centos-6-2-v20120326test"))) .replacement(URI.create(url("/projects/centos-cloud/global/images/centos-6-2-v20120326test")))
.deprecated(new SimpleDateFormatDateService().iso8601DateParse("2014-07-16T22:16:13.468Z")) .deprecated(new SimpleDateFormatDateService().iso8601DateParse("2014-07-16T22:16:13.468Z"))
.obsolete(new SimpleDateFormatDateService().iso8601DateParse("2014-10-16T22:16:13.468Z")) .obsolete(new SimpleDateFormatDateService().iso8601DateParse("2014-10-16T22:16:13.468Z"))
.deleted(new SimpleDateFormatDateService().iso8601DateParse("2015-01-16T22:16:13.468Z")); .deleted(new SimpleDateFormatDateService().iso8601DateParse("2015-01-16T22:16:13.468Z"))
.build();
assertEquals(imageApi().deprecate(imageName, options), assertEquals(imageApi().deprecate(imageName, options),
new ParseOperationTest().expected(url("/projects"))); new ParseOperationTest().expected(url("/projects")));