Class AbstractJacksonDataFormat

  • All Implemented Interfaces:
    AutoCloseable, org.apache.camel.CamelContextAware, org.apache.camel.Service, org.apache.camel.ShutdownableService, org.apache.camel.spi.DataFormat, org.apache.camel.spi.DataFormatContentTypeHeader, org.apache.camel.spi.DataFormatName, org.apache.camel.StatefulService, org.apache.camel.SuspendableService
    Direct Known Subclasses:
    JacksonDataFormat

    public abstract class AbstractJacksonDataFormat
    extends org.apache.camel.support.service.ServiceSupport
    implements org.apache.camel.spi.DataFormat, org.apache.camel.spi.DataFormatName, org.apache.camel.spi.DataFormatContentTypeHeader, org.apache.camel.CamelContextAware
    Abstract superclass of Jackson based data formats.
    • Constructor Detail

      • AbstractJacksonDataFormat

        public AbstractJacksonDataFormat()
        Use the default Jackson ObjectMapper and Object
      • AbstractJacksonDataFormat

        public AbstractJacksonDataFormat​(Class<?> unmarshalType)
        Use the default Jackson ObjectMapper and with a custom unmarshal type
        Parameters:
        unmarshalType - the custom unmarshal type
      • AbstractJacksonDataFormat

        public AbstractJacksonDataFormat​(Class<?> unmarshalType,
                                         Class<?> jsonView)
        Use the default Jackson ObjectMapper and with a custom unmarshal type and JSON view
        Parameters:
        unmarshalType - the custom unmarshal type
        jsonView - marker class to specify properties to be included during marshalling. See also https://github.com/FasterXML/jackson-annotations/blob/master/src/main/java/com/fasterxml/jackson/annotation/JsonView.java
      • AbstractJacksonDataFormat

        public AbstractJacksonDataFormat​(com.fasterxml.jackson.databind.ObjectMapper mapper,
                                         Class<?> unmarshalType)
        Use a custom Jackson mapper and and unmarshal type
        Parameters:
        mapper - the custom mapper
        unmarshalType - the custom unmarshal type
      • AbstractJacksonDataFormat

        public AbstractJacksonDataFormat​(com.fasterxml.jackson.databind.ObjectMapper mapper,
                                         Class<?> unmarshalType,
                                         Class<?> jsonView)
        Use a custom Jackson mapper, unmarshal type and JSON view
        Parameters:
        mapper - the custom mapper
        unmarshalType - the custom unmarshal type
        jsonView - marker class to specify properties to be included during marshalling. See also https://github.com/FasterXML/jackson-annotations/blob/master/src/main/java/com/fasterxml/jackson/annotation/JsonView.java
    • Method Detail

      • getCamelContext

        public org.apache.camel.CamelContext getCamelContext()
        Specified by:
        getCamelContext in interface org.apache.camel.CamelContextAware
      • setCamelContext

        public void setCamelContext​(org.apache.camel.CamelContext camelContext)
        Specified by:
        setCamelContext in interface org.apache.camel.CamelContextAware
      • marshal

        public void marshal​(org.apache.camel.Exchange exchange,
                            Object graph,
                            OutputStream stream)
                     throws Exception
        Specified by:
        marshal in interface org.apache.camel.spi.DataFormat
        Throws:
        Exception
      • unmarshal

        public Object unmarshal​(org.apache.camel.Exchange exchange,
                                InputStream stream)
                         throws Exception
        Specified by:
        unmarshal in interface org.apache.camel.spi.DataFormat
        Throws:
        Exception
      • getObjectMapper

        public com.fasterxml.jackson.databind.ObjectMapper getObjectMapper()
      • setObjectMapper

        public void setObjectMapper​(com.fasterxml.jackson.databind.ObjectMapper objectMapper)
      • isUseDefaultObjectMapper

        public boolean isUseDefaultObjectMapper()
      • setUseDefaultObjectMapper

        public void setUseDefaultObjectMapper​(boolean useDefaultObjectMapper)
      • getUnmarshalType

        public Class<?> getUnmarshalType()
      • setUnmarshalType

        public void setUnmarshalType​(Class<?> unmarshalType)
      • getUnmarshalTypeName

        public String getUnmarshalTypeName()
      • setUnmarshalTypeName

        public void setUnmarshalTypeName​(String unmarshalTypeName)
      • getCollectionType

        public Class<? extends Collection> getCollectionType()
      • setCollectionType

        public void setCollectionType​(Class<? extends Collection> collectionType)
      • getCollectionTypeName

        public String getCollectionTypeName()
      • setCollectionTypeName

        public void setCollectionTypeName​(String collectionTypeName)
      • getJsonView

        public Class<?> getJsonView()
      • setJsonView

        public void setJsonView​(Class<?> jsonView)
      • getJsonViewTypeName

        public String getJsonViewTypeName()
      • setJsonViewTypeName

        public void setJsonViewTypeName​(String jsonViewTypeName)
      • getInclude

        public String getInclude()
      • setInclude

        public void setInclude​(String include)
      • isAllowJmsType

        public boolean isAllowJmsType()
      • isPrettyPrint

        public boolean isPrettyPrint()
      • setPrettyPrint

        public void setPrettyPrint​(boolean prettyPrint)
      • isUseList

        public boolean isUseList()
      • setUseList

        public void setUseList​(boolean useList)
      • getModules

        public List<com.fasterxml.jackson.databind.Module> getModules()
      • getNamingStrategy

        public String getNamingStrategy()
      • setNamingStrategy

        public void setNamingStrategy​(String namingStrategy)
      • setModules

        public void setModules​(List<com.fasterxml.jackson.databind.Module> modules)
        To use custom Jackson Modules
      • getModuleClassNames

        public String getModuleClassNames()
      • addModule

        public void addModule​(com.fasterxml.jackson.databind.Module module)
        To use the custom Jackson module
      • setModuleClassNames

        public void setModuleClassNames​(String moduleClassNames)
        To use custom Jackson Modules specified as a String with FQN class names. Multiple classes can be separated by comma.
      • getModuleRefs

        public String getModuleRefs()
      • setModuleRefs

        public void setModuleRefs​(String moduleRefs)
        To use custom Jackson modules referred from the Camel registry. Multiple modules can be separated by comma.
      • useList

        public void useList()
        Uses ArrayList when unmarshalling.
      • useMap

        public void useMap()
        Uses HashMap when unmarshalling.
      • setAllowJmsType

        public void setAllowJmsType​(boolean allowJmsType)
        Allows jackson to use the JMSType header as an indicator what the classname is for unmarshaling content to POJO

        By default this option is false.

      • isEnableJacksonTypeConverter

        public boolean isEnableJacksonTypeConverter()
      • setEnableJacksonTypeConverter

        public void setEnableJacksonTypeConverter​(boolean enableJacksonTypeConverter)
        If enabled then Jackson is allowed to attempt to be used during Camels type converter as a FallbackConverter that attempts to convert POJOs to/from Map/List types.

        This should only be enabled when desired to be used.

      • isAllowUnmarshallType

        public boolean isAllowUnmarshallType()
      • setAllowUnmarshallType

        public void setAllowUnmarshallType​(boolean allowJacksonUnmarshallType)
        If enabled then Jackson is allowed to attempt to use the CamelJacksonUnmarshalType header during the unmarshalling.

        This should only be enabled when desired to be used.

      • isContentTypeHeader

        public boolean isContentTypeHeader()
      • setContentTypeHeader

        public void setContentTypeHeader​(boolean contentTypeHeader)
        If enabled then Jackson will set the Content-Type header to the correct mime type when marshalling.
        Specified by:
        setContentTypeHeader in interface org.apache.camel.spi.DataFormatContentTypeHeader
      • getTimezone

        public TimeZone getTimezone()
      • setTimezone

        public void setTimezone​(TimeZone timezone)
        If set then Jackson will use the Timezone when marshalling/unmarshalling.
      • isAutoDiscoverObjectMapper

        public boolean isAutoDiscoverObjectMapper()
      • setAutoDiscoverObjectMapper

        public void setAutoDiscoverObjectMapper​(boolean autoDiscoverObjectMapper)
        If set to true and useDefaultObjectMapper is true, then Jackson will look for an objectMapper in the registry.
      • setSchemaResolver

        public void setSchemaResolver​(SchemaResolver schemaResolver)
        Optional schema resolver used to lookup schemas for the data in transit.
      • isAutoDiscoverSchemaResolver

        public boolean isAutoDiscoverSchemaResolver()
      • setAutoDiscoverSchemaResolver

        public void setAutoDiscoverSchemaResolver​(boolean autoDiscoverSchemaResolver)
        When not disabled, the SchemaResolver will be looked up into the registry
      • getEnableFeatures

        public String getEnableFeatures()
      • setEnableFeatures

        public void setEnableFeatures​(String enableFeatures)
        Set of features to enable on the Jackson ObjectMapper. The features should be a name that matches a enum from SerializationFeature, DeserializationFeature, or MapperFeature.
      • getDisableFeatures

        public String getDisableFeatures()
      • setDisableFeatures

        public void setDisableFeatures​(String disableFeatures)
        Set of features to disable on the Jackson ObjectMapper. The features should be a name that matches a enum from SerializationFeature, DeserializationFeature, or MapperFeature.
      • enableFeature

        public void enableFeature​(com.fasterxml.jackson.databind.SerializationFeature feature)
      • enableFeature

        public void enableFeature​(com.fasterxml.jackson.databind.DeserializationFeature feature)
      • enableFeature

        public void enableFeature​(com.fasterxml.jackson.databind.MapperFeature feature)
      • disableFeature

        public void disableFeature​(com.fasterxml.jackson.databind.SerializationFeature feature)
      • disableFeature

        public void disableFeature​(com.fasterxml.jackson.databind.DeserializationFeature feature)
      • disableFeature

        public void disableFeature​(com.fasterxml.jackson.databind.MapperFeature feature)
      • doInit

        protected void doInit()
                       throws Exception
        Overrides:
        doInit in class org.apache.camel.support.service.BaseService
        Throws:
        Exception
      • doStart

        protected void doStart()
                        throws Exception
        Overrides:
        doStart in class org.apache.camel.support.service.BaseService
        Throws:
        Exception
      • doStop

        protected void doStop()
                       throws Exception
        Overrides:
        doStop in class org.apache.camel.support.service.BaseService
        Throws:
        Exception
      • getDataFormatName

        public abstract String getDataFormatName()
        Specified by:
        getDataFormatName in interface org.apache.camel.spi.DataFormatName
      • createNewObjectMapper

        protected abstract com.fasterxml.jackson.databind.ObjectMapper createNewObjectMapper()
      • getObjectMapperClass

        protected abstract Class<? extends com.fasterxml.jackson.databind.ObjectMapper> getObjectMapperClass()
      • getDefaultContentType

        protected abstract String getDefaultContentType()