This is an automated email from the ASF dual-hosted git repository. davsclaus pushed a commit to branch df2 in repository https://gitbox.apache.org/repos/asf/camel.git
commit 5a00bb161bdeeea709b803f6da0dc6ff3c625dd6 Author: Claus Ibsen <[email protected]> AuthorDate: Tue Aug 19 11:55:23 2025 +0200 CAMEL-22354: dataformats - Align all data formats getter setters to model --- .../dataformat/soap/SoapDataFormatConfigurer.java | 31 +++++++------ .../org/apache/camel/dataformat/soap/soap.json | 3 +- .../org/apache/camel/model/dataformat/soap.json | 3 +- .../camel/model/dataformat/SoapDataFormat.java | 38 +++++++++++++++ .../java/org/apache/camel/xml/in/ModelParser.java | 1 + .../java/org/apache/camel/xml/out/ModelWriter.java | 1 + .../org/apache/camel/yaml/out/ModelWriter.java | 1 + .../maven/packaging/PackageDataFormatMojo.java | 26 ++++++++--- .../velocity/dataformat-property-configurer.vm | 54 ---------------------- .../main/resources/velocity/property-configurer.vm | 5 +- 10 files changed, 84 insertions(+), 79 deletions(-) diff --git a/components/camel-soap/src/generated/java/org/apache/camel/dataformat/soap/SoapDataFormatConfigurer.java b/components/camel-soap/src/generated/java/org/apache/camel/dataformat/soap/SoapDataFormatConfigurer.java index 6d1c2bcf1ad..03b2d6b27b4 100644 --- a/components/camel-soap/src/generated/java/org/apache/camel/dataformat/soap/SoapDataFormatConfigurer.java +++ b/components/camel-soap/src/generated/java/org/apache/camel/dataformat/soap/SoapDataFormatConfigurer.java @@ -2,6 +2,7 @@ package org.apache.camel.dataformat.soap; import javax.annotation.processing.Generated; +import java.util.LinkedHashMap; import java.util.Map; import org.apache.camel.CamelContext; @@ -10,22 +11,14 @@ import org.apache.camel.spi.PropertyConfigurerGetter; import org.apache.camel.spi.ConfigurerStrategy; import org.apache.camel.spi.GeneratedPropertyConfigurer; import org.apache.camel.util.CaseInsensitiveMap; -import org.apache.camel.dataformat.soap.SoapDataFormat; +import org.apache.camel.converter.jaxb.JaxbDataFormatConfigurer; /** * Generated by camel build tools - do NOT edit this file! */ @Generated("org.apache.camel.maven.packaging.PackageDataFormatMojo") @SuppressWarnings("unchecked") -public class SoapDataFormatConfigurer extends org.apache.camel.support.component.PropertyConfigurerSupport implements GeneratedPropertyConfigurer, ExtendedPropertyConfigurerGetter { - - private static final Map<String, Object> ALL_OPTIONS; - static { - Map<String, Object> map = new CaseInsensitiveMap(); - map.put("ElementNameStrategy", org.apache.camel.dataformat.soap.name.ElementNameStrategy.class); - map.put("Version", java.lang.String.class); - ALL_OPTIONS = map; - } +public class SoapDataFormatConfigurer extends org.apache.camel.converter.jaxb.JaxbDataFormatConfigurer implements GeneratedPropertyConfigurer, ExtendedPropertyConfigurerGetter { @Override public boolean configure(CamelContext camelContext, Object obj, String name, Object value, boolean ignoreCase) { @@ -33,14 +26,20 @@ public class SoapDataFormatConfigurer extends org.apache.camel.support.component switch (ignoreCase ? name.toLowerCase() : name) { case "elementnamestrategy": case "elementNameStrategy": target.setElementNameStrategy(property(camelContext, org.apache.camel.dataformat.soap.name.ElementNameStrategy.class, value)); return true; + case "ignoreunmarshalledheaders": + case "ignoreUnmarshalledHeaders": target.setIgnoreUnmarshalledHeaders(property(camelContext, boolean.class, value)); return true; case "version": target.setVersion(property(camelContext, java.lang.String.class, value)); return true; - default: return false; + default: return super.configure(camelContext, obj, name, value, ignoreCase); } } @Override public Map<String, Object> getAllOptions(Object target) { - return ALL_OPTIONS; + Map<String, Object> answer = new LinkedHashMap<>(super.getAllOptions(target)); + answer.put("elementNameStrategy", org.apache.camel.dataformat.soap.name.ElementNameStrategy.class); + answer.put("ignoreUnmarshalledHeaders", boolean.class); + answer.put("version", java.lang.String.class); + return answer; } @Override @@ -48,8 +47,10 @@ public class SoapDataFormatConfigurer extends org.apache.camel.support.component switch (ignoreCase ? name.toLowerCase() : name) { case "elementnamestrategy": case "elementNameStrategy": return org.apache.camel.dataformat.soap.name.ElementNameStrategy.class; + case "ignoreunmarshalledheaders": + case "ignoreUnmarshalledHeaders": return boolean.class; case "version": return java.lang.String.class; - default: return null; + default: return super.getOptionType(name, ignoreCase); } } @@ -59,8 +60,10 @@ public class SoapDataFormatConfigurer extends org.apache.camel.support.component switch (ignoreCase ? name.toLowerCase() : name) { case "elementnamestrategy": case "elementNameStrategy": return target.getElementNameStrategy(); + case "ignoreunmarshalledheaders": + case "ignoreUnmarshalledHeaders": return target.isIgnoreUnmarshalledHeaders(); case "version": return target.getVersion(); - default: return null; + default: return super.getOptionValue(obj, name, ignoreCase); } } } diff --git a/components/camel-soap/src/generated/resources/META-INF/org/apache/camel/dataformat/soap/soap.json b/components/camel-soap/src/generated/resources/META-INF/org/apache/camel/dataformat/soap/soap.json index ba60298cd62..66668285c6a 100644 --- a/components/camel-soap/src/generated/resources/META-INF/org/apache/camel/dataformat/soap/soap.json +++ b/components/camel-soap/src/generated/resources/META-INF/org/apache/camel/dataformat/soap/soap.json @@ -22,6 +22,7 @@ "elementNameStrategy": { "index": 3, "kind": "attribute", "displayName": "Element Name Strategy", "group": "advanced", "label": "advanced", "required": false, "type": "object", "javaType": "org.apache.camel.dataformat.soap.name.ElementNameStrategy", "deprecated": false, "autowired": false, "secret": false, "description": "Refers to an element strategy to lookup from the registry. An element name strategy is used for two purposes. The first is to find a xml element name for a given ob [...] "version": { "index": 4, "kind": "attribute", "displayName": "Version", "group": "common", "required": false, "type": "enum", "javaType": "java.lang.String", "enum": [ "1.1", "1.2" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "1.1", "description": "SOAP version should either be 1.1 or 1.2. Is by default 1.1" }, "namespacePrefix": { "index": 5, "kind": "attribute", "displayName": "Namespace Prefix", "group": "advanced", "label": "advanced", "required": false, "type": "object", "javaType": "java.util.Map", "deprecated": false, "autowired": false, "secret": false, "description": "When marshalling using JAXB or SOAP then the JAXB implementation will automatic assign namespace prefixes, such as ns2, ns3, ns4 etc. To control this mapping, Camel allows you to refer to a map which contains the desi [...] - "schema": { "index": 6, "kind": "attribute", "displayName": "Schema", "group": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "To validate against an existing schema. Your can use the prefix classpath:, file: or http: to specify how the resource should be resolved. You can separate multiple schema files by using the ',' character." } + "schema": { "index": 6, "kind": "attribute", "displayName": "Schema", "group": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "To validate against an existing schema. Your can use the prefix classpath:, file: or http: to specify how the resource should be resolved. You can separate multiple schema files by using the ',' character." }, + "ignoreUnmarshalledHeaders": { "index": 7, "kind": "attribute", "displayName": "Ignore Unmarshalled Headers", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to ignore headers that was not unmarshalled. By default, headers which could not be unmarshalled is recorded in the org.apache.camel.dataformat.soap.UNMARSHALLE [...] } } diff --git a/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/dataformat/soap.json b/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/dataformat/soap.json index c66286a1550..984622f51b6 100644 --- a/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/dataformat/soap.json +++ b/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/dataformat/soap.json @@ -19,6 +19,7 @@ "elementNameStrategy": { "index": 3, "kind": "attribute", "displayName": "Element Name Strategy", "group": "advanced", "label": "advanced", "required": false, "type": "object", "javaType": "org.apache.camel.dataformat.soap.name.ElementNameStrategy", "deprecated": false, "autowired": false, "secret": false, "description": "Refers to an element strategy to lookup from the registry. An element name strategy is used for two purposes. The first is to find a xml element name for a given ob [...] "version": { "index": 4, "kind": "attribute", "displayName": "Version", "group": "common", "required": false, "type": "enum", "javaType": "java.lang.String", "enum": [ "1.1", "1.2" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "1.1", "description": "SOAP version should either be 1.1 or 1.2. Is by default 1.1" }, "namespacePrefix": { "index": 5, "kind": "attribute", "displayName": "Namespace Prefix", "group": "advanced", "label": "advanced", "required": false, "type": "object", "javaType": "java.util.Map", "deprecated": false, "autowired": false, "secret": false, "description": "When marshalling using JAXB or SOAP then the JAXB implementation will automatic assign namespace prefixes, such as ns2, ns3, ns4 etc. To control this mapping, Camel allows you to refer to a map which contains the desi [...] - "schema": { "index": 6, "kind": "attribute", "displayName": "Schema", "group": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "To validate against an existing schema. Your can use the prefix classpath:, file: or http: to specify how the resource should be resolved. You can separate multiple schema files by using the ',' character." } + "schema": { "index": 6, "kind": "attribute", "displayName": "Schema", "group": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "To validate against an existing schema. Your can use the prefix classpath:, file: or http: to specify how the resource should be resolved. You can separate multiple schema files by using the ',' character." }, + "ignoreUnmarshalledHeaders": { "index": 7, "kind": "attribute", "displayName": "Ignore Unmarshalled Headers", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to ignore headers that was not unmarshalled. By default, headers which could not be unmarshalled is recorded in the org.apache.camel.dataformat.soap.UNMARSHALLE [...] } } diff --git a/core/camel-core-model/src/main/java/org/apache/camel/model/dataformat/SoapDataFormat.java b/core/camel-core-model/src/main/java/org/apache/camel/model/dataformat/SoapDataFormat.java index 9f69c8b6cd9..5d8f1caa89d 100644 --- a/core/camel-core-model/src/main/java/org/apache/camel/model/dataformat/SoapDataFormat.java +++ b/core/camel-core-model/src/main/java/org/apache/camel/model/dataformat/SoapDataFormat.java @@ -52,6 +52,9 @@ public class SoapDataFormat extends DataFormatDefinition { private String namespacePrefix; @XmlAttribute private String schema; + @XmlAttribute + @Metadata(label = "advanced", javaType = "java.lang.Boolean") + private String ignoreUnmarshalledHeaders; public SoapDataFormat() { super("soap"); @@ -66,6 +69,7 @@ public class SoapDataFormat extends DataFormatDefinition { this.version = source.version; this.namespacePrefix = source.namespacePrefix; this.schema = source.schema; + this.ignoreUnmarshalledHeaders = source.ignoreUnmarshalledHeaders; } public SoapDataFormat(String contextPath) { @@ -94,6 +98,7 @@ public class SoapDataFormat extends DataFormatDefinition { this.version = builder.version; this.namespacePrefix = builder.namespacePrefix; this.schema = builder.schema; + this.ignoreUnmarshalledHeaders = builder.ignoreUnmarshalledHeaders; } @Override @@ -215,6 +220,19 @@ public class SoapDataFormat extends DataFormatDefinition { this.schema = schema; } + public String getIgnoreUnmarshalledHeaders() { + return ignoreUnmarshalledHeaders; + } + + /** + * Whether to ignore headers that was not unmarshalled. By default, headers which could not be unmarshalled + * is recorded in the org.apache.camel.dataformat.soap.UNMARSHALLED_HEADER_LIST header which allows to inspect + * any problematic header. + */ + public void setIgnoreUnmarshalledHeaders(String ignoreUnmarshalledHeaders) { + this.ignoreUnmarshalledHeaders = ignoreUnmarshalledHeaders; + } + /** * {@code Builder} is a specific builder for {@link SoapDataFormat}. */ @@ -228,6 +246,7 @@ public class SoapDataFormat extends DataFormatDefinition { private String version; private String namespacePrefix; private String schema; + private String ignoreUnmarshalledHeaders; /** * Package name where your JAXB classes are located. @@ -322,6 +341,25 @@ public class SoapDataFormat extends DataFormatDefinition { return this; } + /** + * Whether to ignore headers that was not unmarshalled. By default, headers which could not be unmarshalled + * is recorded in the org.apache.camel.dataformat.soap.UNMARSHALLED_HEADER_LIST header which allows to inspect + * any problematic header. + */ + public Builder ignoreUnmarshalledHeaders(boolean ignoreUnmarshalledHeaders) { + return ignoreUnmarshalledHeaders(Boolean.valueOf(ignoreUnmarshalledHeaders)); + } + + /** + * Whether to ignore headers that was not unmarshalled. By default, headers which could not be unmarshalled + * is recorded in the org.apache.camel.dataformat.soap.UNMARSHALLED_HEADER_LIST header which allows to inspect + * any problematic header. + */ + public Builder ignoreUnmarshalledHeaders(String ignoreUnmarshalledHeaders) { + this.ignoreUnmarshalledHeaders = ignoreUnmarshalledHeaders; + return this; + } + @Override public SoapDataFormat end() { return new SoapDataFormat(this); diff --git a/core/camel-xml-io/src/generated/java/org/apache/camel/xml/in/ModelParser.java b/core/camel-xml-io/src/generated/java/org/apache/camel/xml/in/ModelParser.java index 3dbc1f726e7..8e525098da9 100644 --- a/core/camel-xml-io/src/generated/java/org/apache/camel/xml/in/ModelParser.java +++ b/core/camel-xml-io/src/generated/java/org/apache/camel/xml/in/ModelParser.java @@ -2140,6 +2140,7 @@ public class ModelParser extends BaseParser { case "contextPath": def.setContextPath(val); yield true; case "elementNameStrategy": def.setElementNameStrategy(val); yield true; case "encoding": def.setEncoding(val); yield true; + case "ignoreUnmarshalledHeaders": def.setIgnoreUnmarshalledHeaders(val); yield true; case "namespacePrefix": def.setNamespacePrefix(val); yield true; case "schema": def.setSchema(val); yield true; case "version": def.setVersion(val); yield true; diff --git a/core/camel-xml-io/src/generated/java/org/apache/camel/xml/out/ModelWriter.java b/core/camel-xml-io/src/generated/java/org/apache/camel/xml/out/ModelWriter.java index 0e90d47c02a..6d6e3595b4e 100644 --- a/core/camel-xml-io/src/generated/java/org/apache/camel/xml/out/ModelWriter.java +++ b/core/camel-xml-io/src/generated/java/org/apache/camel/xml/out/ModelWriter.java @@ -2835,6 +2835,7 @@ public class ModelWriter extends BaseWriter { startElement(name); doWriteIdentifiedTypeAttributes(def); doWriteAttribute("schema", def.getSchema(), null); + doWriteAttribute("ignoreUnmarshalledHeaders", def.getIgnoreUnmarshalledHeaders(), null); doWriteAttribute("contextPath", def.getContextPath(), null); doWriteAttribute("encoding", def.getEncoding(), null); doWriteAttribute("namespacePrefix", def.getNamespacePrefix(), null); diff --git a/core/camel-yaml-io/src/generated/java/org/apache/camel/yaml/out/ModelWriter.java b/core/camel-yaml-io/src/generated/java/org/apache/camel/yaml/out/ModelWriter.java index 518bf4e4f7d..02f328a673c 100644 --- a/core/camel-yaml-io/src/generated/java/org/apache/camel/yaml/out/ModelWriter.java +++ b/core/camel-yaml-io/src/generated/java/org/apache/camel/yaml/out/ModelWriter.java @@ -2835,6 +2835,7 @@ public class ModelWriter extends BaseWriter { startElement(name); doWriteIdentifiedTypeAttributes(def); doWriteAttribute("schema", def.getSchema(), null); + doWriteAttribute("ignoreUnmarshalledHeaders", def.getIgnoreUnmarshalledHeaders(), null); doWriteAttribute("contextPath", def.getContextPath(), null); doWriteAttribute("encoding", def.getEncoding(), null); doWriteAttribute("namespacePrefix", def.getNamespacePrefix(), null); diff --git a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PackageDataFormatMojo.java b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PackageDataFormatMojo.java index b505ca0ef62..d8d5f7fded6 100644 --- a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PackageDataFormatMojo.java +++ b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PackageDataFormatMojo.java @@ -60,6 +60,8 @@ import org.jboss.forge.roaster.model.source.FieldSource; import org.jboss.forge.roaster.model.source.JavaClassSource; import org.jboss.forge.roaster.model.source.MethodSource; +import static org.apache.camel.maven.packaging.MojoHelper.getType; + /** * Analyses the Camel plugins in a project and generates extra descriptor information for easier auto-discovery in * Camel. @@ -224,21 +226,28 @@ public class PackageDataFormatMojo extends AbstractGeneratorMojo { log.debug("Generated " + out + " containing JSON schema for " + name + " data format"); } + boolean hasSuper = false; + String pfqn = "org.apache.camel.support.component.PropertyConfigurerSupport"; + if ("soap".equals(name)) { + hasSuper = true; + pfqn = "org.apache.camel.converter.jaxb.JaxbDataFormatConfigurer"; + } + String cn = javaType.substring(javaType.lastIndexOf('.') + 1); String pn = javaType.substring(0, javaType.length() - cn.length() - 1); Set<String> names = dataFormatModel.getOptions().stream().map(DataFormatOptionModel::getName) .collect(Collectors.toSet()); List<DataFormatOptionModel> options = parseConfigurationSource(project, javaType); options.removeIf(o -> !names.contains(o.getName())); - options.stream().map(DataFormatOptionModel::getName).collect(Collectors.toList()) - .forEach(names::remove); + options.stream().map(DataFormatOptionModel::getName).toList().forEach(names::remove); names.removeAll(List.of("id")); if (!names.isEmpty()) { log.warn("Unmapped options: " + String.join(",", names)); } + updateResource(configurerSourceOutDir.toPath(), pn.replace('.', '/') + "/" + cn + "Configurer.java", - generatePropertyConfigurer(pn, cn + "Configurer", cn, options)); + generatePropertyConfigurer(pn, cn + "Configurer", pfqn, cn, hasSuper, options)); updateResource(configurerResourceOutDir.toPath(), "META-INF/services/org/apache/camel/configurer/" + name + "-dataformat", generateMetaInfConfigurer(pn + "." + cn + "Configurer")); @@ -525,6 +534,7 @@ public class PackageDataFormatMojo extends AbstractGeneratorMojo { DataFormatOptionModel model = new DataFormatOptionModel(); model.setName(name); model.setJavaType(javaType); + model.setType(getType(javaType, false, false)); answer.add(model); } }); @@ -554,7 +564,9 @@ public class PackageDataFormatMojo extends AbstractGeneratorMojo { } } - public String generatePropertyConfigurer(String pn, String cn, String en, Collection<DataFormatOptionModel> options) + public String generatePropertyConfigurer( + String pn, String cn, String pfqn, String en, boolean hasSuper, + Collection<DataFormatOptionModel> options) throws IOException { options = options.stream().sorted(Comparator.comparing(BaseOptionModel::getName)).toList(); @@ -564,9 +576,9 @@ public class PackageDataFormatMojo extends AbstractGeneratorMojo { ctx.put("package", pn); ctx.put("className", cn); ctx.put("type", en); - ctx.put("pfqn", pn + "." + en); - ctx.put("psn", "org.apache.camel.support.component.PropertyConfigurerSupport"); - ctx.put("hasSuper", false); + ctx.put("pfqn", pfqn); + ctx.put("psn", pfqn); + ctx.put("hasSuper", hasSuper); ctx.put("component", false); ctx.put("extended", true); ctx.put("bootstrap", false); diff --git a/tooling/maven/camel-package-maven-plugin/src/main/resources/velocity/dataformat-property-configurer.vm b/tooling/maven/camel-package-maven-plugin/src/main/resources/velocity/dataformat-property-configurer.vm deleted file mode 100644 index 85176a831c1..00000000000 --- a/tooling/maven/camel-package-maven-plugin/src/main/resources/velocity/dataformat-property-configurer.vm +++ /dev/null @@ -1,54 +0,0 @@ -## --------------------------------------------------------------------------- -## Licensed to the Apache Software Foundation (ASF) under one or more -## contributor license agreements. See the NOTICE file distributed with -## this work for additional information regarding copyright ownership. -## The ASF licenses this file to You under the Apache License, Version 2.0 -## (the "License"); you may not use this file except in compliance with -## the License. You may obtain a copy of the License at -## -## http://www.apache.org/licenses/LICENSE-2.0 -## -## Unless required by applicable law or agreed to in writing, software -## distributed under the License is distributed on an "AS IS" BASIS, -## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -## See the License for the specific language governing permissions and -## limitations under the License. -## --------------------------------------------------------------------------- -/* Generated by camel build tools - do NOT edit this file! */ -package ${package}; - -import javax.annotation.processing.Generated; -import java.util.HashMap; -import java.util.Map; - -import org.apache.camel.CamelContext; -import org.apache.camel.spi.GeneratedPropertyConfigurer; -import org.apache.camel.support.component.PropertyConfigurerSupport; - -/** - * Generated by camel build tools - do NOT edit this file! - */ -@Generated("org.apache.camel.maven.packaging.PackageDataFormatMojo") -@SuppressWarnings("unchecked") -public class ${className} extends PropertyConfigurerSupport implements GeneratedPropertyConfigurer { - - @Override - public boolean configure(CamelContext camelContext, Object target, String name, Object value, boolean ignoreCase) { - ${type} dataformat = (${type}) target; - switch (ignoreCase ? name.toLowerCase() : name) { -#foreach ( $option in $options ) - #if ( $option.name != "id" ) - #set ( $setter = "set" + $option.name.substring(0, 1).toUpperCase() + $option.name.substring(1) ) - #set ( $type = $mojo.canonicalClassName($option.getJavaType()) ) - #end - #if ( ! $option.name.toLowerCase().equals($option.name) ) - case "${option.name.toLowerCase()}": - #end - case "${option.name}": dataformat.${setter}(property(camelContext, ${type}.class, value)); return true; -#end - default: return false; - } - } - -} - diff --git a/tooling/maven/camel-package-maven-plugin/src/main/resources/velocity/property-configurer.vm b/tooling/maven/camel-package-maven-plugin/src/main/resources/velocity/property-configurer.vm index f9693010a5a..010c14aa7e8 100644 --- a/tooling/maven/camel-package-maven-plugin/src/main/resources/velocity/property-configurer.vm +++ b/tooling/maven/camel-package-maven-plugin/src/main/resources/velocity/property-configurer.vm @@ -18,6 +18,7 @@ package ${package}; import javax.annotation.processing.Generated; +import java.util.LinkedHashMap; import java.util.Map; import org.apache.camel.CamelContext; @@ -143,9 +144,9 @@ public class ${className} extends ${psn} implements GeneratedPropertyConfigurer, #if ( $model || !$hasSuper ) return ALL_OPTIONS; #else - Map<String, Object> answer = super.getAllOptions(target); + Map<String, Object> answer = new LinkedHashMap<>(super.getAllOptions(target)); #foreach ( $option in $options ) - answer.put(${option.name}, ${mojo.canonicalClassName($option.type)}); + answer.put("${option.name}", ${mojo.canonicalClassName($option.javaType)}.class); #end return answer; #end
