
com.cerner.beadledom.client.jackson.AnnotatedJacksonPrivateModule Maven / Gradle / Ivy
The newest version!
package com.cerner.beadledom.client.jackson;
import com.cerner.beadledom.guice.BindingAnnotations;
import com.cerner.beadledom.guice.dynamicbindings.AnnotatedModule;
import com.cerner.beadledom.guice.dynamicbindings.DynamicBindingProvider;
import com.cerner.beadledom.jackson.DeserializationFeatureFlag;
import com.cerner.beadledom.jackson.JsonGeneratorFeatureFlag;
import com.cerner.beadledom.jackson.JsonParserFeatureFlag;
import com.cerner.beadledom.jackson.MapperFeatureFlag;
import com.cerner.beadledom.jackson.SerializationFeatureFlag;
import com.fasterxml.jackson.databind.Module;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.jaxrs.json.JacksonJsonProvider;
import com.google.inject.BindingAnnotation;
import com.google.inject.TypeLiteral;
import java.lang.annotation.Annotation;
import java.util.Set;
/**
* A private Guice module that provides the Json Serialization via {@link ObjectMapper}.
*
* This module is intended to be used within the {@link AnnotatedJacksonModule}.
*
*
This module exposes the following
*
* -
* {@link JacksonJsonProvider} annotated with the given {@link BindingAnnotation} via a guice
* provider {@link JacksonJsonGuiceProvider}
*
*
*
* This module binds the following
*
* - A {@link DynamicBindingProvider} for a Set of {@link Module}
* - A {@link DynamicBindingProvider} for a Set of {@link SerializationFeatureFlag}
* - A {@link DynamicBindingProvider} for a Set of {@link DeserializationFeatureFlag}
* - A {@link DynamicBindingProvider} for a Set of {@link JsonGeneratorFeatureFlag}
* - A {@link DynamicBindingProvider} for a Set of {@link JsonParserFeatureFlag}
* - A {@link DynamicBindingProvider} for a Set of {@link MapperFeatureFlag}
*
*
* @author Sundeep Paruvu
* @since 2.2
* @deprecated As of 3.6, use Retrofit (https://github.com/square/retrofit) instead.
*/
@Deprecated
class AnnotatedJacksonPrivateModule extends AnnotatedModule {
protected AnnotatedJacksonPrivateModule(
Class extends Annotation> clientBindingAnnotation) {
super(clientBindingAnnotation);
}
/**
* A static method to create an instance of {@link AnnotatedJacksonPrivateModule}.
*
* @param clientBindingAnnotation a {@link BindingAnnotation} to which the {@link ObjectMapper}
* need to be annotated with.
*
* @return an instance of {@link AnnotatedJacksonPrivateModule}
*/
static AnnotatedJacksonPrivateModule with(
Class extends Annotation> clientBindingAnnotation) {
if (clientBindingAnnotation == null) {
throw new NullPointerException("clientBindingAnnotation:null");
}
BindingAnnotations.checkIsBindingAnnotation(clientBindingAnnotation);
return new AnnotatedJacksonPrivateModule(clientBindingAnnotation);
}
@Override
protected void configure() {
AnnotatedObjectMapperProvider provider =
new AnnotatedObjectMapperProvider(getBindingAnnotation());
bind(ObjectMapper.class).annotatedWith(getBindingAnnotation()).toProvider(provider)
.asEagerSingleton();
bindDynamicProvider(ObjectMapper.class);
expose(ObjectMapper.class).annotatedWith(getBindingAnnotation());
bind(JacksonJsonProvider.class).annotatedWith(getBindingAnnotation())
.toProvider(new JacksonJsonGuiceProvider(getBindingAnnotation()));
expose(JacksonJsonProvider.class).annotatedWith(getBindingAnnotation());
bindDynamicProvider(new TypeLiteral>() {
});
bindDynamicProvider(new TypeLiteral>() {
});
bindDynamicProvider(new TypeLiteral>() {
});
bindDynamicProvider(new TypeLiteral>() {
});
bindDynamicProvider(new TypeLiteral>() {
});
bindDynamicProvider(new TypeLiteral>() {
});
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy