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 2020/01/31 13:47:23 UTC

[cayenne] branch STABLE-4.1 updated: CAY-2647 Modeler: project upgrade from 4.0.B2 to 4.1.RC2 failure

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 fe44cf0  CAY-2647 Modeler: project upgrade from 4.0.B2 to 4.1.RC2 failure
fe44cf0 is described below

commit fe44cf0435e35d336c0bd70f5133905ff5fa2107
Author: Nikita Timofeev <st...@gmail.com>
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 6f614ed..7aa117e 100644
--- a/RELEASE-NOTES.txt
+++ b/RELEASE-NOTES.txt
@@ -17,6 +17,7 @@ Bug Fixes:
 CAY-2642 EhCache memory leak due to misconfiguration
 CAY-2643 ObjectSelect.prefetch(name, semantics) method creates a phantom node
 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.RC2
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 d00b7b5..343e600 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);