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);