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

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


The following commit(s) were added to refs/heads/main by this push:
     new bcdd7a0bbd7 CAMEL-22022: camel-jackson/camel-jacksonxml - Use 
LinkedHashMap instead of HashMap to keep ordering by default. (#17883)
bcdd7a0bbd7 is described below

commit bcdd7a0bbd7c739fccb887368c5202680b691eab
Author: Claus Ibsen <claus.ib...@gmail.com>
AuthorDate: Sat Apr 26 12:24:40 2025 +0200

    CAMEL-22022: camel-jackson/camel-jacksonxml - Use LinkedHashMap instead of 
HashMap to keep ordering by default. (#17883)
---
 .../camel/component/jackson/AbstractJacksonDataFormat.java     |  6 +++---
 .../camel/component/jacksonxml/JacksonXMLDataFormat.java       | 10 +++++-----
 .../modules/ROOT/pages/camel-4x-upgrade-guide-4_12.adoc        |  5 +++++
 3 files changed, 13 insertions(+), 8 deletions(-)

diff --git 
a/components/camel-jackson/src/main/java/org/apache/camel/component/jackson/AbstractJacksonDataFormat.java
 
b/components/camel-jackson/src/main/java/org/apache/camel/component/jackson/AbstractJacksonDataFormat.java
index 22db2ba6b90..39567ec4f87 100644
--- 
a/components/camel-jackson/src/main/java/org/apache/camel/component/jackson/AbstractJacksonDataFormat.java
+++ 
b/components/camel-jackson/src/main/java/org/apache/camel/component/jackson/AbstractJacksonDataFormat.java
@@ -22,8 +22,8 @@ import java.io.OutputStream;
 import java.io.Reader;
 import java.util.ArrayList;
 import java.util.Collection;
-import java.util.HashMap;
 import java.util.Iterator;
+import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
@@ -390,11 +390,11 @@ public abstract class AbstractJacksonDataFormat extends 
ServiceSupport
     }
 
     /**
-     * Uses {@link HashMap} when unmarshalling.
+     * Uses {@link LinkedHashMap} when unmarshalling.
      */
     public void useMap() {
         setCollectionType(null);
-        setUnmarshalType(HashMap.class);
+        setUnmarshalType(LinkedHashMap.class);
     }
 
     /**
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 4ec59b5bf8f..e769a4aa328 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
@@ -22,8 +22,8 @@ import java.io.OutputStream;
 import java.io.Reader;
 import java.util.ArrayList;
 import java.util.Collection;
-import java.util.HashMap;
 import java.util.Iterator;
+import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.TimeZone;
@@ -91,7 +91,7 @@ public class JacksonXMLDataFormat extends ServiceSupport
      * Use the default Jackson {@link XmlMapper} and {@link Map}
      */
     public JacksonXMLDataFormat() {
-        this(HashMap.class);
+        this(LinkedHashMap.class);
     }
 
     /**
@@ -375,11 +375,11 @@ public class JacksonXMLDataFormat extends ServiceSupport
     }
 
     /**
-     * Uses {@link java.util.HashMap} when unmarshalling.
+     * Uses {@link java.util.LinkedHashMap} when unmarshalling.
      */
     public void useMap() {
         setCollectionType(null);
-        setUnmarshalType(HashMap.class);
+        setUnmarshalType(LinkedHashMap.class);
     }
 
     /**
@@ -533,7 +533,7 @@ public class JacksonXMLDataFormat extends ServiceSupport
 
     @Override
     protected void doInit() throws Exception {
-        if (unmarshalTypeName != null && (unmarshalType == null || 
unmarshalType == HashMap.class)) {
+        if (unmarshalTypeName != null && (unmarshalType == null || 
unmarshalType == LinkedHashMap.class)) {
             unmarshalType = 
camelContext.getClassResolver().resolveClass(unmarshalTypeName);
         }
         if (jsonViewTypeName != null && jsonView == null) {
diff --git 
a/docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_12.adoc 
b/docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_12.adoc
index 912e783feb1..b2cf29e1fda 100644
--- a/docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_12.adoc
+++ b/docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_12.adoc
@@ -90,6 +90,11 @@ not be able to add the `otherwise` block to the outer Choice.
 Add options allowing the addition of an `Authorization` header for Basic or 
Bearer authentication to client and
 asynchronous MDN requests.
 
+=== camel-jackson / camel-jacksonxml
+
+The default unmarshalType has been changed from `HashMap` to `LinkedHashMap` 
that keeps ordering of the elements
+so they have similar order as the input document.
+
 === camel-micrometer
 
 The `tags` parameter has been _fixed_ to be multivalued and tooling friendly. 
So

Reply via email to