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;
/**
* Represents string container that inlines it's representation into the one string.
*/
@JsonDeserialize(using = InlineString.Deserializer.class)
public final class InlineString extends DomainObject implements JsonSerializableWithType {
private final String value;
public String getValue() {
return value;
}
/**
* @param value string to wrap around
*/
public InlineString(String value) {
this.value = 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.writeString(value);
}
/**
* Jackson deserializer of the hosting class.
*/
public static final class Deserializer extends JsonDeserializer<InlineString> {
@Override
public InlineString deserialize(JsonParser jp, DeserializationContext ctxt) throws IOException {
return new InlineString(jp.readValueAs(String.class));
}
}
}