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:20 UTC

[cayenne] branch master updated (a206d11 -> b1fd084)

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

ntimofeev pushed a change to branch master
in repository https://gitbox.apache.org/repos/asf/cayenne.git.


    from a206d11  CAY-2617 NPE in processing hierarchical prefetch node  - process null case
     new 818cfaf  CAY-2619 "to-dep PK" related dbimport delta confuses the Modeler
     new b1fd084  CAY-2618 Unstable property ordering in generated classes

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 RELEASE-NOTES.txt                                  |  2 ++
 .../org/apache/cayenne/gen/EntityArtifact.java     | 24 ++++++++++++++++++++++
 .../cayenne/dbsync/merge/DbEntityMerger.java       |  2 +-
 .../merge/token/model/SetPrimaryKeyToModel.java    |  2 +-
 .../main/java/org/apache/cayenne/map/DbEntity.java |  8 ++++++++
 5 files changed, 36 insertions(+), 2 deletions(-)


[cayenne] 01/02: CAY-2619 "to-dep PK" related dbimport delta confuses the Modeler

Posted by nt...@apache.org.
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 818cfaf7da409bf1c1383283b5c59c313eda0479
Author: Nikita Timofeev <st...@gmail.com>
AuthorDate: Tue Sep 17 13:52:42 2019 +0300

    CAY-2619 "to-dep PK" related dbimport delta confuses the Modeler
---
 RELEASE-NOTES.txt                                                 | 1 +
 .../main/java/org/apache/cayenne/dbsync/merge/DbEntityMerger.java | 2 +-
 .../cayenne/dbsync/merge/token/model/SetPrimaryKeyToModel.java    | 2 +-
 cayenne-server/src/main/java/org/apache/cayenne/map/DbEntity.java | 8 ++++++++
 4 files changed, 11 insertions(+), 2 deletions(-)

diff --git a/RELEASE-NOTES.txt b/RELEASE-NOTES.txt
index bd2f1c5..ed95910 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-2619 "to-dep PK" related dbimport delta confuses the Modeler
 
 ----------------------------------
 Release: 4.1.B1
diff --git a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/merge/DbEntityMerger.java b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/merge/DbEntityMerger.java
index 562a885..541a817 100644
--- a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/merge/DbEntityMerger.java
+++ b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/merge/DbEntityMerger.java
@@ -130,7 +130,7 @@ class DbEntityMerger extends AbstractMerger<DataMap, DbEntity> {
     }
 
     private Set<String> upperCaseEntityNames(Collection<? extends Attribute> attributes) {
-        Set<String> names = new HashSet<String>();
+        Set<String> names = new HashSet<>();
         for (Attribute attr : attributes) {
             names.add(attr.getName().toUpperCase());
         }
diff --git a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/merge/token/model/SetPrimaryKeyToModel.java b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/merge/token/model/SetPrimaryKeyToModel.java
index 6d31e58..ea47bf0 100644
--- a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/merge/token/model/SetPrimaryKeyToModel.java
+++ b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/merge/token/model/SetPrimaryKeyToModel.java
@@ -35,7 +35,7 @@ public class SetPrimaryKeyToModel extends AbstractToModelToken.Entity {
     private Collection<DbAttribute> primaryKeyOriginal;
     private Collection<DbAttribute> primaryKeyNew;
     private String detectedPrimaryKeyName;
-    private Set<String> primaryKeyNewAttributeNames = new HashSet<String>();
+    private Set<String> primaryKeyNewAttributeNames = new HashSet<>();
 
     public SetPrimaryKeyToModel(DbEntity entity,
             Collection<DbAttribute> primaryKeyOriginal,
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/map/DbEntity.java b/cayenne-server/src/main/java/org/apache/cayenne/map/DbEntity.java
index f6f27c9..e68c1fe 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/map/DbEntity.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/map/DbEntity.java
@@ -474,6 +474,14 @@ public class DbEntity extends Entity implements ConfigurationNode, DbEntityListe
                         }
                     }
             }
+
+            // check toDep PK for reverse relationships
+            for (DbRelationship rel : getRelationships()) {
+                DbRelationship reverse = rel.getReverseRelationship();
+                if(reverse != null && reverse.isToDependentPK() && !reverse.isValidForDepPk()) {
+                    reverse.setToDependentPK(false);
+                }
+            }
         }
 
         // handle generated key refresh


[cayenne] 02/02: CAY-2618 Unstable property ordering in generated classes

Posted by nt...@apache.org.
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());
+        }
+    }
 }