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 2018/07/10 08:30:21 UTC
[2/7] cayenne git commit: CAY-2427 Undo: undo throws exeption
CAY-2427 Undo: undo throws exeption
Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo
Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/94db9226
Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/94db9226
Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/94db9226
Branch: refs/heads/STABLE-4.0
Commit: 94db9226bf1466069c22a3c75e496c8c492adbb9
Parents: 8d4c83a
Author: Arseni Bulatski <an...@gmail.com>
Authored: Tue Jul 10 11:04:14 2018 +0300
Committer: Arseni Bulatski <an...@gmail.com>
Committed: Tue Jul 10 11:04:14 2018 +0300
----------------------------------------------------------------------
RELEASE-NOTES.txt | 1 +
.../cayenne/modeler/action/DbEntitySyncAction.java | 15 +++++++++++----
2 files changed, 12 insertions(+), 4 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cayenne/blob/94db9226/RELEASE-NOTES.txt
----------------------------------------------------------------------
diff --git a/RELEASE-NOTES.txt b/RELEASE-NOTES.txt
index 1d85638..8599c3b 100644
--- a/RELEASE-NOTES.txt
+++ b/RELEASE-NOTES.txt
@@ -47,6 +47,7 @@ CAY-2401 Modeler: NPE in ObjEntity sync action
CAY-2405 Broken prefetch of entity with inheritance and attribute with custom java type
CAY-2411 Wrong resolution of ExtendedType with ValueObjectType for inherited class
CAY-2420 Modeler: search is not performed for Stored Procedures
+CAY-2427 Modeler: Undo throws exeption
CAY-2429 Generate classes: Invalid template type: EMBEDDABLE_SINGLE_CLASS
----------------------------------
http://git-wip-us.apache.org/repos/asf/cayenne/blob/94db9226/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/DbEntitySyncAction.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/DbEntitySyncAction.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/DbEntitySyncAction.java
index b774233..822e95a 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/DbEntitySyncAction.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/DbEntitySyncAction.java
@@ -22,6 +22,7 @@ package org.apache.cayenne.modeler.action;
import org.apache.cayenne.configuration.DataChannelDescriptor;
import org.apache.cayenne.dbsync.merge.context.EntityMergeSupport;
import org.apache.cayenne.dbsync.naming.DefaultObjectNameGenerator;
+import org.apache.cayenne.map.DbAttribute;
import org.apache.cayenne.map.DbEntity;
import org.apache.cayenne.map.DbRelationship;
import org.apache.cayenne.map.ObjEntity;
@@ -99,6 +100,7 @@ public class DbEntitySyncAction extends CayenneAction {
// filter out inherited entities, as we need to add attributes only to the roots
filterInheritedEntities(entities);
+ boolean hasChanges = false;
for(ObjEntity entity : entities) {
DbEntitySyncUndoableEdit.EntitySyncUndoableListener listener = undoableEdit.new EntitySyncUndoableListener(
@@ -106,21 +108,26 @@ public class DbEntitySyncAction extends CayenneAction {
merger.addEntityMergeListener(listener);
+ Collection<DbAttribute> meaningfulFKs = merger.getMeaningfulFKs(entity);
+
// TODO: addition or removal of model objects should be reflected in listener callbacks...
// we should not be trying to introspect the merger
- if (merger.isRemovingMeaningfulFKs()) {
- undoableEdit.addEdit(undoableEdit.new MeaningfulFKsUndoableEdit(entity, merger
- .getMeaningfulFKs(entity)));
+ if (merger.isRemovingMeaningfulFKs() && !meaningfulFKs.isEmpty()) {
+ undoableEdit.addEdit(undoableEdit.new MeaningfulFKsUndoableEdit(entity, meaningfulFKs));
+ hasChanges = true;
}
if (merger.synchronizeWithDbEntity(entity)) {
mediator.fireObjEntityEvent(new EntityEvent(this, entity, MapEvent.CHANGE));
+ hasChanges = true;
}
merger.removeEntityMergeListener(listener);
}
- application.getUndoManager().addEdit(undoableEdit);
+ if(hasChanges) {
+ application.getUndoManager().addEdit(undoableEdit);
+ }
}
}