Can an AutoValue class do a negative check similar to how it checks for Missing required properties? Maybe it can support validation by annotations?
@AutoValue
@JsonSerialize(as = ExampleRequest.class)
@JsonDeserialize(builder = ExampleRequest.Builder.class)
public abstract class ExampleRequest {
@JsonProperty("name")
public abstract String name();
@NegativeCheck // is there something available ?
@JsonProperty("version")
public abstract long version();
public static ExampleRequest.Builder builder() {
return Builder.builder();
}
@AutoValue.Builder
@JsonIgnoreProperties(ignoreUnknown = true)
public abstract static class Builder {
@JsonCreator
public static ExampleRequest.Builder builder() {
return new AutoValue_ExampleRequest.Builder();
}
@JsonProperty("name")
public abstract ExampleRequest.Builder name(String name);
@JsonProperty("version")
public abstract ExampleRequest.Builder version(long version);
public abstract ExampleRequest build();
}
}
I can solve it like below but I was wondering if there is support for some built-in validation using tags so I don't have to write custom validation.
@AutoValue
@JsonSerialize(as = ExampleRequest.class)
@JsonDeserialize(builder = ExampleRequest.Builder.class)
public abstract class ExampleRequest {
@JsonProperty("name")
public abstract String name();
@JsonProperty("version")
public abstract long version();
public static ExampleRequest.Builder builder() {
return Builder.builder();
}
@AutoValue.Builder
@JsonIgnoreProperties(ignoreUnknown = true)
public abstract static class Builder {
@JsonCreator
public static ExampleRequest.Builder builder() {
return new AutoValue_ExampleRequest.Builder();
}
@JsonProperty("name")
public abstract ExampleRequest.Builder name(String name);
@JsonProperty("version")
public abstract ExampleRequest.Builder version(long version);
abstract ExampleRequest autoBuild();
public ExampleRequest build() {
ExampleRequest request = autoBuild();
validateParameterVersion(request.version());
return request;
}
private void validateParameterVersion(long version) {
if (version < 0) {
throw new IllegalStateException("version cannot be negative");
}
}
}
}