//! # An example `type` in reproto
//!
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
io/reproto/JacksonSupport.java
package io.reproto;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
import com.fasterxml.jackson.datatype.jdk8.Jdk8Module;
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
public interface JacksonSupport {
/**
* Build an object mapper which has the required configuration and modules installed.
*/
public static ObjectMapper objectMapper() {
final ObjectMapper m = new ObjectMapper();
m.disable(SerializationFeature.FAIL_ON_EMPTY_BEANS);
m.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
m.setSerializationInclusion(JsonInclude.Include.NON_ABSENT);
m.registerModule(new Jdk8Module());
m.registerModule(new JavaTimeModule());
return m;
}
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
reproto/example/type/Post.java
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 {
/**
* <pre>
* Title of this post.
* </pre>
*/
@JsonProperty("title")
private final String title;
/**
* <pre>
* Author of the post.
* </pre>
*/
@JsonProperty("author")
private final String author;
/**
* <pre>
* Time at when the post was posted.
* </pre>
*/
@JsonProperty("posted_at")
@JsonFormat(shape = JsonFormat.Shape.STRING)
private final Instant postedAt;
/**
* <pre>
* Tags associated with this post.
* </pre>
*/
@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;
}
}
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX