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.collect.ImmutableSet; @AutoValue public abstract class ModifyGroupsRequestV2 { ModifyGroupsRequestV2() {} // prevent sub-classing public static Builder builder() { return new AutoValue_ModifyGroupsRequestV2.Builder() .addGroups() .removeGroups(); } @AutoValue.Builder public abstract static class Builder { // intended to be package-private abstract Builder addGroups(ImmutableSet<String> groups); abstract Builder removeGroups(ImmutableSet<String> groups); public Builder addGroups(String... groups) { return addGroups(ImmutableSet.copyOf(groups)); } public Builder removeGroups(String... groups) { return removeGroups(ImmutableSet.copyOf(groups)); } public abstract ModifyGroupsRequestV2 build(); } /** * Static factory method used by Jackson for deserialization */ @SuppressWarnings("unused") @JsonCreator public static ModifyGroupsRequestV2 fromParts( @JsonProperty("addGroups") ImmutableSet<String> addGroups, @JsonProperty("removeGroups") ImmutableSet<String> removeGroups) { return builder().addGroups(addGroups).removeGroups(removeGroups).build(); } @JsonProperty("addGroups") public abstract ImmutableSet<String> addGroups(); @JsonProperty("removeGroups") public abstract ImmutableSet<String> removeGroups(); }