package reproto.example.type;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonValue;
import java.time.Instant;
import java.util.List;
import java.util.Objects;
import lombok.Data;
@Data
public class Post {
@JsonProperty("title")
private final String title;
@JsonProperty("author")
private final String author;
@JsonProperty("posted_at")
@JsonFormat(shape = JsonFormat.Shape.STRING)
private final Instant postedAt;
@JsonProperty("tags")
private final List<Post.Tag> tags;
public static enum Tag {
PROGRAMMING("programming"),
POLITICS("politics");
private final String value;
private Tag(
final String value
) {
Objects.requireNonNull(value, "value");
this.value = value;
}
@JsonCreator
public static Tag fromValue(final String value) {
for (final Tag v_value : values()) {
if (v_value.value.equals(value)) {
return v_value;
}
}
throw new IllegalArgumentException("value");
}
@JsonValue
public String toValue() {
return this.value;
}
}
}