package keywhiz.api.automation.v2; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; import com.google.auto.value.AutoValue; import com.google.common.base.MoreObjects; @AutoValue public abstract class SetSecretVersionRequestV2 { SetSecretVersionRequestV2() { } // prevent sub-classing public static Builder builder() { return new AutoValue_SetSecretVersionRequestV2.Builder() .name("") .version(0); } @AutoValue.Builder public abstract static class Builder { // intended to be package-private abstract SetSecretVersionRequestV2 autoBuild(); public abstract Builder name(String name); public abstract Builder version(long version); /** * @throws IllegalArgumentException if builder data is invalid. */ public SetSecretVersionRequestV2 build() { SetSecretVersionRequestV2 request = autoBuild(); if (request.name().isEmpty()) { throw new IllegalStateException("name is empty"); } return request; } } /** * Static factory method used by Jackson for deserialization */ @SuppressWarnings("unused") @JsonCreator public static SetSecretVersionRequestV2 fromParts( @JsonProperty("name") String name, @JsonProperty("version") long version) { return builder() .name(name) .version(version) .build(); } @JsonProperty("name") public abstract String name(); @JsonProperty("version") public abstract long version(); @Override public final String toString() { return MoreObjects.toStringHelper(this) .add("name", name()) .add("version", version()) .omitNullValues() .toString(); } }