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

ntimofeev pushed a commit to branch STABLE-4.1
in repository https://gitbox.apache.org/repos/asf/cayenne.git


The following commit(s) were added to refs/heads/STABLE-4.1 by this push:
     new e1b3de3  CAY-2679 Unstable ordering of relationships in the .map.xml 
file
e1b3de3 is described below

commit e1b3de34de5b4230f03068e2a14fd4ce74e61b84
Author: Nikita Timofeev <stari...@gmail.com>
AuthorDate: Wed Sep 30 18:20:47 2020 +0300

    CAY-2679 Unstable ordering of relationships in the .map.xml file
---
 RELEASE-NOTES.txt                                                | 1 +
 cayenne-server/src/main/java/org/apache/cayenne/map/DataMap.java | 9 +++++++--
 2 files changed, 8 insertions(+), 2 deletions(-)

diff --git a/RELEASE-NOTES.txt b/RELEASE-NOTES.txt
index 0a121b4..1ffcae3 100644
--- a/RELEASE-NOTES.txt
+++ b/RELEASE-NOTES.txt
@@ -15,6 +15,7 @@ Date:
 Bug Fixes:
 
 CAY-2670 CommitLog does not include FKs for deleted objects with one-way 
relationships
+CAY-2679 Unstable ordering of relationships in the .map.xml file
 
 ----------------------------------
 Release: 4.1
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/map/DataMap.java 
b/cayenne-server/src/main/java/org/apache/cayenne/map/DataMap.java
index 9bebad8..7ea1521 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/map/DataMap.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/map/DataMap.java
@@ -37,6 +37,7 @@ import java.io.Serializable;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
+import java.util.Comparator;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.TreeMap;
@@ -335,7 +336,9 @@ public class DataMap implements Serializable, 
ConfigurationNode, XMLSerializable
        // stores relationships for the map of entities
        private void encodeDbRelationshipsAsXML(XMLEncoder encoder, 
ConfigurationNodeVisitor delegate) {
                for (Entity entity : new TreeMap<>(getDbEntityMap()).values()) {
-                       entity.getRelationships().stream().filter(r -> 
!r.isRuntime())
+                       entity.getRelationships().stream()
+                                       .filter(r -> !r.isRuntime())
+                                       
.sorted(Comparator.comparing(Relationship::getName))
                                        .forEach(r -> r.encodeAsXML(encoder, 
delegate));
                }
        }
@@ -343,7 +346,9 @@ public class DataMap implements Serializable, 
ConfigurationNode, XMLSerializable
        // stores relationships for the map of entities
        private void encodeObjRelationshipsAsXML(XMLEncoder encoder, 
ConfigurationNodeVisitor delegate) {
                for (ObjEntity entity : new 
TreeMap<>(getObjEntityMap()).values()) {
-                       entity.getDeclaredRelationships().stream().filter(r -> 
!r.isRuntime())
+                       entity.getDeclaredRelationships().stream()
+                                       .filter(r -> !r.isRuntime())
+                                       
.sorted(Comparator.comparing(Relationship::getName))
                                        .forEach(r -> r.encodeAsXML(encoder, 
delegate));
                }
        }

Reply via email to