@Provider public class JacksonJsonProvider extends Object implements MessageBodyReader<Object>, MessageBodyWriter<Object>, Versioned
MessageBodyReader,
 MessageBodyWriter) needed for binding
 JSON ("application/json") content to and from Java Objects ("POJO"s).
 Actual data binding functionality is implemented by ObjectMapper:
 mapper to use can be configured in multiple ways:
 
setMapper(org.codehaus.jackson.map.ObjectMapper)
  Provider that returns ObjectMappers.
  
 Note that the default mapper instance will be automatically created if
 one of explicit configuration methods (like configure(org.codehaus.jackson.map.DeserializationConfig.Feature, boolean))
 is called: if so, Provider-based introspection is NOT used, but the
 resulting Mapper is used as configured.
 Note: version 1.3 added a sub-class (JacksonJaxbJsonProvider) which
 is configured by default to use both Jackson and JAXB annotations for configuration
 (base class when used as-is defaults to using just Jackson annotations)
| Modifier and Type | Field and Description | 
|---|---|
| protected boolean | _cfgCheckCanDeserializeWhether we want to actually check that Jackson has
 a deserializer for given type. | 
| protected boolean | _cfgCheckCanSerializeWhether we want to actually check that Jackson has
 a serializer for given type. | 
| protected HashSet<ClassKey> | _cfgCustomUntouchablesSet of types (classes) that provider should ignore for data binding | 
| protected String | _jsonpFunctionNameJSONP function name to use for automatic JSONP wrapping, if any;
 if null, no JSONP wrapping is done. | 
| protected MapperConfigurator | _mapperConfigHelper object used for encapsulating configuration aspects
 of  ObjectMapper | 
| protected Providers | _providersInjectable context object used to locate configured
 instance of  ObjectMapperto use for actual
 serialization. | 
| static Class<?>[] | _unreadableClassesThese are classes that we never use for reading
 (never try to deserialize instances of these types). | 
| static HashSet<ClassKey> | _untouchablesLooks like we need to worry about accidental
   data binding for types we shouldn't be handling. | 
| static Class<?>[] | _unwritableClassesThese are classes that we never use for writing
 (never try to serialize instances of these types). | 
| static Annotations[] | BASIC_ANNOTATIONSDefault annotation sets to use, if not explicitly defined during
 construction: only Jackson annotations are used for the base
 class. | 
| Constructor and Description | 
|---|
| JacksonJsonProvider()Default constructor, usually used when provider is automatically
 configured to be used with JAX-RS implementation. | 
| JacksonJsonProvider(Annotations... annotationsToUse) | 
| JacksonJsonProvider(ObjectMapper mapper) | 
| JacksonJsonProvider(ObjectMapper mapper,
                   Annotations[] annotationsToUse)Constructor to use when a custom mapper (usually components
 like serializer/deserializer factories that have been configured)
 is to be used. | 
| Modifier and Type | Method and Description | 
|---|---|
| protected static boolean | _containedIn(Class<?> mainType,
            HashSet<ClassKey> set) | 
| protected Class<?> | _findView(ObjectMapper mapper,
         Annotation[] annotations) | 
| void | addUntouchable(Class<?> type)Method for marking specified type as "untouchable", meaning that provider
 will not try to read or write values of this type (or its subtypes). | 
| void | checkCanDeserialize(boolean state)Method for defining whether actual detection for existence of
 a deserializer for type should be done when  isReadable(java.lang.Class<?>, java.lang.reflect.Type, java.lang.annotation.Annotation[], javax.ws.rs.core.MediaType)is called. | 
| void | checkCanSerialize(boolean state)Method for defining whether actual detection for existence of
 a serializer for type should be done when  isWriteable(java.lang.Class<?>, java.lang.reflect.Type, java.lang.annotation.Annotation[], javax.ws.rs.core.MediaType)is called. | 
| JacksonJsonProvider | configure(DeserializationConfig.Feature f,
         boolean state) | 
| JacksonJsonProvider | configure(JsonGenerator.Feature f,
         boolean state) | 
| JacksonJsonProvider | configure(JsonParser.Feature f,
         boolean state) | 
| JacksonJsonProvider | configure(SerializationConfig.Feature f,
         boolean state) | 
