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 660e0f38979970bd37071141cac2c97c5ab6aaae Author: Claus Ibsen <[email protected]> AuthorDate: Mon Aug 18 16:40:02 2025 +0200 CAMEL-22354: dataformats - Align all data formats getter setters to model --- .../dataformat/soap/SoapDataFormatConfigurer.java | 7 +++ .../org/apache/camel/dataformat/soap/soap.json | 4 +- .../camel/dataformat/soap/SoapDataFormat.java | 23 +++----- .../soap/SoapSpringRoundtripTest-context.xml | 2 +- .../soap12/Soap12SpringRoundtripTest-context.xml | 2 +- .../org/apache/camel/model/dataformat/jaxb.json | 2 +- .../org/apache/camel/model/dataformat/soap.json | 4 +- .../camel/model/dataformat/JaxbDataFormat.java | 24 ++++---- .../camel/model/dataformat/SoapDataFormat.java | 69 +++++++++++----------- .../reifier/dataformat/JaxbDataFormatReifier.java | 2 +- .../reifier/dataformat/SoapDataFormatReifier.java | 6 +- .../java/org/apache/camel/xml/in/ModelParser.java | 6 +- .../java/org/apache/camel/xml/out/ModelWriter.java | 6 +- .../org/apache/camel/yaml/out/ModelWriter.java | 6 +- .../ROOT/pages/camel-4x-upgrade-guide-4_15.adoc | 3 + 15 files changed, 86 insertions(+), 80 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 4f918a687ac..6d1c2bcf1ad 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 @@ -22,6 +22,7 @@ public class SoapDataFormatConfigurer extends org.apache.camel.support.component 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; } @@ -30,6 +31,8 @@ public class SoapDataFormatConfigurer extends org.apache.camel.support.component public boolean configure(CamelContext camelContext, Object obj, String name, Object value, boolean ignoreCase) { SoapDataFormat target = (SoapDataFormat) obj; 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 "version": target.setVersion(property(camelContext, java.lang.String.class, value)); return true; default: return false; } @@ -43,6 +46,8 @@ public class SoapDataFormatConfigurer extends org.apache.camel.support.component @Override public Class<?> getOptionType(String name, boolean ignoreCase) { switch (ignoreCase ? name.toLowerCase() : name) { + case "elementnamestrategy": + case "elementNameStrategy": return org.apache.camel.dataformat.soap.name.ElementNameStrategy.class; case "version": return java.lang.String.class; default: return null; } @@ -52,6 +57,8 @@ public class SoapDataFormatConfigurer extends org.apache.camel.support.component public Object getOptionValue(Object obj, String name, boolean ignoreCase) { SoapDataFormat target = (SoapDataFormat) obj; switch (ignoreCase ? name.toLowerCase() : name) { + case "elementnamestrategy": + case "elementNameStrategy": return target.getElementNameStrategy(); case "version": return target.getVersion(); default: return null; } 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 aedada4655d..ba60298cd62 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 @@ -19,9 +19,9 @@ "id": { "index": 0, "kind": "attribute", "displayName": "Id", "group": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "The id of this node" }, "contextPath": { "index": 1, "kind": "attribute", "displayName": "Context Path", "group": "common", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Package name where your JAXB classes are located." }, "encoding": { "index": 2, "kind": "attribute", "displayName": "Encoding", "group": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "To overrule and use a specific encoding" }, - "elementNameStrategyRef": { "index": 3, "kind": "attribute", "displayName": "Element Name Strategy Ref", "group": "advanced", "label": "advanced", "required": false, "type": "string", "javaType": "java.lang.String", "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 object and soap action when marshali [...] + "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" }, - "namespacePrefixRef": { "index": 5, "kind": "attribute", "displayName": "Namespace Prefix Ref", "group": "advanced", "label": "advanced", "required": false, "type": "string", "javaType": "java.lang.String", "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 contain [...] + "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." } } } diff --git a/components/camel-soap/src/main/java/org/apache/camel/dataformat/soap/SoapDataFormat.java b/components/camel-soap/src/main/java/org/apache/camel/dataformat/soap/SoapDataFormat.java index 512829f1cfa..887514f94e8 100644 --- a/components/camel-soap/src/main/java/org/apache/camel/dataformat/soap/SoapDataFormat.java +++ b/components/camel-soap/src/main/java/org/apache/camel/dataformat/soap/SoapDataFormat.java @@ -35,6 +35,7 @@ import org.apache.camel.converter.jaxb.JaxbDataFormat; import org.apache.camel.dataformat.soap.name.ElementNameStrategy; import org.apache.camel.dataformat.soap.name.ServiceInterfaceStrategy; import org.apache.camel.dataformat.soap.name.TypeNameStrategy; +import org.apache.camel.spi.Metadata; import org.apache.camel.spi.annotations.Dataformat; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -45,6 +46,7 @@ import static org.apache.camel.dataformat.soap.SoapConstants.SOAP_METHOD_NAME; * Data format supporting SOAP 1.1 and 1.2. */ @Dataformat("soap") +@Metadata(excludeProperties = "library,instanceClass,contentTypeFormat,defaultInstance") public class SoapDataFormat extends JaxbDataFormat { public static final String SOAP_UNMARSHALLED_HEADER_LIST = "org.apache.camel.dataformat.soap.UNMARSHALLED_HEADER_LIST"; @@ -52,7 +54,7 @@ public class SoapDataFormat extends JaxbDataFormat { private static final Logger LOG = LoggerFactory.getLogger(SoapDataFormat.class); private SoapDataFormatAdapter adapter; - private ElementNameStrategy elementNameStrategy = new TypeNameStrategy(); + private ElementNameStrategy elementNameStrategy; private boolean ignoreUnmarshalledHeaders; private String version; @@ -85,6 +87,9 @@ public class SoapDataFormat extends JaxbDataFormat { @Override protected void doStart() throws Exception { + if (elementNameStrategy == null) { + elementNameStrategy = new TypeNameStrategy(); + } if ("1.2".equals(version)) { LOG.debug("Using SOAP 1.2 adapter"); adapter = new Soap12DataFormatAdapter(this); @@ -137,12 +142,10 @@ public class SoapDataFormat extends JaxbDataFormat { @SuppressWarnings({ "rawtypes", "unchecked" }) private JAXBElement<?> getElement(Object fromObj, QName name) { - - Object value = null; + Object value; // In the case of a parameter, the class of the value of the holder class // is used for the mapping rather than the holder class itself. - if (fromObj instanceof jakarta.xml.ws.Holder) { jakarta.xml.ws.Holder holder = (jakarta.xml.ws.Holder) fromObj; value = holder.value; @@ -214,16 +217,8 @@ public class SoapDataFormat extends JaxbDataFormat { return elementNameStrategy; } - public void setElementNameStrategy(Object nameStrategy) { - if (nameStrategy != null) { - if (nameStrategy instanceof ElementNameStrategy) { - this.elementNameStrategy = (ElementNameStrategy) nameStrategy; - } else { - throw new IllegalArgumentException( - "The argument for setElementNameStrategy should be subClass of " - + ElementNameStrategy.class.getName()); - } - } + public void setElementNameStrategy(ElementNameStrategy nameStrategy) { + this.elementNameStrategy = nameStrategy; } public boolean isIgnoreUnmarshalledHeaders() { diff --git a/components/camel-soap/src/test/resources/org/apache/camel/dataformat/soap/SoapSpringRoundtripTest-context.xml b/components/camel-soap/src/test/resources/org/apache/camel/dataformat/soap/SoapSpringRoundtripTest-context.xml index 1565a3e0ffe..fd734571de0 100644 --- a/components/camel-soap/src/test/resources/org/apache/camel/dataformat/soap/SoapSpringRoundtripTest-context.xml +++ b/components/camel-soap/src/test/resources/org/apache/camel/dataformat/soap/SoapSpringRoundtripTest-context.xml @@ -35,7 +35,7 @@ <!-- we define the soap jaxb data formats --> <dataFormats> - <soap id="soap" contextPath="com.example.customerservice" elementNameStrategyRef="myNameStrategy" + <soap id="soap" contextPath="com.example.customerservice" elementNameStrategy="myNameStrategy" schema="classpath:org/apache/camel/dataformat/soap/CustomerService.xsd,classpath:soap.xsd"/> </dataFormats> diff --git a/components/camel-soap/src/test/resources/org/apache/camel/dataformat/soap12/Soap12SpringRoundtripTest-context.xml b/components/camel-soap/src/test/resources/org/apache/camel/dataformat/soap12/Soap12SpringRoundtripTest-context.xml index 999988dc173..32b2617085c 100644 --- a/components/camel-soap/src/test/resources/org/apache/camel/dataformat/soap12/Soap12SpringRoundtripTest-context.xml +++ b/components/camel-soap/src/test/resources/org/apache/camel/dataformat/soap12/Soap12SpringRoundtripTest-context.xml @@ -35,7 +35,7 @@ <!-- we define the soap 1.2 jaxb data formats --> <dataFormats> - <soap id="soap" version="1.2" contextPath="com.example.customerservice" elementNameStrategyRef="myNameStrategy"/> + <soap id="soap" version="1.2" contextPath="com.example.customerservice" elementNameStrategy="myNameStrategy"/> </dataFormats> <route> diff --git a/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/dataformat/jaxb.json b/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/dataformat/jaxb.json index d1e727e3b76..7f766e73166 100644 --- a/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/dataformat/jaxb.json +++ b/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/dataformat/jaxb.json @@ -27,7 +27,7 @@ "fragment": { "index": 11, "kind": "attribute", "displayName": "Fragment", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "To turn on marshalling XML fragment trees. By default JAXB looks for XmlRootElement annotation on given class to operate on whole XML tree. This is useful but not always - sometimes generated code does n [...] "partClass": { "index": 12, "kind": "attribute", "displayName": "Part Class", "group": "advanced", "label": "advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Name of class used for fragment parsing. See more details at the fragment option." }, "partNamespace": { "index": 13, "kind": "attribute", "displayName": "Part Namespace", "group": "advanced", "label": "advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "XML namespace to use for fragment parsing. See more details at the fragment option." }, - "namespacePrefixRef": { "index": 14, "kind": "attribute", "displayName": "Namespace Prefix Ref", "group": "advanced", "label": "advanced", "required": false, "type": "string", "javaType": "java.lang.String", "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 contai [...] + "namespacePrefix": { "index": 14, "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 automatically assign namespace prefixes, such as ns2, ns3, ns4 etc. To control this mapping, Camel allows you to refer to a map which contains the [...] "xmlStreamWriterWrapper": { "index": 15, "kind": "attribute", "displayName": "Xml Stream Writer Wrapper", "group": "advanced", "label": "advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "To use a custom xml stream writer." }, "schemaLocation": { "index": 16, "kind": "attribute", "displayName": "Schema Location", "group": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "To define the location of the schema" }, "noNamespaceSchemaLocation": { "index": 17, "kind": "attribute", "displayName": "No Namespace Schema Location", "group": "advanced", "label": "advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "To define the location of the namespaceless schema" }, 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 1d0112de3b4..c66286a1550 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 @@ -16,9 +16,9 @@ "id": { "index": 0, "kind": "attribute", "displayName": "Id", "group": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "The id of this node" }, "contextPath": { "index": 1, "kind": "attribute", "displayName": "Context Path", "group": "common", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Package name where your JAXB classes are located." }, "encoding": { "index": 2, "kind": "attribute", "displayName": "Encoding", "group": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "To overrule and use a specific encoding" }, - "elementNameStrategyRef": { "index": 3, "kind": "attribute", "displayName": "Element Name Strategy Ref", "group": "advanced", "label": "advanced", "required": false, "type": "string", "javaType": "java.lang.String", "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 object and soap action when marshali [...] + "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" }, - "namespacePrefixRef": { "index": 5, "kind": "attribute", "displayName": "Namespace Prefix Ref", "group": "advanced", "label": "advanced", "required": false, "type": "string", "javaType": "java.lang.String", "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 contain [...] + "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." } } } diff --git a/core/camel-core-model/src/main/java/org/apache/camel/model/dataformat/JaxbDataFormat.java b/core/camel-core-model/src/main/java/org/apache/camel/model/dataformat/JaxbDataFormat.java index 4aeffcee004..949be4ffcad 100644 --- a/core/camel-core-model/src/main/java/org/apache/camel/model/dataformat/JaxbDataFormat.java +++ b/core/camel-core-model/src/main/java/org/apache/camel/model/dataformat/JaxbDataFormat.java @@ -72,8 +72,8 @@ public class JaxbDataFormat extends DataFormatDefinition implements ContentTypeH @Metadata(label = "advanced") private String partNamespace; @XmlAttribute - @Metadata(label = "advanced") - private String namespacePrefixRef; + @Metadata(label = "advanced", javaType = "java.util.Map") + private String namespacePrefix; @XmlAttribute @Metadata(label = "advanced") private String xmlStreamWriterWrapper; @@ -113,7 +113,7 @@ public class JaxbDataFormat extends DataFormatDefinition implements ContentTypeH this.fragment = source.fragment; this.partClass = source.partClass; this.partNamespace = source.partNamespace; - this.namespacePrefixRef = source.namespacePrefixRef; + this.namespacePrefix = source.namespacePrefix; this.xmlStreamWriterWrapper = source.xmlStreamWriterWrapper; this.schemaLocation = source.schemaLocation; this.noNamespaceSchemaLocation = source.noNamespaceSchemaLocation; @@ -142,7 +142,7 @@ public class JaxbDataFormat extends DataFormatDefinition implements ContentTypeH this.fragment = builder.fragment; this.partClass = builder.partClass; this.partNamespace = builder.partNamespace; - this.namespacePrefixRef = builder.namespacePrefixRef; + this.namespacePrefix = builder.namespacePrefix; this.xmlStreamWriterWrapper = builder.xmlStreamWriterWrapper; this.schemaLocation = builder.schemaLocation; this.noNamespaceSchemaLocation = builder.noNamespaceSchemaLocation; @@ -314,17 +314,17 @@ public class JaxbDataFormat extends DataFormatDefinition implements ContentTypeH this.partNamespace = partNamespace; } - public String getNamespacePrefixRef() { - return namespacePrefixRef; + public String getNamespacePrefix() { + return namespacePrefix; } /** - * When marshalling using JAXB or SOAP then the JAXB implementation will automatic assign namespace prefixes, such + * When marshalling using JAXB or SOAP then the JAXB implementation will automatically assign namespace prefixes, such * as ns2, ns3, ns4 etc. To control this mapping, Camel allows you to refer to a map which contains the desired * mapping. */ - public void setNamespacePrefixRef(String namespacePrefixRef) { - this.namespacePrefixRef = namespacePrefixRef; + public void setNamespacePrefix(String namespacePrefix) { + this.namespacePrefix = namespacePrefix; } public String getXmlStreamWriterWrapper() { @@ -416,7 +416,7 @@ public class JaxbDataFormat extends DataFormatDefinition implements ContentTypeH private String fragment; private String partClass; private String partNamespace; - private String namespacePrefixRef; + private String namespacePrefix; private String xmlStreamWriterWrapper; private String schemaLocation; private String noNamespaceSchemaLocation; @@ -624,8 +624,8 @@ public class JaxbDataFormat extends DataFormatDefinition implements ContentTypeH * prefixes, such as ns2, ns3, ns4 etc. To control this mapping, Camel allows you to refer to a map which * contains the desired mapping. */ - public Builder namespacePrefixRef(String namespacePrefixRef) { - this.namespacePrefixRef = namespacePrefixRef; + public Builder namespacePrefix(String namespacePrefix) { + this.namespacePrefix = namespacePrefix; return this; } 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 b6df4c864e3..9f69c8b6cd9 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 @@ -34,21 +34,22 @@ import org.apache.camel.spi.Metadata; @XmlAccessorType(XmlAccessType.FIELD) public class SoapDataFormat extends DataFormatDefinition { + @XmlTransient + private Object elementNameStrategyObject; + @XmlAttribute(required = true) private String contextPath; @XmlAttribute private String encoding; @XmlAttribute - @Metadata(label = "advanced") - private String elementNameStrategyRef; - @XmlTransient - private Object elementNameStrategy; + @Metadata(label = "advanced", javaType = "org.apache.camel.dataformat.soap.name.ElementNameStrategy") + private String elementNameStrategy; @XmlAttribute @Metadata(defaultValue = "1.1", enums = "1.1,1.2") private String version; @XmlAttribute - @Metadata(label = "advanced") - private String namespacePrefixRef; + @Metadata(label = "advanced", javaType = "java.util.Map") + private String namespacePrefix; @XmlAttribute private String schema; @@ -60,10 +61,10 @@ public class SoapDataFormat extends DataFormatDefinition { super(source); this.contextPath = source.contextPath; this.encoding = source.encoding; - this.elementNameStrategyRef = source.elementNameStrategyRef; this.elementNameStrategy = source.elementNameStrategy; + this.elementNameStrategyObject = source.elementNameStrategyObject; this.version = source.version; - this.namespacePrefixRef = source.namespacePrefixRef; + this.namespacePrefix = source.namespacePrefix; this.schema = source.schema; } @@ -75,23 +76,23 @@ public class SoapDataFormat extends DataFormatDefinition { public SoapDataFormat(String contextPath, String elementNameStrategyRef) { this(); setContextPath(contextPath); - setElementNameStrategyRef(elementNameStrategyRef); + setElementNameStrategy(elementNameStrategyRef); } - public SoapDataFormat(String contextPath, Object elementNameStrategy) { + public SoapDataFormat(String contextPath, Object elementNameStrategyObject) { this(); setContextPath(contextPath); - setElementNameStrategy(elementNameStrategy); + setElementNameStrategyObject(elementNameStrategyObject); } private SoapDataFormat(Builder builder) { this(); this.contextPath = builder.contextPath; this.encoding = builder.encoding; - this.elementNameStrategyRef = builder.elementNameStrategyRef; this.elementNameStrategy = builder.elementNameStrategy; + this.elementNameStrategyObject = builder.elementNameStrategyObject; this.version = builder.version; - this.namespacePrefixRef = builder.namespacePrefixRef; + this.namespacePrefix = builder.namespacePrefix; this.schema = builder.schema; } @@ -141,12 +142,12 @@ public class SoapDataFormat extends DataFormatDefinition { * use the ServiceInterfaceStrategy. In the case you have no annotated service interface you should use * QNameStrategy or TypeNameStrategy. */ - public void setElementNameStrategyRef(String elementNameStrategyRef) { - this.elementNameStrategyRef = elementNameStrategyRef; + public void setElementNameStrategy(String elementNameStrategy) { + this.elementNameStrategy = elementNameStrategy; } - public String getElementNameStrategyRef() { - return elementNameStrategyRef; + public String getElementNameStrategy() { + return elementNameStrategy; } public String getVersion() { @@ -181,16 +182,16 @@ public class SoapDataFormat extends DataFormatDefinition { * use the ServiceInterfaceStrategy. In the case you have no annotated service interface you should use * QNameStrategy or TypeNameStrategy. */ - public void setElementNameStrategy(Object elementNameStrategy) { - this.elementNameStrategy = elementNameStrategy; + public void setElementNameStrategyObject(Object elementNameStrategyObject) { + this.elementNameStrategyObject = elementNameStrategyObject; } - public Object getElementNameStrategy() { - return elementNameStrategy; + public Object getElementNameStrategyObject() { + return elementNameStrategyObject; } - public String getNamespacePrefixRef() { - return namespacePrefixRef; + public String getNamespacePrefix() { + return namespacePrefix; } /** @@ -198,8 +199,8 @@ public class SoapDataFormat extends DataFormatDefinition { * as ns2, ns3, ns4 etc. To control this mapping, Camel allows you to refer to a map which contains the desired * mapping. */ - public void setNamespacePrefixRef(String namespacePrefixRef) { - this.namespacePrefixRef = namespacePrefixRef; + public void setNamespacePrefix(String namespacePrefix) { + this.namespacePrefix = namespacePrefix; } public String getSchema() { @@ -222,10 +223,10 @@ public class SoapDataFormat extends DataFormatDefinition { private String contextPath; private String encoding; - private String elementNameStrategyRef; - private Object elementNameStrategy; + private String elementNameStrategy; + private Object elementNameStrategyObject; private String version; - private String namespacePrefixRef; + private String namespacePrefix; private String schema; /** @@ -263,8 +264,8 @@ public class SoapDataFormat extends DataFormatDefinition { * want to use the ServiceInterfaceStrategy. In the case you have no annotated service interface you should use * QNameStrategy or TypeNameStrategy. */ - public Builder elementNameStrategyRef(String elementNameStrategyRef) { - this.elementNameStrategyRef = elementNameStrategyRef; + public Builder elementNameStrategy(String elementNameStrategy) { + this.elementNameStrategy = elementNameStrategy; return this; } @@ -297,8 +298,8 @@ public class SoapDataFormat extends DataFormatDefinition { * want to use the ServiceInterfaceStrategy. In the case you have no annotated service interface you should use * QNameStrategy or TypeNameStrategy. */ - public Builder elementNameStrategy(Object elementNameStrategy) { - this.elementNameStrategy = elementNameStrategy; + public Builder elementNameStrategyObject(Object elementNameStrategyObject) { + this.elementNameStrategyObject = elementNameStrategyObject; return this; } @@ -307,8 +308,8 @@ public class SoapDataFormat extends DataFormatDefinition { * such as ns2, ns3, ns4 etc. To control this mapping, Camel allows you to refer to a map which contains the * desired mapping. */ - public Builder namespacePrefixRef(String namespacePrefixRef) { - this.namespacePrefixRef = namespacePrefixRef; + public Builder namespacePrefix(String namespacePrefix) { + this.namespacePrefix = namespacePrefix; return this; } diff --git a/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/dataformat/JaxbDataFormatReifier.java b/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/dataformat/JaxbDataFormatReifier.java index 7ac3561b279..7bd50abbdf0 100644 --- a/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/dataformat/JaxbDataFormatReifier.java +++ b/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/dataformat/JaxbDataFormatReifier.java @@ -41,7 +41,7 @@ public class JaxbDataFormatReifier extends DataFormatReifier<JaxbDataFormat> { properties.put("partClass", definition.getPartClass()); properties.put("partNamespace", definition.getPartNamespace()); properties.put("encoding", definition.getEncoding()); - properties.put("namespacePrefix", asRef(definition.getNamespacePrefixRef())); + properties.put("namespacePrefix", asRef(definition.getNamespacePrefix())); properties.put("schema", definition.getSchema()); properties.put("schemaSeverityLevel", definition.getSchemaSeverityLevel()); properties.put("xmlStreamWriterWrapper", definition.getXmlStreamWriterWrapper()); diff --git a/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/dataformat/SoapDataFormatReifier.java b/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/dataformat/SoapDataFormatReifier.java index b7ff862db86..062d3e5348d 100644 --- a/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/dataformat/SoapDataFormatReifier.java +++ b/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/dataformat/SoapDataFormatReifier.java @@ -30,11 +30,11 @@ public class SoapDataFormatReifier extends DataFormatReifier<SoapDataFormat> { @Override protected void prepareDataFormatConfig(Map<String, Object> properties) { - properties.put("elementNameStrategy", or(definition.getElementNameStrategy(), - asRef(definition.getElementNameStrategyRef()))); + properties.put("elementNameStrategy", or(definition.getElementNameStrategyObject(), + asRef(definition.getElementNameStrategy()))); properties.put("encoding", definition.getEncoding()); properties.put("version", definition.getVersion()); - properties.put("namespacePrefix", asRef(definition.getNamespacePrefixRef())); + properties.put("namespacePrefix", asRef(definition.getNamespacePrefix())); properties.put("schema", definition.getSchema()); properties.put("contextPath", definition.getContextPath()); } 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 f976c83417c..d2f127616f3 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 @@ -2008,7 +2008,7 @@ public class ModelParser extends BaseParser { case "ignoreJAXBElement": def.setIgnoreJAXBElement(val); yield true; case "jaxbProviderProperties": def.setJaxbProviderProperties(val); yield true; case "mustBeJAXBElement": def.setMustBeJAXBElement(val); yield true; - case "namespacePrefixRef": def.setNamespacePrefixRef(val); yield true; + case "namespacePrefix": def.setNamespacePrefix(val); yield true; case "noNamespaceSchemaLocation": def.setNoNamespaceSchemaLocation(val); yield true; case "objectFactory": def.setObjectFactory(val); yield true; case "partClass": def.setPartClass(val); yield true; @@ -2138,9 +2138,9 @@ public class ModelParser extends BaseParser { protected SoapDataFormat doParseSoapDataFormat() throws IOException, XmlPullParserException { return doParse(new SoapDataFormat(), (def, key, val) -> switch (key) { case "contextPath": def.setContextPath(val); yield true; - case "elementNameStrategyRef": def.setElementNameStrategyRef(val); yield true; + case "elementNameStrategy": def.setElementNameStrategy(val); yield true; case "encoding": def.setEncoding(val); yield true; - case "namespacePrefixRef": def.setNamespacePrefixRef(val); yield true; + case "namespacePrefix": def.setNamespacePrefix(val); yield true; case "schema": def.setSchema(val); yield true; case "version": def.setVersion(val); yield true; default: yield identifiedTypeAttributeHandler().accept(def, key, val); 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 fb99ea0a39e..fafe173f5d4 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 @@ -2714,11 +2714,11 @@ public class ModelWriter extends BaseWriter { doWriteAttribute("contextPath", def.getContextPath(), null); doWriteAttribute("noNamespaceSchemaLocation", def.getNoNamespaceSchemaLocation(), null); doWriteAttribute("encoding", def.getEncoding(), null); + doWriteAttribute("namespacePrefix", def.getNamespacePrefix(), null); doWriteAttribute("fragment", def.getFragment(), null); doWriteAttribute("filterNonXmlChars", def.getFilterNonXmlChars(), null); doWriteAttribute("mustBeJAXBElement", def.getMustBeJAXBElement(), null); doWriteAttribute("objectFactory", def.getObjectFactory(), "true"); - doWriteAttribute("namespacePrefixRef", def.getNamespacePrefixRef(), null); doWriteAttribute("partClass", def.getPartClass(), null); doWriteAttribute("jaxbProviderProperties", def.getJaxbProviderProperties(), null); doWriteAttribute("partNamespace", def.getPartNamespace(), null); @@ -2844,11 +2844,11 @@ public class ModelWriter extends BaseWriter { startElement(name); doWriteIdentifiedTypeAttributes(def); doWriteAttribute("schema", def.getSchema(), null); - doWriteAttribute("namespacePrefixRef", def.getNamespacePrefixRef(), null); - doWriteAttribute("elementNameStrategyRef", def.getElementNameStrategyRef(), null); doWriteAttribute("contextPath", def.getContextPath(), null); doWriteAttribute("encoding", def.getEncoding(), null); + doWriteAttribute("namespacePrefix", def.getNamespacePrefix(), null); doWriteAttribute("version", def.getVersion(), "1.1"); + doWriteAttribute("elementNameStrategy", def.getElementNameStrategy(), null); endElement(name); } protected void doWriteSwiftMtDataFormat(String name, SwiftMtDataFormat def) throws IOException { 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 054f90cffc3..43f8f17ea8d 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 @@ -2714,11 +2714,11 @@ public class ModelWriter extends BaseWriter { doWriteAttribute("contextPath", def.getContextPath(), null); doWriteAttribute("noNamespaceSchemaLocation", def.getNoNamespaceSchemaLocation(), null); doWriteAttribute("encoding", def.getEncoding(), null); + doWriteAttribute("namespacePrefix", def.getNamespacePrefix(), null); doWriteAttribute("fragment", def.getFragment(), null); doWriteAttribute("filterNonXmlChars", def.getFilterNonXmlChars(), null); doWriteAttribute("mustBeJAXBElement", def.getMustBeJAXBElement(), null); doWriteAttribute("objectFactory", def.getObjectFactory(), "true"); - doWriteAttribute("namespacePrefixRef", def.getNamespacePrefixRef(), null); doWriteAttribute("partClass", def.getPartClass(), null); doWriteAttribute("jaxbProviderProperties", def.getJaxbProviderProperties(), null); doWriteAttribute("partNamespace", def.getPartNamespace(), null); @@ -2844,11 +2844,11 @@ public class ModelWriter extends BaseWriter { startElement(name); doWriteIdentifiedTypeAttributes(def); doWriteAttribute("schema", def.getSchema(), null); - doWriteAttribute("namespacePrefixRef", def.getNamespacePrefixRef(), null); - doWriteAttribute("elementNameStrategyRef", def.getElementNameStrategyRef(), null); doWriteAttribute("contextPath", def.getContextPath(), null); doWriteAttribute("encoding", def.getEncoding(), null); + doWriteAttribute("namespacePrefix", def.getNamespacePrefix(), null); doWriteAttribute("version", def.getVersion(), "1.1"); + doWriteAttribute("elementNameStrategy", def.getElementNameStrategy(), null); endElement(name); } protected void doWriteSwiftMtDataFormat(String name, SwiftMtDataFormat def) throws IOException { diff --git a/docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_15.adoc b/docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_15.adoc index f18d41664bf..61abf5bbe4c 100644 --- a/docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_15.adoc +++ b/docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_15.adoc @@ -19,6 +19,9 @@ to their implementation using reflection-free configurers. A few data formats ha |csv|formatRef|format |csv|formatName|format |flatpack|parserFactoryRef|parserFactory +|jaxb|namespacePrefixRef|namespacePrefix +|soap|namespacePrefixRef|namespacePrefix +|soap|elementNameStrategyRef|elementNameStrategy |=== And in XML DSL the csv dataformat have changed `header` from a `List<String>` to be a single `String`
