You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ac...@apache.org on 2019/10/30 09:08:16 UTC

[camel] 05/07: CAMEL-14101 - Fixed CS

This is an automated email from the ASF dual-hosted git repository.

acosentino pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/camel.git

commit e75c436ccb3efc347ccc5b62db783a02a0d44a98
Author: Andrea Cosentino <an...@gmail.com>
AuthorDate: Wed Oct 30 09:24:29 2019 +0100

    CAMEL-14101 - Fixed CS
---
 .../camel/component/jackson/JacksonDataFormat.java | 1137 ++++++++++----------
 .../component/jackson/ListJacksonDataFormat.java   |    5 +-
 .../jackson/converter/JacksonTypeConverters.java   |   48 +-
 .../component/jackson/JacksonConcurrentTest.java   |    9 +-
 .../component/jackson/JacksonDataFormatTest.java   |    2 +-
 .../jackson/JacksonJsonDataFormatTest.java         |    2 +-
 .../jackson/JacksonMarshalDateTimezoneTest.java    |    3 +-
 .../jackson/JacksonMarshalUnmarshalListTest.java   |    6 +-
 .../JacksonNotUseDefaultObjectMapperTest.java      |    3 +-
 .../jackson/JacksonObjectListSplitTest.java        |    7 +-
 .../jackson/JacksonObjectMapperRegistryTest.java   |    8 +-
 .../SpringJacksonMarshalUnmarshalListTest.java     |    6 +-
 .../SpringJacksonObjectMapperRegistryTest.java     |    4 +-
 .../camel/component/jackson/TestJAXBPojo.java      |    4 +-
 .../camel/component/jackson/TestOtherPojo.java     |    2 +-
 .../apache/camel/component/jackson/TestPojo.java   |    4 +-
 .../camel/component/jackson/TestPojoView.java      |    6 +-
 .../org/apache/camel/component/jackson/Views.java  |    7 +-
 .../converter/JacksonConversionsPojoTest.java      |    5 +-
 .../converter/JacksonConversionsSimpleTest.java    |    3 +-
 .../jackson/converter/JacksonConversionsTest.java  |    5 +-
 21 files changed, 641 insertions(+), 635 deletions(-)

