
io.dropwizard.jackson.GuavaExtrasModule Maven / Gradle / Ivy
package io.dropwizard.jackson;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.core.Version;
import com.fasterxml.jackson.databind.*;
import com.fasterxml.jackson.databind.deser.Deserializers;
import com.google.common.cache.CacheBuilderSpec;
import java.io.IOException;
public class GuavaExtrasModule extends Module {
private static class CacheBuilderSpecDeserializer extends JsonDeserializer {
@Override
public CacheBuilderSpec deserialize(JsonParser jp,
DeserializationContext ctxt) throws IOException {
final String text = jp.getText();
if ("off".equalsIgnoreCase(text) || "disabled".equalsIgnoreCase(text)) {
return CacheBuilderSpec.disableCaching();
}
return CacheBuilderSpec.parse(text);
}
}
private static class GuavaExtrasDeserializers extends Deserializers.Base {
@Override
public JsonDeserializer> findBeanDeserializer(JavaType type,
DeserializationConfig config,
BeanDescription beanDesc) throws JsonMappingException {
if (CacheBuilderSpec.class.isAssignableFrom(type.getRawClass())) {
return new CacheBuilderSpecDeserializer();
}
return super.findBeanDeserializer(type, config, beanDesc);
}
}
@Override
public String getModuleName() {
return "guava-extras";
}
@Override
public Version version() {
return Version.unknownVersion();
}
@Override
public void setupModule(SetupContext context) {
context.addDeserializers(new GuavaExtrasDeserializers());
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy