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 2021/01/30 13:20:03 UTC

[camel] 01/02: CAMEL-16114: camel-jacksonxml should also use configurer for unarmshaltype

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

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

commit e1d506c2ce93c5a2b71e2bd03b5b2fe9a4cdda52
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Sat Jan 30 12:18:26 2021 +0100

    CAMEL-16114: camel-jacksonxml should also use configurer for unarmshaltype
---
 .../jacksonxml/JacksonXMLDataFormatConfigurer.java       |  2 ++
 .../camel/component/jacksonxml/JacksonXMLDataFormat.java | 16 ++++++++++++++++
 .../reifier/dataformat/JacksonXMLDataFormatReifier.java  |  6 +++++-
 .../camel/reifier/dataformat/JsonDataFormatReifier.java  |  2 +-
 4 files changed, 24 insertions(+), 2 deletions(-)

diff --git a/components/camel-jacksonxml/src/generated/java/org/apache/camel/component/jacksonxml/JacksonXMLDataFormatConfigurer.java b/components/camel-jacksonxml/src/generated/java/org/apache/camel/component/jacksonxml/JacksonXMLDataFormatConfigurer.java
index 7c4faa9..44fd8bc 100644
--- a/components/camel-jacksonxml/src/generated/java/org/apache/camel/component/jacksonxml/JacksonXMLDataFormatConfigurer.java
+++ b/components/camel-jacksonxml/src/generated/java/org/apache/camel/component/jacksonxml/JacksonXMLDataFormatConfigurer.java
@@ -24,6 +24,8 @@ public class JacksonXMLDataFormatConfigurer extends PropertyConfigurerSupport im
         case "moduleClassNames": dataformat.setModuleClassNames(property(camelContext, java.lang.String.class, value)); return true;
         case "modulerefs":
         case "moduleRefs": dataformat.setModuleRefs(property(camelContext, java.lang.String.class, value)); return true;
+        case "unmarshaltypename":
+        case "unmarshalTypeName": dataformat.setUnmarshalTypeName(property(camelContext, java.lang.String.class, value)); return true;
         case "jsonview":
         case "jsonView": dataformat.setJsonView(property(camelContext, java.lang.Class.class, value)); return true;
         case "include": dataformat.setInclude(property(camelContext, java.lang.String.class, value)); return true;
diff --git a/components/camel-jacksonxml/src/main/java/org/apache/camel/component/jacksonxml/JacksonXMLDataFormat.java b/components/camel-jacksonxml/src/main/java/org/apache/camel/component/jacksonxml/JacksonXMLDataFormat.java
index e1b9424..1c5b592 100644
--- a/components/camel-jacksonxml/src/main/java/org/apache/camel/component/jacksonxml/JacksonXMLDataFormat.java
+++ b/components/camel-jacksonxml/src/main/java/org/apache/camel/component/jacksonxml/JacksonXMLDataFormat.java
@@ -63,6 +63,7 @@ public class JacksonXMLDataFormat extends ServiceSupport
     private List<Module> modules;
     private String moduleClassNames;
     private String moduleRefs;
+    private String unmarshalTypeName;
     private Class<?> unmarshalType;
     private Class<?> jsonView;
     private String include;
@@ -200,6 +201,14 @@ public class JacksonXMLDataFormat extends ServiceSupport
         this.xmlMapper = xmlMapper;
     }
 
+    public String getUnmarshalTypeName() {
+        return unmarshalTypeName;
+    }
+
+    public void setUnmarshalTypeName(String unmarshalTypeName) {
+        this.unmarshalTypeName = unmarshalTypeName;
+    }
+
     public Class<?> getUnmarshalType() {
         return this.unmarshalType;
     }
@@ -453,6 +462,13 @@ public class JacksonXMLDataFormat extends ServiceSupport
     }
 
     @Override
+    protected void doInit() throws Exception {
+        if (unmarshalTypeName != null && (unmarshalType == null || unmarshalType == HashMap.class)) {
+            unmarshalType = camelContext.getClassResolver().resolveClass(unmarshalTypeName);
+        }
+    }
+
+    @Override
     protected void doStart() throws Exception {
         if (xmlMapper == null) {
             xmlMapper = new XmlMapper();
diff --git a/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/dataformat/JacksonXMLDataFormatReifier.java b/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/dataformat/JacksonXMLDataFormatReifier.java
index 6f31a8f..83674f4 100644
--- a/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/dataformat/JacksonXMLDataFormatReifier.java
+++ b/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/dataformat/JacksonXMLDataFormatReifier.java
@@ -31,7 +31,11 @@ public class JacksonXMLDataFormatReifier extends DataFormatReifier<JacksonXMLDat
     @Override
     protected void prepareDataFormatConfig(Map<String, Object> properties) {
         properties.put("xmlMapper", definition.getXmlMapper());
-        properties.put("unmarshalType", or(definition.getUnmarshalType(), definition.getUnmarshalTypeName()));
+        if (definition.getUnmarshalType() != null) {
+            properties.put("unmarshalTypeName", asTypeName(definition.getUnmarshalType()));
+        } else {
+            properties.put("unmarshalTypeName", definition.getUnmarshalTypeName());
+        }
         properties.put("prettyPrint", definition.getPrettyPrint());
         properties.put("jsonView", definition.getJsonView());
         properties.put("include", definition.getInclude());
diff --git a/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/dataformat/JsonDataFormatReifier.java b/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/dataformat/JsonDataFormatReifier.java
index ab94db3..fa4bfa2 100644
--- a/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/dataformat/JsonDataFormatReifier.java
+++ b/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/dataformat/JsonDataFormatReifier.java
@@ -72,7 +72,7 @@ public class JsonDataFormatReifier extends DataFormatReifier<JsonDataFormat> {
             // if we have the unmarshal type, but no permission set, then use it to be allowed
             String type = definition.getUnmarshalTypeName();
             if (type == null && definition.getUnmarshalType() != null) {
-                type = definition.getUnmarshalType().getName();
+                type = asTypeName(definition.getUnmarshalType());
             }
             properties.put("permissions", type);
             // xstream has no unmarshalType option