diff --git a/components/camel-jackson/src/main/java/org/apache/camel/component/jackson/JacksonDataFormat.java b/components/camel-jackson/src/main/java/org/apache/camel/component/jackson/JacksonDataFormat.java
index c205e3b..35f5e4b 100644
--- a/components/camel-jackson/src/main/java/org/apache/camel/component/jackson/JacksonDataFormat.java
+++ b/components/camel-jackson/src/main/java/org/apache/camel/component/jackson/JacksonDataFormat.java
@@ -53,575 +53,572 @@ import org.apache.camel.support.service.ServiceSupport;
 @Dataformat("json-jackson")
 public class JacksonDataFormat extends ServiceSupport implements DataFormat, DataFormatName, CamelContextAware {
 
-	private CamelContext camelContext;
-	private ObjectMapper objectMapper;
-	private boolean useDefaultObjectMapper = true;
-	private Class<? extends Collection> collectionType;
-	private List<Module> modules;
-	private String moduleClassNames;
-	private String moduleRefs;
-	private Class<?> unmarshalType;
-	private Class<?> jsonView;
-	private String include;
-	private boolean prettyPrint;
-	private boolean allowJmsType;
-	private boolean useList;
-	private boolean enableJaxbAnnotationModule;
-	private String enableFeatures;
-	private String disableFeatures;
-	private boolean enableJacksonTypeConverter;
-	private boolean allowUnmarshallType;
-	private boolean contentTypeHeader = true;
-	private TimeZone timezone;
-	private boolean autoDiscoverObjectMapper;
-
-	/**
-	 * Use the default Jackson {@link ObjectMapper} and {@link Object}
-	 */
-	public JacksonDataFormat() {
-		this(Object.class);
-	}
-
-	/**
-	 * Use the default Jackson {@link ObjectMapper} and with a custom unmarshal type
-	 *
-	 * @param unmarshalType the custom unmarshal type
-	 */
-	public JacksonDataFormat(Class<?> unmarshalType) {
-		this(unmarshalType, null);
-	}
-
-	/**
-	 * Use the default Jackson {@link ObjectMapper} and with a custom unmarshal type
-	 * and JSON view
-	 *
-	 * @param unmarshalType the custom unmarshal type
-	 * @param jsonView      marker class to specify properties to be included during
-	 *                      marshalling. See also
-	 *                      http://wiki.fasterxml.com/JacksonJsonViews
-	 */
-	public JacksonDataFormat(Class<?> unmarshalType, Class<?> jsonView) {
-		this(unmarshalType, jsonView, true);
-	}
-
-	/**
-	 * Use the default Jackson {@link ObjectMapper} and with a custom unmarshal type
-	 * and JSON view
-	 *
-	 * @param unmarshalType              the custom unmarshal type
-	 * @param jsonView                   marker class to specify properties to be
-	 *                                   included during marshalling. See also
-	 *                                   http://wiki.fasterxml.com/JacksonJsonViews
-	 * @param enableJaxbAnnotationModule if it is true, will enable the
-	 *                                   JaxbAnnotationModule.
-	 */
-	public JacksonDataFormat(Class<?> unmarshalType, Class<?> jsonView, boolean enableJaxbAnnotationModule) {
-		this.unmarshalType = unmarshalType;
-		this.jsonView = jsonView;
-		this.enableJaxbAnnotationModule = enableJaxbAnnotationModule;
-	}
-
-	/**
-	 * Use a custom Jackson mapper and and unmarshal type
-	 *
-	 * @param mapper        the custom mapper
-	 * @param unmarshalType the custom unmarshal type
-	 */
-	public JacksonDataFormat(ObjectMapper mapper, Class<?> unmarshalType) {
-		this(mapper, unmarshalType, null);
-	}
-
-	/**
-	 * Use a custom Jackson mapper, unmarshal type and JSON view
-	 *
-	 * @param mapper        the custom mapper
-	 * @param unmarshalType the custom unmarshal type
-	 * @param jsonView      marker class to specify properties to be included during
-	 *                      marshalling. See also
-	 *                      http://wiki.fasterxml.com/JacksonJsonViews
-	 */
-	public JacksonDataFormat(ObjectMapper mapper, Class<?> unmarshalType, Class<?> jsonView) {
-		this.objectMapper = mapper;
-		this.unmarshalType = unmarshalType;
-		this.jsonView = jsonView;
-	}
-
-	@Override
-	public String getDataFormatName() {
-		return "json-jackson";
-	}
-
-	@Override
-	public CamelContext getCamelContext() {
-		return camelContext;
-	}
-
-	@Override
-	public void setCamelContext(CamelContext camelContext) {
-		this.camelContext = camelContext;
-	}
-
-	@Override
-	public void marshal(Exchange exchange, Object graph, OutputStream stream) throws Exception {
-		this.objectMapper.writerWithView(jsonView).writeValue(stream, graph);
-
-		if (contentTypeHeader) {
-			if (exchange.hasOut()) {
-				exchange.getOut().setHeader(Exchange.CONTENT_TYPE, "application/json");
-			} else {
-				exchange.getIn().setHeader(Exchange.CONTENT_TYPE, "application/json");
-			}
-		}
-	}
-
-	@Override
-	public Object unmarshal(Exchange exchange, InputStream stream) throws Exception {
-
-		// is there a header with the unmarshal type?
-		Class<?> clazz = unmarshalType;
-		String type = null;
-		if (allowUnmarshallType) {
-			type = exchange.getIn().getHeader(JacksonConstants.UNMARSHAL_TYPE, String.class);
-		}
-		if (type == null && isAllowJmsType()) {
-			type = exchange.getIn().getHeader("JMSType", String.class);
-		}
-		if (type != null) {
-			clazz = exchange.getContext().getClassResolver().resolveMandatoryClass(type);
-		}
-		if (collectionType != null) {
-			CollectionType collType = objectMapper.getTypeFactory().constructCollectionType(collectionType, clazz);
-			return this.objectMapper.readValue(stream, collType);
-		} else {
-			return this.objectMapper.readValue(stream, clazz);
-		}
-	}
-
-	// Properties
-	// -------------------------------------------------------------------------
-
-	public ObjectMapper getObjectMapper() {
-		return this.objectMapper;
-	}
-
-	public void setObjectMapper(ObjectMapper objectMapper) {
-		this.objectMapper = objectMapper;
-	}
-
-	public boolean isUseDefaultObjectMapper() {
-		return useDefaultObjectMapper;
-	}
-
-	public void setUseDefaultObjectMapper(boolean useDefaultObjectMapper) {
-		this.useDefaultObjectMapper = useDefaultObjectMapper;
-	}
-
-	public Class<?> getUnmarshalType() {
-		return this.unmarshalType;
-	}
-
-	public void setUnmarshalType(Class<?> unmarshalType) {
-		this.unmarshalType = unmarshalType;
-	}
-
-	public Class<? extends Collection> getCollectionType() {
-		return collectionType;
-	}
-
-	public void setCollectionType(Class<? extends Collection> collectionType) {
-		this.collectionType = collectionType;
-	}
-
-	public Class<?> getJsonView() {
-		return jsonView;
-	}
-
-	public void setJsonView(Class<?> jsonView) {
-		this.jsonView = jsonView;
-	}
-
-	public String getInclude() {
-		return include;
-	}
-
-	public void setInclude(String include) {
-		this.include = include;
-	}
-
-	public boolean isAllowJmsType() {
-		return allowJmsType;
-	}
-
-	public boolean isPrettyPrint() {
-		return prettyPrint;
-	}
-
-	public void setPrettyPrint(boolean prettyPrint) {
-		this.prettyPrint = prettyPrint;
-	}
-
-	public boolean isUseList() {
-		return useList;
-	}
-
-	public void setUseList(boolean useList) {
-		this.useList = useList;
-	}
-
-	public boolean isEnableJaxbAnnotationModule() {
-		return enableJaxbAnnotationModule;
-	}
-
-	public void setEnableJaxbAnnotationModule(boolean enableJaxbAnnotationModule) {
-		this.enableJaxbAnnotationModule = enableJaxbAnnotationModule;
-	}
-
-	public List<Module> getModules() {
-		return modules;
-	}
-
-	/**
-	 * To use custom Jackson {@link Module}s
-	 */
-	public void setModules(List<Module> modules) {
-		this.modules = modules;
-	}
-
-	public String getModuleClassNames() {
-		return moduleClassNames;
-	}
-
-	/**
-	 * To use the custom Jackson module
-	 */
-	public void addModule(Module module) {
-		if (this.modules == null) {
-			this.modules = new ArrayList<>();
-		}
-		this.modules.add(module);
-	}
-
-	/**
-	 * To use custom Jackson {@link Module}s specified as a String with FQN class
-	 * names. Multiple classes can be separated by comma.
-	 */
-	public void setModuleClassNames(String moduleClassNames) {
-		this.moduleClassNames = moduleClassNames;
-	}
-
-	public String getModuleRefs() {
-		return moduleRefs;
-	}
-
-	/**
-	 * To use custom Jackson modules referred from the Camel registry. Multiple
-	 * modules can be separated by comma.
-	 */
-	public void setModuleRefs(String moduleRefs) {
-		this.moduleRefs = moduleRefs;
-	}
-
-	/**
-	 * Uses {@link java.util.ArrayList} when unmarshalling.
-	 */
-	public void useList() {
-		setCollectionType(ArrayList.class);
-	}
-
-	/**
-	 * Uses {@link java.util.HashMap} when unmarshalling.
-	 */
-	public void useMap() {
-		setCollectionType(null);
-		setUnmarshalType(HashMap.class);
-	}
-
-	/**
-	 * Allows jackson to use the <tt>JMSType</tt> header as an indicator what the
-	 * classname is for unmarshaling json content to POJO
-	 * <p/>
-	 * By default this option is <tt>false</tt>.
-	 */
-	public void setAllowJmsType(boolean allowJmsType) {
-		this.allowJmsType = allowJmsType;
-	}
-
-	public boolean isEnableJacksonTypeConverter() {
-		return enableJacksonTypeConverter;
-	}
-
-	/**
-	 * If enabled then Jackson is allowed to attempt to be used during Camels
-	 * <a href="https://camel.apache.org/type-converter.html">type converter</a> as
-	 * a {@link org.apache.camel.FallbackConverter} that attempts to convert POJOs
-	 * to/from {@link Map}/{@link List} types.
-	 * <p/>
-	 * This should only be enabled when desired to be used.
-	 */
-	public void setEnableJacksonTypeConverter(boolean enableJacksonTypeConverter) {
-		this.enableJacksonTypeConverter = enableJacksonTypeConverter;
-	}
-
-	public boolean isAllowUnmarshallType() {
-		return allowUnmarshallType;
-	}
-
-	/**
-	 * If enabled then Jackson is allowed to attempt to use the
-	 * CamelJacksonUnmarshalType header during the unmarshalling.
-	 * <p/>
-	 * This should only be enabled when desired to be used.
-	 */
-	public void setAllowUnmarshallType(boolean allowJacksonUnmarshallType) {
-		this.allowUnmarshallType = allowJacksonUnmarshallType;
-	}
-
-	public boolean isContentTypeHeader() {
-		return contentTypeHeader;
-	}
-
-	/**
-	 * If enabled then Jackson will set the Content-Type header to
-	 * <tt>application/json</tt> when marshalling.
-	 */
-	public void setContentTypeHeader(boolean contentTypeHeader) {
-		this.contentTypeHeader = contentTypeHeader;
-	}
-
-	public TimeZone getTimezone() {
-		return timezone;
-	}
-
-	/**
-	 * If set then Jackson will use the Timezone when marshalling/unmarshalling.
-	 */
-	public void setTimezone(TimeZone timezone) {
-		this.timezone = timezone;
-	}
-
-	public boolean isAutoDiscoverObjectMapper() {
-		return autoDiscoverObjectMapper;
-	}
-
-	/**
-	 * If set to true then Jackson will lookup for an objectMapper into the registry
-	 */
-	public void setAutoDiscoverObjectMapper(boolean autoDiscoverObjectMapper) {
-		this.autoDiscoverObjectMapper = autoDiscoverObjectMapper;
-	}
-
-	public String getEnableFeatures() {
-		return enableFeatures;
-	}
-
-	/**
-	 * Set of features to enable on the Jackson {@link ObjectMapper}. The features
-	 * should be a name that matches a enum from {@link SerializationFeature},
-	 * {@link DeserializationFeature}, or {@link MapperFeature}.
-	 */
-	public void setEnableFeatures(String enableFeatures) {
-		this.enableFeatures = enableFeatures;
-	}
-
-	public String getDisableFeatures() {
-		return disableFeatures;
-	}
-
-	/**
-	 * Set of features to disable on the Jackson {@link ObjectMapper}. The features
-	 * should be a name that matches a enum from {@link SerializationFeature},
-	 * {@link DeserializationFeature}, or {@link MapperFeature}.
-	 */
-	public void setDisableFeatures(String disableFeatures) {
-		this.disableFeatures = disableFeatures;
-	}
-
-	public void enableFeature(SerializationFeature feature) {
-		if (enableFeatures == null) {
-			enableFeatures = feature.name();
-		} else {
-			enableFeatures += "," + feature.name();
-		}
-	}
-
-	public void enableFeature(DeserializationFeature feature) {
-		if (enableFeatures == null) {
-			enableFeatures = feature.name();
-		} else {
-			enableFeatures += "," + feature.name();
-		}
-	}
-
-	public void enableFeature(MapperFeature feature) {
-		if (enableFeatures == null) {
-			enableFeatures = feature.name();
-		} else {
-			enableFeatures += "," + feature.name();
-		}
-	}
-
-	public void disableFeature(SerializationFeature feature) {
-		if (disableFeatures == null) {
-			disableFeatures = feature.name();
-		} else {
-			disableFeatures += "," + feature.name();
-		}
-	}
-
-	public void disableFeature(DeserializationFeature feature) {
-		if (disableFeatures == null) {
-			disableFeatures = feature.name();
-		} else {
-			disableFeatures += "," + feature.name();
-		}
-	}
-
-	public void disableFeature(MapperFeature feature) {
-		if (disableFeatures == null) {
-			disableFeatures = feature.name();
-		} else {
-			disableFeatures += "," + feature.name();
-		}
-	}
-
-	@Override
-	protected void doStart() throws Exception {
-		boolean objectMapperFoundRegistry = false;
-		if (objectMapper == null) {
-			// lookup if there is a single default mapper we can use
-			if (useDefaultObjectMapper && camelContext != null) {
-				if (isAutoDiscoverObjectMapper()) {
-					Set<ObjectMapper> set = camelContext.getRegistry().findByType(ObjectMapper.class);
-					if (set.size() == 1) {
-						objectMapper = set.iterator().next();
-						log.info("Found single ObjectMapper in Registry to use: {}", objectMapper);
-						objectMapperFoundRegistry = true;
-					} else if (set.size() > 1) {
-						log.debug(
-								"Found {} ObjectMapper in Registry cannot use as default as there are more than one instance.",
-								set.size());
-					}
-				} else {
-					log.warn("The option autoDiscoverObjectMapper is set to false, Camel won't search in the registry");
-				}
-			}
-			if (objectMapper == null) {
-				objectMapper = new ObjectMapper();
-				log.debug("Creating new ObjectMapper to use: {}", objectMapper);
-			}
-		}
-
-		if (!objectMapperFoundRegistry) {
-			if (enableJaxbAnnotationModule) {
-				// Enables JAXB processing
-				JaxbAnnotationModule module = new JaxbAnnotationModule();
-				log.debug("Registering JaxbAnnotationModule: {}", module);
-				objectMapper.registerModule(module);
-			}
-
-			if (useList) {
-				setCollectionType(ArrayList.class);
-			}
-			if (include != null) {
-				JsonInclude.Include inc = getCamelContext().getTypeConverter()
-						.mandatoryConvertTo(JsonInclude.Include.class, include);
-				objectMapper.setSerializationInclusion(inc);
-			}
-			if (prettyPrint) {
-				objectMapper.enable(SerializationFeature.INDENT_OUTPUT);
-			}
-
-			if (enableFeatures != null) {
-				Iterator<?> it = ObjectHelper.createIterator(enableFeatures);
-				while (it.hasNext()) {
-					String enable = it.next().toString();
-					// it can be different kind
-					SerializationFeature sf = getCamelContext().getTypeConverter()
-							.tryConvertTo(SerializationFeature.class, enable);
-					if (sf != null) {
-						objectMapper.enable(sf);
-						continue;
-					}
-					DeserializationFeature df = getCamelContext().getTypeConverter()
-							.tryConvertTo(DeserializationFeature.class, enable);
-					if (df != null) {
-						objectMapper.enable(df);
-						continue;
-					}
-					MapperFeature mf = getCamelContext().getTypeConverter().tryConvertTo(MapperFeature.class, enable);
-					if (mf != null) {
-						objectMapper.enable(mf);
-						continue;
-					}
-					throw new IllegalArgumentException("Enable feature: " + enable
-							+ " cannot be converted to an accepted enum of types [SerializationFeature,DeserializationFeature,MapperFeature]");
-				}
-			}
-			if (disableFeatures != null) {
-				Iterator<?> it = ObjectHelper.createIterator(disableFeatures);
-				while (it.hasNext()) {
-					String disable = it.next().toString();
-					// it can be different kind
-					SerializationFeature sf = getCamelContext().getTypeConverter()
-							.tryConvertTo(SerializationFeature.class, disable);
-					if (sf != null) {
-						objectMapper.disable(sf);
-						continue;
-					}
-					DeserializationFeature df = getCamelContext().getTypeConverter()
-							.tryConvertTo(DeserializationFeature.class, disable);
-					if (df != null) {
-						objectMapper.disable(df);
-						continue;
-					}
-					MapperFeature mf = getCamelContext().getTypeConverter().tryConvertTo(MapperFeature.class, disable);
-					if (mf != null) {
-						objectMapper.disable(mf);
-						continue;
-					}
-					throw new IllegalArgumentException("Disable feature: " + disable
-							+ " cannot be converted to an accepted enum of types [SerializationFeature,DeserializationFeature,MapperFeature]");
-				}
-			}
-
-			if (modules != null) {
-				for (Module module : modules) {
-					log.debug("Registering module: {}", module);
-					objectMapper.registerModules(module);
-				}
-			}
-			if (moduleClassNames != null) {
-				Iterable<?> it = ObjectHelper.createIterable(moduleClassNames);
-				for (Object o : it) {
-					String name = o.toString();
-					Class<Module> clazz = camelContext.getClassResolver().resolveMandatoryClass(name, Module.class);
-					Module module = camelContext.getInjector().newInstance(clazz);
-					log.debug("Registering module: {} -> {}", name, module);
-					objectMapper.registerModule(module);
-				}
-			}
-			if (moduleRefs != null) {
-				Iterable<?> it = ObjectHelper.createIterable(moduleRefs);
-				for (Object o : it) {
-					String name = o.toString();
-					if (name.startsWith("#")) {
-						name = name.substring(1);
-					}
-					Module module = CamelContextHelper.mandatoryLookup(camelContext, name, Module.class);
-					log.debug("Registering module: {} -> {}", name, module);
-					objectMapper.registerModule(module);
-				}
-			}
-			if (org.apache.camel.util.ObjectHelper.isNotEmpty(timezone)) {
-				log.debug("Setting timezone to Object Mapper: {}", timezone);
-				objectMapper.setTimeZone(timezone);
-			}
-		}
-	}
-
-	@Override
-	protected void doStop() throws Exception {
-		// noop
-	}
+    private CamelContext camelContext;
+    private ObjectMapper objectMapper;
+    private boolean useDefaultObjectMapper = true;
+    private Class<? extends Collection> collectionType;
+    private List<Module> modules;
+    private String moduleClassNames;
+    private String moduleRefs;
+    private Class<?> unmarshalType;
+    private Class<?> jsonView;
+    private String include;
+    private boolean prettyPrint;
+    private boolean allowJmsType;
+    private boolean useList;
+    private boolean enableJaxbAnnotationModule;
+    private String enableFeatures;
+    private String disableFeatures;
+    private boolean enableJacksonTypeConverter;
+    private boolean allowUnmarshallType;
+    private boolean contentTypeHeader = true;
+    private TimeZone timezone;
+    private boolean autoDiscoverObjectMapper;
+
+    /**
+     * Use the default Jackson {@link ObjectMapper} and {@link Object}
+     */
+    public JacksonDataFormat() {
+        this(Object.class);
+    }
+
+    /**
+     * Use the default Jackson {@link ObjectMapper} and with a custom unmarshal
+     * type
+     *
+     * @param unmarshalType the custom unmarshal type
+     */
+    public JacksonDataFormat(Class<?> unmarshalType) {
+        this(unmarshalType, null);
+    }
+
+    /**
+     * Use the default Jackson {@link ObjectMapper} and with a custom unmarshal
+     * type and JSON view
+     *
+     * @param unmarshalType the custom unmarshal type
+     * @param jsonView marker class to specify properties to be included during
+     *            marshalling. See also
+     *            http://wiki.fasterxml.com/JacksonJsonViews
+     */
+    public JacksonDataFormat(Class<?> unmarshalType, Class<?> jsonView) {
+        this(unmarshalType, jsonView, true);
+    }
+
+    /**
+     * Use the default Jackson {@link ObjectMapper} and with a custom unmarshal
+     * type and JSON view
+     *
+     * @param unmarshalType the custom unmarshal type
+     * @param jsonView marker class to specify properties to be included during
+     *            marshalling. See also
+     *            http://wiki.fasterxml.com/JacksonJsonViews
+     * @param enableJaxbAnnotationModule if it is true, will enable the
+     *            JaxbAnnotationModule.
+     */
+    public JacksonDataFormat(Class<?> unmarshalType, Class<?> jsonView, boolean enableJaxbAnnotationModule) {
+        this.unmarshalType = unmarshalType;
+        this.jsonView = jsonView;
+        this.enableJaxbAnnotationModule = enableJaxbAnnotationModule;
+    }
+
+    /**
+     * Use a custom Jackson mapper and and unmarshal type
+     *
+     * @param mapper the custom mapper
+     * @param unmarshalType the custom unmarshal type
+     */
+    public JacksonDataFormat(ObjectMapper mapper, Class<?> unmarshalType) {
+        this(mapper, unmarshalType, null);
+    }
+
+    /**
+     * Use a custom Jackson mapper, unmarshal type and JSON view
+     *
+     * @param mapper the custom mapper
+     * @param unmarshalType the custom unmarshal type
+     * @param jsonView marker class to specify properties to be included during
+     *            marshalling. See also
+     *            http://wiki.fasterxml.com/JacksonJsonViews
+     */
+    public JacksonDataFormat(ObjectMapper mapper, Class<?> unmarshalType, Class<?> jsonView) {
+        this.objectMapper = mapper;
+        this.unmarshalType = unmarshalType;
+        this.jsonView = jsonView;
+    }
+
+    @Override
+    public String getDataFormatName() {
+        return "json-jackson";
+    }
+
+    @Override
+    public CamelContext getCamelContext() {
+        return camelContext;
+    }
+
+    @Override
+    public void setCamelContext(CamelContext camelContext) {
+        this.camelContext = camelContext;
+    }
+
+    @Override
+    public void marshal(Exchange exchange, Object graph, OutputStream stream) throws Exception {
+        this.objectMapper.writerWithView(jsonView).writeValue(stream, graph);
+
+        if (contentTypeHeader) {
+            if (exchange.hasOut()) {
+                exchange.getOut().setHeader(Exchange.CONTENT_TYPE, "application/json");
+            } else {
+                exchange.getIn().setHeader(Exchange.CONTENT_TYPE, "application/json");
+            }
+        }
+    }
+
+    @Override
+    public Object unmarshal(Exchange exchange, InputStream stream) throws Exception {
+
+        // is there a header with the unmarshal type?
+        Class<?> clazz = unmarshalType;
+        String type = null;
+        if (allowUnmarshallType) {
+            type = exchange.getIn().getHeader(JacksonConstants.UNMARSHAL_TYPE, String.class);
+        }
+        if (type == null && isAllowJmsType()) {
+            type = exchange.getIn().getHeader("JMSType", String.class);
+        }
+        if (type != null) {
+            clazz = exchange.getContext().getClassResolver().resolveMandatoryClass(type);
+        }
+        if (collectionType != null) {
+            CollectionType collType = objectMapper.getTypeFactory().constructCollectionType(collectionType, clazz);
+            return this.objectMapper.readValue(stream, collType);
+        } else {
+            return this.objectMapper.readValue(stream, clazz);
+        }
+    }
+
+    // Properties
+    // -------------------------------------------------------------------------
+
+    public ObjectMapper getObjectMapper() {
+        return this.objectMapper;
+    }
+
+    public void setObjectMapper(ObjectMapper objectMapper) {
+        this.objectMapper = objectMapper;
+    }
+
+    public boolean isUseDefaultObjectMapper() {
+        return useDefaultObjectMapper;
+    }
+
+    public void setUseDefaultObjectMapper(boolean useDefaultObjectMapper) {
+        this.useDefaultObjectMapper = useDefaultObjectMapper;
+    }
+
+    public Class<?> getUnmarshalType() {
+        return this.unmarshalType;
+    }
+
+    public void setUnmarshalType(Class<?> unmarshalType) {
+        this.unmarshalType = unmarshalType;
+    }
+
+    public Class<? extends Collection> getCollectionType() {
+        return collectionType;
+    }
+
+    public void setCollectionType(Class<? extends Collection> collectionType) {
+        this.collectionType = collectionType;
+    }
+
+    public Class<?> getJsonView() {
+        return jsonView;
+    }
+
+    public void setJsonView(Class<?> jsonView) {
+        this.jsonView = jsonView;
+    }
+
+    public String getInclude() {
+        return include;
+    }
+
+    public void setInclude(String include) {
+        this.include = include;
+    }
+
+    public boolean isAllowJmsType() {
+        return allowJmsType;
+    }
+
+    public boolean isPrettyPrint() {
+        return prettyPrint;
+    }
+
+    public void setPrettyPrint(boolean prettyPrint) {
+        this.prettyPrint = prettyPrint;
+    }
+
+    public boolean isUseList() {
+        return useList;
+    }
+
+    public void setUseList(boolean useList) {
+        this.useList = useList;
+    }
+
+    public boolean isEnableJaxbAnnotationModule() {
+        return enableJaxbAnnotationModule;
+    }
+
+    public void setEnableJaxbAnnotationModule(boolean enableJaxbAnnotationModule) {
+        this.enableJaxbAnnotationModule = enableJaxbAnnotationModule;
+    }
+
+    public List<Module> getModules() {
+        return modules;
+    }
+
+    /**
+     * To use custom Jackson {@link Module}s
+     */
+    public void setModules(List<Module> modules) {
+        this.modules = modules;
+    }
+
+    public String getModuleClassNames() {
+        return moduleClassNames;
+    }
+
+    /**
+     * To use the custom Jackson module
+     */
+    public void addModule(Module module) {
+        if (this.modules == null) {
+            this.modules = new ArrayList<>();
+        }
+        this.modules.add(module);
+    }
+
+    /**
+     * To use custom Jackson {@link Module}s specified as a String with FQN
+     * class names. Multiple classes can be separated by comma.
+     */
+    public void setModuleClassNames(String moduleClassNames) {
+        this.moduleClassNames = moduleClassNames;
+    }
+
+    public String getModuleRefs() {
+        return moduleRefs;
+    }
+
+    /**
+     * To use custom Jackson modules referred from the Camel registry. Multiple
+     * modules can be separated by comma.
+     */
+    public void setModuleRefs(String moduleRefs) {
+        this.moduleRefs = moduleRefs;
+    }
+
+    /**
+     * Uses {@link java.util.ArrayList} when unmarshalling.
+     */
+    public void useList() {
+        setCollectionType(ArrayList.class);
+    }
+
+    /**
+     * Uses {@link java.util.HashMap} when unmarshalling.
+     */
+    public void useMap() {
+        setCollectionType(null);
+        setUnmarshalType(HashMap.class);
+    }
+
+    /**
+     * Allows jackson to use the <tt>JMSType</tt> header as an indicator what
+     * the classname is for unmarshaling json content to POJO
+     * <p/>
+     * By default this option is <tt>false</tt>.
+     */
+    public void setAllowJmsType(boolean allowJmsType) {
+        this.allowJmsType = allowJmsType;
+    }
+
+    public boolean isEnableJacksonTypeConverter() {
+        return enableJacksonTypeConverter;
+    }
+
+    /**
+     * If enabled then Jackson is allowed to attempt to be used during Camels
+     * <a href="https://camel.apache.org/type-converter.html">type converter</a>
+     * as a {@link org.apache.camel.FallbackConverter} that attempts to convert
+     * POJOs to/from {@link Map}/{@link List} types.
+     * <p/>
+     * This should only be enabled when desired to be used.
+     */
+    public void setEnableJacksonTypeConverter(boolean enableJacksonTypeConverter) {
+        this.enableJacksonTypeConverter = enableJacksonTypeConverter;
+    }
+
+    public boolean isAllowUnmarshallType() {
+        return allowUnmarshallType;
+    }
+
+    /**
+     * If enabled then Jackson is allowed to attempt to use the
+     * CamelJacksonUnmarshalType header during the unmarshalling.
+     * <p/>
+     * This should only be enabled when desired to be used.
+     */
+    public void setAllowUnmarshallType(boolean allowJacksonUnmarshallType) {
+        this.allowUnmarshallType = allowJacksonUnmarshallType;
+    }
+
+    public boolean isContentTypeHeader() {
+        return contentTypeHeader;
+    }
+
+    /**
+     * If enabled then Jackson will set the Content-Type header to
+     * <tt>application/json</tt> when marshalling.
+     */
+    public void setContentTypeHeader(boolean contentTypeHeader) {
+        this.contentTypeHeader = contentTypeHeader;
+    }
+
+    public TimeZone getTimezone() {
+        return timezone;
+    }
+
+    /**
+     * If set then Jackson will use the Timezone when marshalling/unmarshalling.
+     */
+    public void setTimezone(TimeZone timezone) {
+        this.timezone = timezone;
+    }
+
+    public boolean isAutoDiscoverObjectMapper() {
+        return autoDiscoverObjectMapper;
+    }
+
+    /**
+     * If set to true then Jackson will lookup for an objectMapper into the
+     * registry
+     */
+    public void setAutoDiscoverObjectMapper(boolean autoDiscoverObjectMapper) {
+        this.autoDiscoverObjectMapper = autoDiscoverObjectMapper;
+    }
+
+    public String getEnableFeatures() {
+        return enableFeatures;
+    }
+
+    /**
+     * Set of features to enable on the Jackson {@link ObjectMapper}. The
+     * features should be a name that matches a enum from
+     * {@link SerializationFeature}, {@link DeserializationFeature}, or
+     * {@link MapperFeature}.
+     */
+    public void setEnableFeatures(String enableFeatures) {
+        this.enableFeatures = enableFeatures;
+    }
+
+    public String getDisableFeatures() {
+        return disableFeatures;
+    }
+
+    /**
+     * Set of features to disable on the Jackson {@link ObjectMapper}. The
+     * features should be a name that matches a enum from
+     * {@link SerializationFeature}, {@link DeserializationFeature}, or
+     * {@link MapperFeature}.
+     */
+    public void setDisableFeatures(String disableFeatures) {
+        this.disableFeatures = disableFeatures;
+    }
+
+    public void enableFeature(SerializationFeature feature) {
+        if (enableFeatures == null) {
+            enableFeatures = feature.name();
+        } else {
+            enableFeatures += "," + feature.name();
+        }
+    }
+
+    public void enableFeature(DeserializationFeature feature) {
+        if (enableFeatures == null) {
+            enableFeatures = feature.name();
+        } else {
+            enableFeatures += "," + feature.name();
+        }
+    }
+
+    public void enableFeature(MapperFeature feature) {
+        if (enableFeatures == null) {
+            enableFeatures = feature.name();
+        } else {
+            enableFeatures += "," + feature.name();
+        }
+    }
+
+    public void disableFeature(SerializationFeature feature) {
+        if (disableFeatures == null) {
+            disableFeatures = feature.name();
+        } else {
+            disableFeatures += "," + feature.name();
+        }
+    }
+
+    public void disableFeature(DeserializationFeature feature) {
+        if (disableFeatures == null) {
+            disableFeatures = feature.name();
+        } else {
+            disableFeatures += "," + feature.name();
+        }
+    }
+
+    public void disableFeature(MapperFeature feature) {
+        if (disableFeatures == null) {
+            disableFeatures = feature.name();
+        } else {
+            disableFeatures += "," + feature.name();
+        }
+    }
+
+    @Override
+    protected void doStart() throws Exception {
+        boolean objectMapperFoundRegistry = false;
+        if (objectMapper == null) {
+            // lookup if there is a single default mapper we can use
+            if (useDefaultObjectMapper && camelContext != null) {
+                if (isAutoDiscoverObjectMapper()) {
+                    Set<ObjectMapper> set = camelContext.getRegistry().findByType(ObjectMapper.class);
+                    if (set.size() == 1) {
+                        objectMapper = set.iterator().next();
+                        log.info("Found single ObjectMapper in Registry to use: {}", objectMapper);
+                        objectMapperFoundRegistry = true;
+                    } else if (set.size() > 1) {
+                        log.debug("Found {} ObjectMapper in Registry cannot use as default as there are more than one instance.", set.size());
+                    }
+                } else {
+                    log.warn("The option autoDiscoverObjectMapper is set to false, Camel won't search in the registry");
+                }
+            }
+            if (objectMapper == null) {
+                objectMapper = new ObjectMapper();
+                log.debug("Creating new ObjectMapper to use: {}", objectMapper);
+            }
+        }
+
+        if (!objectMapperFoundRegistry) {
+            if (enableJaxbAnnotationModule) {
+                // Enables JAXB processing
+                JaxbAnnotationModule module = new JaxbAnnotationModule();
+                log.debug("Registering JaxbAnnotationModule: {}", module);
+                objectMapper.registerModule(module);
+            }
+
+            if (useList) {
+                setCollectionType(ArrayList.class);
+            }
+            if (include != null) {
+                JsonInclude.Include inc = getCamelContext().getTypeConverter().mandatoryConvertTo(JsonInclude.Include.class, include);
+                objectMapper.setSerializationInclusion(inc);
+            }
+            if (prettyPrint) {
+                objectMapper.enable(SerializationFeature.INDENT_OUTPUT);
+            }
+
+            if (enableFeatures != null) {
+                Iterator<?> it = ObjectHelper.createIterator(enableFeatures);
+                while (it.hasNext()) {
+                    String enable = it.next().toString();
+                    // it can be different kind
+                    SerializationFeature sf = getCamelContext().getTypeConverter().tryConvertTo(SerializationFeature.class, enable);
+                    if (sf != null) {
+                        objectMapper.enable(sf);
+                        continue;
+                    }
+                    DeserializationFeature df = getCamelContext().getTypeConverter().tryConvertTo(DeserializationFeature.class, enable);
+                    if (df != null) {
+                        objectMapper.enable(df);
+                        continue;
+                    }
+                    MapperFeature mf = getCamelContext().getTypeConverter().tryConvertTo(MapperFeature.class, enable);
+                    if (mf != null) {
+                        objectMapper.enable(mf);
+                        continue;
+                    }
+                    throw new IllegalArgumentException("Enable feature: " + enable
+                                                       + " cannot be converted to an accepted enum of types [SerializationFeature,DeserializationFeature,MapperFeature]");
+                }
+            }
+            if (disableFeatures != null) {
+                Iterator<?> it = ObjectHelper.createIterator(disableFeatures);
+                while (it.hasNext()) {
+                    String disable = it.next().toString();
+                    // it can be different kind
+                    SerializationFeature sf = getCamelContext().getTypeConverter().tryConvertTo(SerializationFeature.class, disable);
+                    if (sf != null) {
+                        objectMapper.disable(sf);
+                        continue;
+                    }
+                    DeserializationFeature df = getCamelContext().getTypeConverter().tryConvertTo(DeserializationFeature.class, disable);
+                    if (df != null) {
+                        objectMapper.disable(df);
+                        continue;
+                    }
+                    MapperFeature mf = getCamelContext().getTypeConverter().tryConvertTo(MapperFeature.class, disable);
+                    if (mf != null) {
+                        objectMapper.disable(mf);
+                        continue;
+                    }
+                    throw new IllegalArgumentException("Disable feature: " + disable
+                                                       + " cannot be converted to an accepted enum of types [SerializationFeature,DeserializationFeature,MapperFeature]");
+                }
+            }
+
+            if (modules != null) {
+                for (Module module : modules) {
+                    log.debug("Registering module: {}", module);
+                    objectMapper.registerModules(module);
+                }
+            }
+            if (moduleClassNames != null) {
+                Iterable<?> it = ObjectHelper.createIterable(moduleClassNames);
+                for (Object o : it) {
+                    String name = o.toString();
+                    Class<Module> clazz = camelContext.getClassResolver().resolveMandatoryClass(name, Module.class);
+                    Module module = camelContext.getInjector().newInstance(clazz);
+                    log.debug("Registering module: {} -> {}", name, module);
+                    objectMapper.registerModule(module);
+                }
+            }
+            if (moduleRefs != null) {
+                Iterable<?> it = ObjectHelper.createIterable(moduleRefs);
+                for (Object o : it) {
+                    String name = o.toString();
+                    if (name.startsWith("#")) {
+                        name = name.substring(1);
+                    }
+                    Module module = CamelContextHelper.mandatoryLookup(camelContext, name, Module.class);
+                    log.debug("Registering module: {} -> {}", name, module);
+                    objectMapper.registerModule(module);
+                }
+            }
+            if (org.apache.camel.util.ObjectHelper.isNotEmpty(timezone)) {
+                log.debug("Setting timezone to Object Mapper: {}", timezone);
+                objectMapper.setTimeZone(timezone);
+            }
+        }
+    }
+
+    @Override
+    protected void doStop() throws Exception {
+        // noop
+    }
 
 }