| JacksonJsonProvider | disable(DeserializationConfig.Feature f,
       boolean state) | 
| JacksonJsonProvider | disable(JsonGenerator.Feature f,
       boolean state) | 
| JacksonJsonProvider | disable(JsonParser.Feature f,
       boolean state) | 
| JacksonJsonProvider | disable(SerializationConfig.Feature f,
       boolean state) | 
| JacksonJsonProvider | enable(DeserializationConfig.Feature f,
      boolean state) | 
| JacksonJsonProvider | enable(JsonGenerator.Feature f,
      boolean state) | 
| JacksonJsonProvider | enable(JsonParser.Feature f,
      boolean state) | 
| JacksonJsonProvider | enable(SerializationConfig.Feature f,
      boolean state) | 
| protected JsonEncoding | findEncoding(MediaType mediaType,
            MultivaluedMap<String,Object> httpHeaders)Helper method to use for determining desired output encoding. | 
| long | getSize(Object value,
       Class<?> type,
       Type genericType,
       Annotation[] annotations,
       MediaType mediaType)Method that JAX-RS container calls to try to figure out
 serialized length of given value. | 
| protected boolean | isJsonType(MediaType mediaType)Helper method used to check whether given media type
 is JSON type or sub type. | 
| boolean | isReadable(Class<?> type,
          Type genericType,
          Annotation[] annotations,
          MediaType mediaType)Method that JAX-RS container calls to try to check whether
 values of given type (and media type) can be deserialized by
 this provider. | 
| boolean | isWriteable(Class<?> type,
           Type genericType,
           Annotation[] annotations,
           MediaType mediaType)Method that JAX-RS container calls to try to check whether
 given value (of specified type) can be serialized by
 this provider. | 
| ObjectMapper | locateMapper(Class<?> type,
            MediaType mediaType)Method called to locate  ObjectMapperto use for serialization
 and deserialization. | 
| Object | readFrom(Class<Object> type,
        Type genericType,
        Annotation[] annotations,
        MediaType mediaType,
        MultivaluedMap<String,String> httpHeaders,
        InputStream entityStream)Method that JAX-RS container calls to deserialize given
 value. | 
| void | setAnnotationsToUse(Annotations[] annotationsToUse)Method for configuring which annotation sets to use (including none). | 
| void | setJSONPFunctionName(String fname) | 
| void | setMapper(ObjectMapper m)Method that can be used to directly define  ObjectMapperto use
 for serialization and deserialization; if null, will use the standard
 provider discovery from context instead. | 
| Version | version()Method that will return version information stored in and read from jar
 that contains this class. | 
| void | writeTo(Object value,
       Class<?> type,
       Type genericType,
       Annotation[] annotations,
       MediaType mediaType,
       MultivaluedMap<String,Object> httpHeaders,
       OutputStream entityStream)Method that JAX-RS container calls to serialize given value. | 
public static final Annotations[] BASIC_ANNOTATIONS
public static final HashSet<ClassKey> _untouchables
(why ClassKey? since plain old Class has no hashCode() defined, lookups are painfully slow)
public static final Class<?>[] _unreadableClasses
public static final Class<?>[] _unwritableClasses
protected final MapperConfigurator _mapperConfig
ObjectMapperprotected HashSet<ClassKey> _cfgCustomUntouchables
protected String _jsonpFunctionName
@Context protected Providers _providers
ObjectMapper to use for actual
 serialization.protected boolean _cfgCheckCanSerialize
protected boolean _cfgCheckCanDeserialize
public JacksonJsonProvider()
public JacksonJsonProvider(Annotations... annotationsToUse)
annotationsToUse - Annotation set(s) to use for configuring
    data bindingpublic JacksonJsonProvider(ObjectMapper mapper)
public JacksonJsonProvider(ObjectMapper mapper, Annotations[] annotationsToUse)
public Version version()
public void checkCanDeserialize(boolean state)
isReadable(java.lang.Class<?>, java.lang.reflect.Type, java.lang.annotation.Annotation[], javax.ws.rs.core.MediaType)
 is called.public void checkCanSerialize(boolean state)
isWriteable(java.lang.Class<?>, java.lang.reflect.Type, java.lang.annotation.Annotation[], javax.ws.rs.core.MediaType)
 is called.public void setAnnotationsToUse(Annotations[] annotationsToUse)
