You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by nt...@apache.org on 2019/09/17 19:42:22 UTC
[cayenne] 02/02: CAY-2618 Unstable property ordering in generated
classes
This is an automated email from the ASF dual-hosted git repository.
ntimofeev pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/cayenne.git
commit b1fd084ddd096e20f9ba7ff2c160ba874051af42
Author: Nikita Timofeev <st...@gmail.com>
AuthorDate: Tue Sep 17 15:14:02 2019 +0300
CAY-2618 Unstable property ordering in generated classes
---
RELEASE-NOTES.txt | 1 +
.../org/apache/cayenne/gen/EntityArtifact.java | 24 ++++++++++++++++++++++
2 files changed, 25 insertions(+)
diff --git a/RELEASE-NOTES.txt b/RELEASE-NOTES.txt
index ed95910..bb8994b 100644
--- a/RELEASE-NOTES.txt
+++ b/RELEASE-NOTES.txt
@@ -96,6 +96,7 @@ CAY-2606 Can't resolve obj path with embeddable component
CAY-2608 CayenneModeler: NPE when reverse engineering with an auto-adapter DataSource
CAY-2609 Modeler: can't close dbImport result dialog window
CAY-2616 Modeler: Wrong handling of path with spaces
+CAY-2618 Unstable property ordering in generated classes
CAY-2619 "to-dep PK" related dbimport delta confuses the Modeler
----------------------------------
diff --git a/cayenne-cgen/src/main/java/org/apache/cayenne/gen/EntityArtifact.java b/cayenne-cgen/src/main/java/org/apache/cayenne/gen/EntityArtifact.java
index 5875d32..c0d3a82 100644
--- a/cayenne-cgen/src/main/java/org/apache/cayenne/gen/EntityArtifact.java
+++ b/cayenne-cgen/src/main/java/org/apache/cayenne/gen/EntityArtifact.java
@@ -18,8 +18,13 @@
****************************************************************/
package org.apache.cayenne.gen;
+import java.util.Map;
+import java.util.TreeMap;
+
import org.apache.cayenne.BaseDataObject;
+import org.apache.cayenne.map.ObjAttribute;
import org.apache.cayenne.map.ObjEntity;
+import org.apache.cayenne.map.ObjRelationship;
import org.apache.velocity.context.Context;
/**
@@ -35,6 +40,9 @@ public class EntityArtifact implements Artifact {
public EntityArtifact(ObjEntity entity) {
this.entity = entity;
+ // make sure we have attributes and relationships in order
+ sortAttributes();
+ sortRelationships();
}
/**
@@ -94,4 +102,20 @@ public class EntityArtifact implements Artifact {
context.put(ENTITY_UTILS_KEY, metadata);
}
+
+ private void sortAttributes() {
+ Map<String, ObjAttribute> attributeMap = new TreeMap<>(entity.getAttributeMap());
+ for(Map.Entry<String, ObjAttribute> entry : attributeMap.entrySet()) {
+ entity.removeAttribute(entry.getKey());
+ entity.addAttribute(entry.getValue());
+ }
+ }
+
+ private void sortRelationships() {
+ Map<String, ObjRelationship> relationshipMap = new TreeMap<>(entity.getRelationshipMap());
+ for(Map.Entry<String, ObjRelationship> entry : relationshipMap.entrySet()) {
+ entity.removeRelationship(entry.getKey());
+ entity.addRelationship(entry.getValue());
+ }
+ }
}