
com.qmetric.feed.app.support.JsonModuleFactory Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of hal-feed-server Show documentation
Show all versions of hal-feed-server Show documentation
Feed server based on HAL+JSON (http://stateless.co/hal_specification.html)
The newest version!
package com.qmetric.feed.app.support;
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.JsonDeserializer;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.Module;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializerProvider;
import com.fasterxml.jackson.databind.module.SimpleModule;
import com.qmetric.feed.domain.FeedEntryLink;
import com.qmetric.feed.domain.Payload;
import java.io.IOException;
import java.util.Map;
import static com.fasterxml.jackson.core.Version.unknownVersion;
public class JsonModuleFactory
{
public static Module create()
{
final SimpleModule module = new SimpleModule("jacksonConfig", unknownVersion());
module.addSerializer(Payload.class, new PayloadJsonMapper.Serializer());
module.addDeserializer(Payload.class, new PayloadJsonMapper.Deserializer());
module.addDeserializer(FeedEntryLink.class, new LinkJsonMapper.Deserializer());
return module;
}
private static class PayloadJsonMapper
{
private static class Serializer extends JsonSerializer
{
@Override public void serialize(final Payload payload, final JsonGenerator jsonGenerator, final SerializerProvider serializerProvider) throws IOException
{
jsonGenerator.writeObject(payload);
}
}
private static class Deserializer extends JsonDeserializer
{
@Override @SuppressWarnings("unchecked")
public Payload deserialize(final JsonParser jsonParser, final DeserializationContext deserializationContext) throws IOException
{
return new Payload(jsonParser.readValueAs(Map.class));
}
}
}
private static class LinkJsonMapper
{
private static class Deserializer extends JsonDeserializer
{
@Override
public FeedEntryLink deserialize(final JsonParser jsonParser, final DeserializationContext deserializationContext) throws IOException
{
@SuppressWarnings("unchecked")
final Map map = (Map) new ObjectMapper().readValue(jsonParser, Map.class);
return new FeedEntryLink(map.get("rel"), map.get("href"));
}
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy