You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2016/12/23 12:14:24 UTC
[3/4] camel git commit: CAMEL-10646: jsonpath now supports POJOs if
jackson is on the classpath
CAMEL-10646: jsonpath now supports POJOs if jackson is on the classpath
Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/de9cc258
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/de9cc258
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/de9cc258
Branch: refs/heads/master
Commit: de9cc2581eb4a3e6207ad0a7d7937017e0cb3af4
Parents: 0a3efe2
Author: Claus Ibsen <da...@apache.org>
Authored: Fri Dec 23 13:00:41 2016 +0100
Committer: Claus Ibsen <da...@apache.org>
Committed: Fri Dec 23 13:00:41 2016 +0100
----------------------------------------------------------------------
.../apache/camel/jsonpath/JsonPathAdapter.java | 8 +++++++
.../apache/camel/jsonpath/JsonPathEngine.java | 1 +
.../jsonpath/jackson/JacksonJsonAdapter.java | 24 ++++++++++++++++----
3 files changed, 29 insertions(+), 4 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/camel/blob/de9cc258/components/camel-jsonpath/src/main/java/org/apache/camel/jsonpath/JsonPathAdapter.java
----------------------------------------------------------------------
diff --git a/components/camel-jsonpath/src/main/java/org/apache/camel/jsonpath/JsonPathAdapter.java b/components/camel-jsonpath/src/main/java/org/apache/camel/jsonpath/JsonPathAdapter.java
index 41e0903..bcba3da 100644
--- a/components/camel-jsonpath/src/main/java/org/apache/camel/jsonpath/JsonPathAdapter.java
+++ b/components/camel-jsonpath/src/main/java/org/apache/camel/jsonpath/JsonPathAdapter.java
@@ -18,11 +18,19 @@ package org.apache.camel.jsonpath;
import java.util.Map;
+import org.apache.camel.CamelContext;
import org.apache.camel.Exchange;
public interface JsonPathAdapter {
/**
+ * Initializes the adapter
+ *
+ * @param camelContext the CamelContext
+ */
+ void init(CamelContext camelContext);
+
+ /**
* Attempt to read/convert the message body into a {@link Map} type
*
* @param body the message body
http://git-wip-us.apache.org/repos/asf/camel/blob/de9cc258/components/camel-jsonpath/src/main/java/org/apache/camel/jsonpath/JsonPathEngine.java
----------------------------------------------------------------------
diff --git a/components/camel-jsonpath/src/main/java/org/apache/camel/jsonpath/JsonPathEngine.java b/components/camel-jsonpath/src/main/java/org/apache/camel/jsonpath/JsonPathEngine.java
index 0816e30..8224bd2 100644
--- a/components/camel-jsonpath/src/main/java/org/apache/camel/jsonpath/JsonPathEngine.java
+++ b/components/camel-jsonpath/src/main/java/org/apache/camel/jsonpath/JsonPathEngine.java
@@ -191,6 +191,7 @@ public class JsonPathEngine {
Object obj = exchange.getContext().getInjector().newInstance(clazz);
if (obj instanceof JsonPathAdapter) {
adapter = (JsonPathAdapter) obj;
+ adapter.init(exchange.getContext());
LOG.debug("JacksonJsonAdapter found on classpath and enabled for camel-jsonpath: {}", adapter);
}
}
http://git-wip-us.apache.org/repos/asf/camel/blob/de9cc258/components/camel-jsonpath/src/main/java/org/apache/camel/jsonpath/jackson/JacksonJsonAdapter.java
----------------------------------------------------------------------
diff --git a/components/camel-jsonpath/src/main/java/org/apache/camel/jsonpath/jackson/JacksonJsonAdapter.java b/components/camel-jsonpath/src/main/java/org/apache/camel/jsonpath/jackson/JacksonJsonAdapter.java
index f109628..0cb5837 100644
--- a/components/camel-jsonpath/src/main/java/org/apache/camel/jsonpath/jackson/JacksonJsonAdapter.java
+++ b/components/camel-jsonpath/src/main/java/org/apache/camel/jsonpath/jackson/JacksonJsonAdapter.java
@@ -19,8 +19,9 @@ package org.apache.camel.jsonpath.jackson;
import java.util.Map;
import java.util.Set;
+import com.fasterxml.jackson.databind.Module;
import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.module.jaxb.JaxbAnnotationModule;
+import org.apache.camel.CamelContext;
import org.apache.camel.Exchange;
import org.apache.camel.jsonpath.JsonPathAdapter;
import org.apache.camel.spi.Registry;
@@ -31,13 +32,28 @@ import org.apache.camel.spi.Registry;
*/
public class JacksonJsonAdapter implements JsonPathAdapter {
+ private static final String JACKSON_JAXB_MODULE = "com.fasterxml.jackson.module.jaxb.JaxbAnnotationModule";
+
private final ObjectMapper defaultMapper;
+ private CamelContext camelContext;
public JacksonJsonAdapter() {
defaultMapper = new ObjectMapper();
- // Enables JAXB processing so we can easily convert JAXB annotated pojos also
- JaxbAnnotationModule module = new JaxbAnnotationModule();
- defaultMapper.registerModule(module);
+ }
+
+ @Override
+ public void init(CamelContext camelContext) {
+ this.camelContext = camelContext;
+
+ // Attempt to enables JAXB processing so we can easily convert JAXB annotated pojos also
+ Class<?> clazz = camelContext.getClassResolver().resolveClass(JACKSON_JAXB_MODULE);
+ if (clazz != null) {
+ Object obj = camelContext.getInjector().newInstance(clazz);
+ if (obj instanceof Module) {
+ Module module = (Module) obj;
+ defaultMapper.registerModule(module);
+ }
+ }
}
@Override