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 <claus.ib...@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