diff --git a/components/camel-jackson/src/main/java/org/apache/camel/component/jackson/ListJacksonDataFormat.java b/components/camel-jackson/src/main/java/org/apache/camel/component/jackson/ListJacksonDataFormat.java
index 85bac9e..b3e015a 100644
--- a/components/camel-jackson/src/main/java/org/apache/camel/component/jackson/ListJacksonDataFormat.java
+++ b/components/camel-jackson/src/main/java/org/apache/camel/component/jackson/ListJacksonDataFormat.java
@@ -19,7 +19,8 @@ package org.apache.camel.component.jackson;
 import com.fasterxml.jackson.databind.ObjectMapper;
 
 /**
- * A {@link org.apache.camel.component.jackson.JacksonDataFormat} that is using a list
+ * A {@link org.apache.camel.component.jackson.JacksonDataFormat} that is using
+ * a list
  */
 public class ListJacksonDataFormat extends JacksonDataFormat {
 
@@ -36,7 +37,7 @@ public class ListJacksonDataFormat extends JacksonDataFormat {
         super(unmarshalType, jsonView);
         useList();
     }
-    
+
     public ListJacksonDataFormat(Class<?> unmarshalType, Class<?> jsonView, boolean enableJaxbAnnotationModule) {
         super(unmarshalType, jsonView, enableJaxbAnnotationModule);
         useList();
diff --git a/components/camel-jackson/src/main/java/org/apache/camel/component/jackson/converter/JacksonTypeConverters.java b/components/camel-jackson/src/main/java/org/apache/camel/component/jackson/converter/JacksonTypeConverters.java
index fe90ec5..f906d11 100644
--- a/components/camel-jackson/src/main/java/org/apache/camel/component/jackson/converter/JacksonTypeConverters.java
+++ b/components/camel-jackson/src/main/java/org/apache/camel/component/jackson/converter/JacksonTypeConverters.java
@@ -31,16 +31,19 @@ import org.apache.camel.spi.Registry;
 import org.apache.camel.spi.TypeConverterRegistry;
 
 /**
- * Jackson {@link org.apache.camel.TypeConverter} that allows converting json to/from POJOs and other types.
- * <br/>
+ * Jackson {@link org.apache.camel.TypeConverter} that allows converting json
+ * to/from POJOs and other types. <br/>
  * This implementation uses a fallback converter.
  * <p/>
  * The converter is disabled by default. To enable then set the property
- * {@link JacksonConstants#ENABLE_TYPE_CONVERTER} to <tt>true</tt> on {@link CamelContext#getGlobalOptions()}.
- * <br/>
- * The option {@link JacksonConstants#TYPE_CONVERTER_TO_POJO} can be used to allow converting to POJO types. By
- * default the converter only attempts to convert to primitive types such as String and numbers. To convert to any kind, then
- * enable this by setting {@link JacksonConstants#TYPE_CONVERTER_TO_POJO} to <tt>true</tt> on {@link CamelContext#getGlobalOptions()}.
+ * {@link JacksonConstants#ENABLE_TYPE_CONVERTER} to <tt>true</tt> on
+ * {@link CamelContext#getGlobalOptions()}. <br/>
+ * The option {@link JacksonConstants#TYPE_CONVERTER_TO_POJO} can be used to
+ * allow converting to POJO types. By default the converter only attempts to
+ * convert to primitive types such as String and numbers. To convert to any
+ * kind, then enable this by setting
+ * {@link JacksonConstants#TYPE_CONVERTER_TO_POJO} to <tt>true</tt> on
+ * {@link CamelContext#getGlobalOptions()}.
  */
 @Converter(generateLoader = true)
 public final class JacksonTypeConverters {
@@ -52,7 +55,8 @@ public final class JacksonTypeConverters {
 
     public JacksonTypeConverters() {
         defaultMapper = new ObjectMapper();
-        // Enables JAXB processing so we can easily convert JAXB annotated pojos also
+        // Enables JAXB processing so we can easily convert JAXB annotated pojos
+        // also
         JaxbAnnotationModule module = new JaxbAnnotationModule();
         defaultMapper.registerModule(module);
     }
@@ -90,9 +94,11 @@ public final class JacksonTypeConverters {
         if (exchange != null) {
             ObjectMapper mapper = resolveObjectMapper(exchange.getContext().getRegistry());
 
-            // favor use write/read operations as they are higher level than the convertValue
+            // favor use write/read operations as they are higher level than the
+            // convertValue
 
-            // if we want to convert to a String or byte[] then use write operation
+            // if we want to convert to a String or byte[] then use write
+            // operation
             if (String.class.isAssignableFrom(type)) {
                 String out = mapper.writeValueAsString(value);
                 return type.cast(out);
@@ -100,17 +106,18 @@ public final class JacksonTypeConverters {
                 byte[] out = mapper.writeValueAsBytes(value);
                 return type.cast(out);
             } else if (mapper.canSerialize(type) && !Enum.class.isAssignableFrom(type)) {
-                // if the source value type is readable by the mapper then use its read operation
+                // if the source value type is readable by the mapper then use
+                // its read operation
                 if (String.class.isAssignableFrom(value.getClass())) {
-                    return mapper.readValue((String) value, type);
+                    return mapper.readValue((String)value, type);
                 } else if (byte[].class.isAssignableFrom(value.getClass())) {
-                    return mapper.readValue((byte[]) value, type);
+                    return mapper.readValue((byte[])value, type);
                 } else if (File.class.isAssignableFrom(value.getClass())) {
-                    return mapper.readValue((File) value, type);
+                    return mapper.readValue((File)value, type);
                 } else if (InputStream.class.isAssignableFrom(value.getClass())) {
-                    return mapper.readValue((InputStream) value, type);
+                    return mapper.readValue((InputStream)value, type);
                 } else if (Reader.class.isAssignableFrom(value.getClass())) {
-                    return mapper.readValue((Reader) value, type);
+                    return mapper.readValue((Reader)value, type);
                 } else {
                     // fallback to generic convert value
                     return mapper.convertValue(value, type);
@@ -123,14 +130,13 @@ public final class JacksonTypeConverters {
     }
 
     /**
-     * Whether the type is NOT a pojo type but only a set of simple types such as String and numbers.
+     * Whether the type is NOT a pojo type but only a set of simple types such
+     * as String and numbers.
      */
     private static boolean isNotPojoType(Class<?> type) {
         boolean isString = String.class.isAssignableFrom(type);
-        boolean isNumber = Number.class.isAssignableFrom(type)
-                || int.class.isAssignableFrom(type) || long.class.isAssignableFrom(type)
-                || short.class.isAssignableFrom(type) || char.class.isAssignableFrom(type)
-                || float.class.isAssignableFrom(type) || double.class.isAssignableFrom(type);
+        boolean isNumber = Number.class.isAssignableFrom(type) || int.class.isAssignableFrom(type) || long.class.isAssignableFrom(type) || short.class.isAssignableFrom(type)
+                           || char.class.isAssignableFrom(type) || float.class.isAssignableFrom(type) || double.class.isAssignableFrom(type);
         return isString || isNumber;
     }
 
diff --git a/components/camel-jackson/src/test/java/org/apache/camel/component/jackson/JacksonConcurrentTest.java b/components/camel-jackson/src/test/java/org/apache/camel/component/jackson/JacksonConcurrentTest.java
index 0803c86..2e0124c 100644
--- a/components/camel-jackson/src/test/java/org/apache/camel/component/jackson/JacksonConcurrentTest.java
+++ b/components/camel-jackson/src/test/java/org/apache/camel/component/jackson/JacksonConcurrentTest.java
@@ -63,14 +63,9 @@ public class JacksonConcurrentTest extends CamelTestSupport {
     protected RouteBuilder createRouteBuilder() {
         return new RouteBuilder() {
             public void configure() {
-                from("direct:start").
-                        marshal().json(JsonLibrary.Jackson).
-                        to("log:marshalled").
-                        to("direct:marshalled");
+                from("direct:start").marshal().json(JsonLibrary.Jackson).to("log:marshalled").to("direct:marshalled");
 
-                from("direct:marshalled").
-                        unmarshal().json(JsonLibrary.Jackson, TestPojo.class).
-                        to("mock:result");
+                from("direct:marshalled").unmarshal().json(JsonLibrary.Jackson, TestPojo.class).to("mock:result");
             }
         };
     }
diff --git a/components/camel-jackson/src/test/java/org/apache/camel/component/jackson/JacksonDataFormatTest.java b/components/camel-jackson/src/test/java/org/apache/camel/component/jackson/JacksonDataFormatTest.java
index 7453c09..08af0d9 100644
--- a/components/camel-jackson/src/test/java/org/apache/camel/component/jackson/JacksonDataFormatTest.java
+++ b/components/camel-jackson/src/test/java/org/apache/camel/component/jackson/JacksonDataFormatTest.java
@@ -54,4 +54,4 @@ public class JacksonDataFormatTest {
 
         assertEquals(expected, unmarshalled);
     }
-}
\ No newline at end of file
+}
diff --git a/components/camel-jackson/src/test/java/org/apache/camel/component/jackson/JacksonJsonDataFormatTest.java b/components/camel-jackson/src/test/java/org/apache/camel/component/jackson/JacksonJsonDataFormatTest.java
index 92aae09..09af454 100644
--- a/components/camel-jackson/src/test/java/org/apache/camel/component/jackson/JacksonJsonDataFormatTest.java
+++ b/components/camel-jackson/src/test/java/org/apache/camel/component/jackson/JacksonJsonDataFormatTest.java
@@ -39,4 +39,4 @@ public class JacksonJsonDataFormatTest extends JacksonMarshalTest {
         };
     }
 
-}
\ No newline at end of file
+}
diff --git a/components/camel-jackson/src/test/java/org/apache/camel/component/jackson/JacksonMarshalDateTimezoneTest.java b/components/camel-jackson/src/test/java/org/apache/camel/component/jackson/JacksonMarshalDateTimezoneTest.java
index 308e995..2805547 100644
--- a/components/camel-jackson/src/test/java/org/apache/camel/component/jackson/JacksonMarshalDateTimezoneTest.java
+++ b/components/camel-jackson/src/test/java/org/apache/camel/component/jackson/JacksonMarshalDateTimezoneTest.java
@@ -25,7 +25,6 @@ import org.apache.camel.component.mock.MockEndpoint;
 import org.apache.camel.test.junit4.CamelTestSupport;
 import org.junit.Test;
 
-
 public class JacksonMarshalDateTimezoneTest extends CamelTestSupport {
 
     @Test
@@ -38,7 +37,7 @@ public class JacksonMarshalDateTimezoneTest extends CamelTestSupport {
         Object marshalled = template.requestBody("direct:in", in.getTime());
         String marshalledAsString = context.getTypeConverter().convertTo(String.class, marshalled);
         assertEquals("1493139610000", marshalledAsString);
-        
+
         mock.expectedMessageCount(1);
 
         mock.assertIsSatisfied();
diff --git a/components/camel-jackson/src/test/java/org/apache/camel/component/jackson/JacksonMarshalUnmarshalListTest.java b/components/camel-jackson/src/test/java/org/apache/camel/component/jackson/JacksonMarshalUnmarshalListTest.java
index 75deece..0544f45 100644
--- a/components/camel-jackson/src/test/java/org/apache/camel/component/jackson/JacksonMarshalUnmarshalListTest.java
+++ b/components/camel-jackson/src/test/java/org/apache/camel/component/jackson/JacksonMarshalUnmarshalListTest.java
@@ -40,9 +40,9 @@ public class JacksonMarshalUnmarshalListTest extends CamelTestSupport {
         assertNotNull(list);
         assertEquals(2, list.size());
 
-        TestPojo pojo = (TestPojo) list.get(0);
+        TestPojo pojo = (TestPojo)list.get(0);
         assertEquals("Camel", pojo.getName());
-        pojo = (TestPojo) list.get(1);
+        pojo = (TestPojo)list.get(1);
         assertEquals("World", pojo.getName());
     }
 
@@ -61,7 +61,7 @@ public class JacksonMarshalUnmarshalListTest extends CamelTestSupport {
         assertNotNull(list);
         assertEquals(1, list.size());
 
-        TestPojo pojo = (TestPojo) list.get(0);
+        TestPojo pojo = (TestPojo)list.get(0);
         assertEquals("Camel", pojo.getName());
     }
 
diff --git a/components/camel-jackson/src/test/java/org/apache/camel/component/jackson/JacksonNotUseDefaultObjectMapperTest.java b/components/camel-jackson/src/test/java/org/apache/camel/component/jackson/JacksonNotUseDefaultObjectMapperTest.java
index 771c0df..d7fc992 100644
--- a/components/camel-jackson/src/test/java/org/apache/camel/component/jackson/JacksonNotUseDefaultObjectMapperTest.java
+++ b/components/camel-jackson/src/test/java/org/apache/camel/component/jackson/JacksonNotUseDefaultObjectMapperTest.java
@@ -15,6 +15,7 @@
  * limitations under the License.
  */
 package org.apache.camel.component.jackson;
+
 import java.util.HashMap;
 import java.util.Map;
 
@@ -30,7 +31,7 @@ import org.junit.Test;
 public class JacksonNotUseDefaultObjectMapperTest extends CamelTestSupport {
 
     private JacksonDataFormat df = new JacksonDataFormat();
-    
+
     @BindToRegistry("myMapper")
     private ObjectMapper objectMapper = new ObjectMapper();
 
diff --git a/components/camel-jackson/src/test/java/org/apache/camel/component/jackson/JacksonObjectListSplitTest.java b/components/camel-jackson/src/test/java/org/apache/camel/component/jackson/JacksonObjectListSplitTest.java
index a558863..fbb4e9a 100644
--- a/components/camel-jackson/src/test/java/org/apache/camel/component/jackson/JacksonObjectListSplitTest.java
+++ b/components/camel-jackson/src/test/java/org/apache/camel/component/jackson/JacksonObjectListSplitTest.java
@@ -36,14 +36,15 @@ public class JacksonObjectListSplitTest extends CamelTestSupport {
         return new RouteBuilder() {
             @Override
             public void configure() throws Exception {
-                // you can specify the pojo class type for unmarshal the jason file
+                // you can specify the pojo class type for unmarshal the jason
+                // file
                 JacksonDataFormat format = new JacksonDataFormat(DummyObject.class);
                 format.useList();
                 from("direct:start").unmarshal(format).split(body()).to("mock:result");
             }
         };
     }
-    
+
     public static class DummyObject {
 
         private String dummy;
@@ -60,4 +61,4 @@ public class JacksonObjectListSplitTest extends CamelTestSupport {
         }
     }
 
-}
\ No newline at end of file
+}
diff --git a/components/camel-jackson/src/test/java/org/apache/camel/component/jackson/JacksonObjectMapperRegistryTest.java b/components/camel-jackson/src/test/java/org/apache/camel/component/jackson/JacksonObjectMapperRegistryTest.java
index fc106ba..d25521f 100644
--- a/components/camel-jackson/src/test/java/org/apache/camel/component/jackson/JacksonObjectMapperRegistryTest.java
+++ b/components/camel-jackson/src/test/java/org/apache/camel/component/jackson/JacksonObjectMapperRegistryTest.java
@@ -32,7 +32,7 @@ import org.junit.Test;
 public class JacksonObjectMapperRegistryTest extends CamelTestSupport {
 
     private JacksonDataFormat df;
-   
+
     @BindToRegistry("myMapper")
     private ObjectMapper objectMapper = new ObjectMapper();
 
@@ -62,9 +62,9 @@ public class JacksonObjectMapperRegistryTest extends CamelTestSupport {
         return new RouteBuilder() {
             @Override
             public void configure() throws Exception {
-            	df = new JacksonDataFormat();
-            	df.setAutoDiscoverObjectMapper(true);
-            	
+                df = new JacksonDataFormat();
+                df.setAutoDiscoverObjectMapper(true);
+
                 from("direct:in").marshal(df);
                 from("direct:back").unmarshal(df).to("mock:reverse");
             }
diff --git a/components/camel-jackson/src/test/java/org/apache/camel/component/jackson/SpringJacksonMarshalUnmarshalListTest.java b/components/camel-jackson/src/test/java/org/apache/camel/component/jackson/SpringJacksonMarshalUnmarshalListTest.java
index 9586439..7923907 100644
--- a/components/camel-jackson/src/test/java/org/apache/camel/component/jackson/SpringJacksonMarshalUnmarshalListTest.java
+++ b/components/camel-jackson/src/test/java/org/apache/camel/component/jackson/SpringJacksonMarshalUnmarshalListTest.java
@@ -41,9 +41,9 @@ public class SpringJacksonMarshalUnmarshalListTest extends CamelSpringTestSuppor
         assertNotNull(list);
         assertEquals(2, list.size());
 
-        TestPojo pojo = (TestPojo) list.get(0);
+        TestPojo pojo = (TestPojo)list.get(0);
         assertEquals("Camel", pojo.getName());
-        pojo = (TestPojo) list.get(1);
+        pojo = (TestPojo)list.get(1);
         assertEquals("World", pojo.getName());
     }
 
@@ -62,7 +62,7 @@ public class SpringJacksonMarshalUnmarshalListTest extends CamelSpringTestSuppor
         assertNotNull(list);
         assertEquals(1, list.size());
 
-        TestPojo pojo = (TestPojo) list.get(0);
+        TestPojo pojo = (TestPojo)list.get(0);
         assertEquals("Camel", pojo.getName());
     }
 
diff --git a/components/camel-jackson/src/test/java/org/apache/camel/component/jackson/SpringJacksonObjectMapperRegistryTest.java b/components/camel-jackson/src/test/java/org/apache/camel/component/jackson/SpringJacksonObjectMapperRegistryTest.java
index bf22c7d..62dd876 100644
--- a/components/camel-jackson/src/test/java/org/apache/camel/component/jackson/SpringJacksonObjectMapperRegistryTest.java
+++ b/components/camel-jackson/src/test/java/org/apache/camel/component/jackson/SpringJacksonObjectMapperRegistryTest.java
@@ -51,10 +51,10 @@ public class SpringJacksonObjectMapperRegistryTest extends CamelSpringTestSuppor
 
         mock.assertIsSatisfied();
 
-        MyJsonObjectMapper mapper = (MyJsonObjectMapper) context.getRegistry().lookupByName("myJsonObjectMapper");
+        MyJsonObjectMapper mapper = (MyJsonObjectMapper)context.getRegistry().lookupByName("myJsonObjectMapper");
         assertNotNull(mapper);
 
-        JacksonDataFormat df = (JacksonDataFormat) DataFormatReifier.getDataFormat(context, null, "jack");
+        JacksonDataFormat df = (JacksonDataFormat)DataFormatReifier.getDataFormat(context, null, "jack");
         assertNotNull(df);
         assertSame(mapper, df.getObjectMapper());
     }
diff --git a/components/camel-jackson/src/test/java/org/apache/camel/component/jackson/TestJAXBPojo.java b/components/camel-jackson/src/test/java/org/apache/camel/component/jackson/TestJAXBPojo.java
index b9d7b14..a8867da 100644
--- a/components/camel-jackson/src/test/java/org/apache/camel/component/jackson/TestJAXBPojo.java
+++ b/components/camel-jackson/src/test/java/org/apache/camel/component/jackson/TestJAXBPojo.java
@@ -35,7 +35,7 @@ public class TestJAXBPojo {
 
     @Override
     public boolean equals(Object obj) {
-        return this.name.equals(((TestJAXBPojo) obj).getName());
+        return this.name.equals(((TestJAXBPojo)obj).getName());
     }
 
     @Override
@@ -47,4 +47,4 @@ public class TestJAXBPojo {
     public String toString() {
         return "TestJAXBPojo[" + name + "]";
     }
-}
\ No newline at end of file
+}
diff --git a/components/camel-jackson/src/test/java/org/apache/camel/component/jackson/TestOtherPojo.java b/components/camel-jackson/src/test/java/org/apache/camel/component/jackson/TestOtherPojo.java
index 7f66153..d2d43e3 100644
--- a/components/camel-jackson/src/test/java/org/apache/camel/component/jackson/TestOtherPojo.java
+++ b/components/camel-jackson/src/test/java/org/apache/camel/component/jackson/TestOtherPojo.java
@@ -37,4 +37,4 @@ public class TestOtherPojo {
         this.country = country;
     }
 
-}
\ No newline at end of file
+}
diff --git a/components/camel-jackson/src/test/java/org/apache/camel/component/jackson/TestPojo.java b/components/camel-jackson/src/test/java/org/apache/camel/component/jackson/TestPojo.java
index 6382bf7..ba47dce 100644
--- a/components/camel-jackson/src/test/java/org/apache/camel/component/jackson/TestPojo.java
+++ b/components/camel-jackson/src/test/java/org/apache/camel/component/jackson/TestPojo.java
@@ -30,7 +30,7 @@ public class TestPojo {
 
     @Override
     public boolean equals(Object obj) {
-        return this.name.equals(((TestPojo) obj).getName());
+        return this.name.equals(((TestPojo)obj).getName());
     }
 
     @Override
@@ -42,4 +42,4 @@ public class TestPojo {
     public String toString() {
         return "TestPojo[" + name + "]";
     }
-}
\ No newline at end of file
+}
diff --git a/components/camel-jackson/src/test/java/org/apache/camel/component/jackson/TestPojoView.java b/components/camel-jackson/src/test/java/org/apache/camel/component/jackson/TestPojoView.java
index 7fb775d..dc6191d 100644
--- a/components/camel-jackson/src/test/java/org/apache/camel/component/jackson/TestPojoView.java
+++ b/components/camel-jackson/src/test/java/org/apache/camel/component/jackson/TestPojoView.java
@@ -20,7 +20,7 @@ import com.fasterxml.jackson.annotation.JsonView;
 
 public class TestPojoView {
 
-    //START SNIPPET: jsonview
+    // START SNIPPET: jsonview
     @JsonView(Views.Age.class)
     private int age = 30;
 
@@ -28,7 +28,7 @@ public class TestPojoView {
 
     @JsonView(Views.Weight.class)
     private int weight = 70;
-    //END SNIPPET: jsonview
+    // END SNIPPET: jsonview
 
     public int getAge() {
         return age;
@@ -63,7 +63,7 @@ public class TestPojoView {
             return false;
         }
 
-        TestPojoView that = (TestPojoView) o;
+        TestPojoView that = (TestPojoView)o;
 
         if (age != that.age) {
             return false;
diff --git a/components/camel-jackson/src/test/java/org/apache/camel/component/jackson/Views.java b/components/camel-jackson/src/test/java/org/apache/camel/component/jackson/Views.java
index dcb3387..4c238ac 100644
--- a/components/camel-jackson/src/test/java/org/apache/camel/component/jackson/Views.java
+++ b/components/camel-jackson/src/test/java/org/apache/camel/component/jackson/Views.java
@@ -19,7 +19,10 @@ package org.apache.camel.component.jackson;
 //START SNIPPET: marker
 public class Views {
 
-    static class Age { }
-    static class Weight { }
+    static class Age {
+    }
+
+    static class Weight {
+    }
 }
 //END SNIPPET: marker
diff --git a/components/camel-jackson/src/test/java/org/apache/camel/component/jackson/converter/JacksonConversionsPojoTest.java b/components/camel-jackson/src/test/java/org/apache/camel/component/jackson/converter/JacksonConversionsPojoTest.java
index cbcef4a..84e1a29 100644
--- a/components/camel-jackson/src/test/java/org/apache/camel/component/jackson/converter/JacksonConversionsPojoTest.java
+++ b/components/camel-jackson/src/test/java/org/apache/camel/component/jackson/converter/JacksonConversionsPojoTest.java
@@ -27,7 +27,8 @@ public class JacksonConversionsPojoTest extends CamelTestSupport {
     @Override
     protected CamelContext createCamelContext() throws Exception {
         CamelContext context = super.createCamelContext();
-        // enable jackson type converter by setting this property on CamelContext
+        // enable jackson type converter by setting this property on
+        // CamelContext
         context.getGlobalOptions().put(JacksonConstants.ENABLE_TYPE_CONVERTER, "true");
         context.getGlobalOptions().put(JacksonConstants.TYPE_CONVERTER_TO_POJO, "true");
         return context;
@@ -40,7 +41,7 @@ public class JacksonConversionsPojoTest extends CamelTestSupport {
         order.setCustomerName("Acme");
         order.setPartName("Camel");
 
-        String json = (String) template.requestBody("direct:test", order);
+        String json = (String)template.requestBody("direct:test", order);
         assertEquals("{\"id\":0,\"partName\":\"Camel\",\"amount\":1,\"customerName\":\"Acme\"}", json);
     }
 
diff --git a/components/camel-jackson/src/test/java/org/apache/camel/component/jackson/converter/JacksonConversionsSimpleTest.java b/components/camel-jackson/src/test/java/org/apache/camel/component/jackson/converter/JacksonConversionsSimpleTest.java
index 219eb8e..a182099 100644
--- a/components/camel-jackson/src/test/java/org/apache/camel/component/jackson/converter/JacksonConversionsSimpleTest.java
+++ b/components/camel-jackson/src/test/java/org/apache/camel/component/jackson/converter/JacksonConversionsSimpleTest.java
@@ -37,7 +37,8 @@ public class JacksonConversionsSimpleTest extends CamelTestSupport {
     @Override
     protected CamelContext createCamelContext() throws Exception {
         CamelContext context = super.createCamelContext();
-        // enable jackson type converter by setting this property on CamelContext
+        // enable jackson type converter by setting this property on
+        // CamelContext
         context.getGlobalOptions().put(JacksonConstants.ENABLE_TYPE_CONVERTER, "true");
         return context;
     }
diff --git a/components/camel-jackson/src/test/java/org/apache/camel/component/jackson/converter/JacksonConversionsTest.java b/components/camel-jackson/src/test/java/org/apache/camel/component/jackson/converter/JacksonConversionsTest.java
index f141c2e..3271b17 100644
--- a/components/camel-jackson/src/test/java/org/apache/camel/component/jackson/converter/JacksonConversionsTest.java
+++ b/components/camel-jackson/src/test/java/org/apache/camel/component/jackson/converter/JacksonConversionsTest.java
@@ -31,7 +31,8 @@ public class JacksonConversionsTest extends CamelTestSupport {
     @Override
     protected CamelContext createCamelContext() throws Exception {
         CamelContext context = super.createCamelContext();
-        // enable jackson type converter by setting this property on CamelContext
+        // enable jackson type converter by setting this property on
+        // CamelContext
         context.getGlobalOptions().put(JacksonConstants.ENABLE_TYPE_CONVERTER, "true");
         return context;
     }
@@ -42,7 +43,7 @@ public class JacksonConversionsTest extends CamelTestSupport {
         Map<String, String> pojoAsMap = new HashMap<>();
         pojoAsMap.put("name", name);
 
-        TestPojo testPojo = (TestPojo) template.requestBody("direct:test", pojoAsMap);
+        TestPojo testPojo = (TestPojo)template.requestBody("direct:test", pojoAsMap);
 
         assertEquals(name, testPojo.getName());
     }