package com.alexshabanov.springrestapi.rest.common;
import com.alexshabanov.springrestapi.domain.DomainObject;
import org.codehaus.jackson.JsonGenerator;
import org.codehaus.jackson.JsonParser;
import org.codehaus.jackson.map.*;
import org.codehaus.jackson.map.annotate.JsonDeserialize;
import java.io.IOException;
@JsonDeserialize(using = InlineInt.Deserializer.class)
public final class InlineInt extends DomainObject implements JsonSerializableWithType {
private final int value;
public int getValue() {
return value;
}
public InlineInt(int value) {
this.value = value;
}
public static InlineInt as(int value) {
return new InlineInt(value);
}
@Override
public void serializeWithType(JsonGenerator jgen, SerializerProvider provider, TypeSerializer typeSer)
throws IOException {
serialize(jgen, provider);
}
@Override
public void serialize(JsonGenerator jgen, SerializerProvider provider) throws IOException {
jgen.writeNumber(getValue());
}
/**
* Jackson deserializer of the hosting class.
*/
public static final class Deserializer extends JsonDeserializer<InlineInt> {
@Override
public InlineInt deserialize(JsonParser jp, DeserializationContext ctxt) throws IOException {
return new InlineInt(jp.getIntValue());
}
}
}