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


The following commit(s) were added to refs/heads/master by this push:
     new e2c204e  CAY-2647 Modeler: project upgrade from 4.0.B2 to 4.1.RC2 
failure
e2c204e is described below

commit e2c204ee706f0acd43e80c82eff9997aa345743e
Author: Nikita Timofeev <[email protected]>
AuthorDate: Fri Jan 31 16:47:13 2020 +0300

    CAY-2647 Modeler: project upgrade from 4.0.B2 to 4.1.RC2 failure
---
 RELEASE-NOTES.txt                                       |  1 +
 .../cayenne/project/upgrade/DefaultUpgradeService.java  | 17 ++++++++++++++++-
 2 files changed, 17 insertions(+), 1 deletion(-)

diff --git a/RELEASE-NOTES.txt b/RELEASE-NOTES.txt
index c731172..1f2b31b 100644
--- a/RELEASE-NOTES.txt
+++ b/RELEASE-NOTES.txt
@@ -108,6 +108,7 @@ CAY-2633 Modeler: attribute sorting logic in cgen can 
corrupt model
 CAY-2634 Minor inconsistencies in Modeler "DB Import"
 CAY-2635 Lambda expressions break ROP serialization
 CAY-2646 Wrong target path selection logic in cgen config
+CAY-2647 Modeler: project upgrade from 4.0.B2 to 4.1.RC2 failure
 
 ----------------------------------
 Release: 4.1.B1
diff --git 
a/cayenne-project/src/main/java/org/apache/cayenne/project/upgrade/DefaultUpgradeService.java
 
b/cayenne-project/src/main/java/org/apache/cayenne/project/upgrade/DefaultUpgradeService.java
index 76906b1..ceafe92 100644
--- 
a/cayenne-project/src/main/java/org/apache/cayenne/project/upgrade/DefaultUpgradeService.java
+++ 
b/cayenne-project/src/main/java/org/apache/cayenne/project/upgrade/DefaultUpgradeService.java
@@ -43,6 +43,8 @@ import org.apache.cayenne.configuration.ConfigurationTree;
 import org.apache.cayenne.configuration.DataChannelDescriptor;
 import org.apache.cayenne.configuration.DataChannelDescriptorLoader;
 import org.apache.cayenne.di.Inject;
+import org.apache.cayenne.map.DataMap;
+import org.apache.cayenne.map.EntityResolver;
 import org.apache.cayenne.project.Project;
 import org.apache.cayenne.project.ProjectSaver;
 import org.apache.cayenne.project.upgrade.handlers.UpgradeHandler;
@@ -198,7 +200,7 @@ public class DefaultUpgradeService implements 
UpgradeService {
 
     protected ConfigurationTree<DataChannelDescriptor> upgradeModel(Resource 
resource, List<UpgradeHandler> handlerList) {
         // Load Model back from the update XML
-        ConfigurationTree<DataChannelDescriptor> configurationTree = 
loader.load(resource);
+        ConfigurationTree<DataChannelDescriptor> configurationTree = 
loadProject(resource);
 
         // Update model level if needed
         for(UpgradeHandler handler : handlerList) {
@@ -208,6 +210,19 @@ public class DefaultUpgradeService implements 
UpgradeService {
         return configurationTree;
     }
 
+    protected ConfigurationTree<DataChannelDescriptor> loadProject(Resource 
resource) {
+        // Load Model back from the update XML
+        ConfigurationTree<DataChannelDescriptor> configurationTree = 
loader.load(resource);
+
+        // link all datamaps, or else we will lose cross-datamaps relationships
+        EntityResolver resolver = new EntityResolver();
+        for(DataMap dataMap : configurationTree.getRootNode().getDataMaps()) {
+            resolver.addDataMap(dataMap);
+            dataMap.setNamespace(resolver);
+        }
+        return configurationTree;
+    }
+
     protected void saveModel(ConfigurationTree<DataChannelDescriptor> 
configurationTree) {
         // Save project once again via project saver, this will normalize XML 
to minimize final diff
         Project project = new Project(configurationTree);

Reply via email to