annotationsToUse - Ordered list of annotation sets to use; if null,
    defaultpublic void setMapper(ObjectMapper m)
ObjectMapper to use
 for serialization and deserialization; if null, will use the standard
 provider discovery from context instead. Default setting is null.public JacksonJsonProvider configure(DeserializationConfig.Feature f, boolean state)
public JacksonJsonProvider configure(SerializationConfig.Feature f, boolean state)
public JacksonJsonProvider configure(JsonParser.Feature f, boolean state)
public JacksonJsonProvider configure(JsonGenerator.Feature f, boolean state)
public JacksonJsonProvider enable(DeserializationConfig.Feature f, boolean state)
public JacksonJsonProvider enable(SerializationConfig.Feature f, boolean state)
public JacksonJsonProvider enable(JsonParser.Feature f, boolean state)
public JacksonJsonProvider enable(JsonGenerator.Feature f, boolean state)
public JacksonJsonProvider disable(DeserializationConfig.Feature f, boolean state)
public JacksonJsonProvider disable(SerializationConfig.Feature f, boolean state)
public JacksonJsonProvider disable(JsonParser.Feature f, boolean state)
public JacksonJsonProvider disable(JsonGenerator.Feature f, boolean state)
public void addUntouchable(Class<?> type)
type - Type to consider untouchable; can be any kind of class,
   including abstract class or interface. No instance of this type
   (including subtypes, i.e. types assignable to this type) will
   be read or written by providerpublic void setJSONPFunctionName(String fname)
public boolean isReadable(Class<?> type, Type genericType, Annotation[] annotations, MediaType mediaType)
isJsonType(javax.ws.rs.core.MediaType); then verify
 that type is not one of "untouchable" types (types we will never
 automatically handle), and finally that there is a deserializer
 for type (iff checkCanDeserialize(boolean) has been called with
 true argument -- otherwise assumption is there will be a handler)isReadable in interface MessageBodyReader<Object>public Object readFrom(Class<Object> type, Type genericType, Annotation[] annotations, MediaType mediaType, MultivaluedMap<String,String> httpHeaders, InputStream entityStream) throws IOException
readFrom in interface MessageBodyReader<Object>IOExceptionpublic long getSize(Object value, Class<?> type, Type genericType, Annotation[] annotations, MediaType mediaType)
getSize in interface MessageBodyWriter<Object>public boolean isWriteable(Class<?> type, Type genericType, Annotation[] annotations, MediaType mediaType)
isJsonType(javax.ws.rs.core.MediaType); then verify
 that type is not one of "untouchable" types (types we will never
 automatically handle), and finally that there is a serializer
 for type (iff checkCanSerialize(boolean) has been called with
 true argument -- otherwise assumption is there will be a handler)isWriteable in interface MessageBodyWriter<Object>public void writeTo(Object value, Class<?> type, Type genericType, Annotation[] annotations, MediaType mediaType, MultivaluedMap<String,Object> httpHeaders, OutputStream entityStream) throws IOException
writeTo in interface MessageBodyWriter<Object>IOExceptionprotected JsonEncoding findEncoding(MediaType mediaType, MultivaluedMap<String,Object> httpHeaders)
protected boolean isJsonType(MediaType mediaType)
MediaType.getSubtype() returns "json" or something
 ending with "+json".public ObjectMapper locateMapper(Class<?> type, MediaType mediaType)
ObjectMapper to use for serialization
 and deserialization. If an instance has been explicitly defined by
 setMapper(org.codehaus.jackson.map.ObjectMapper) (or non-null instance passed in constructor), that
 will be used. 
 If not, will try to locate it using standard JAX-RS
 ContextResolver mechanism, if it has been properly configured
 to access it (by JAX-RS runtime).
 Finally, if no mapper is found, will return a default unconfigured
 ObjectMapper instance (one constructed with default constructor
 and not modified in any way)type - Class of object being serialized or deserialized;
   not checked at this point, since it is assumed that unprocessable
   classes have been already weeded out,
   but will be passed to ContextResolver as is.mediaType - Declared media type for the instance to process:
   not used by this method,
   but will be passed to ContextResolver as is.protected Class<?> _findView(ObjectMapper mapper, Annotation[] annotations) throws JsonMappingException
JsonMappingException