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 6178f533e CAY-2870 Modeler: Upgrade CayenneDataObject to
GenericPersistentObject
6178f533e is described below
commit 6178f533e45265deac87760f6e01862f0d3a733b
Author: Nikita Timofeev <[email protected]>
AuthorDate: Tue Aug 27 13:57:47 2024 +0400
CAY-2870 Modeler: Upgrade CayenneDataObject to GenericPersistentObject
---
.../project/upgrade/handlers/UpgradeHandler_V11.java | 19 +++++++++++++++++++
.../upgrade/handlers/UpgradeHandler_V11Test.java | 1 +
.../project/upgrade/handlers/test-map-v10.map.xml | 2 +-
3 files changed, 21 insertions(+), 1 deletion(-)
diff --git
a/cayenne-project/src/main/java/org/apache/cayenne/project/upgrade/handlers/UpgradeHandler_V11.java
b/cayenne-project/src/main/java/org/apache/cayenne/project/upgrade/handlers/UpgradeHandler_V11.java
index 15ad9133e..6e95a685a 100644
---
a/cayenne-project/src/main/java/org/apache/cayenne/project/upgrade/handlers/UpgradeHandler_V11.java
+++
b/cayenne-project/src/main/java/org/apache/cayenne/project/upgrade/handlers/UpgradeHandler_V11.java
@@ -84,6 +84,7 @@ public class UpgradeHandler_V11 implements UpgradeHandler {
dropROPProperties(upgradeUnit);
dropObjEntityClientInfo(upgradeUnit);
+ upgradeGenericObjEntity(upgradeUnit);
updateCgenConfig(upgradeUnit);
updateDbImportConfig(upgradeUnit);
}
@@ -147,6 +148,24 @@ public class UpgradeHandler_V11 implements UpgradeHandler {
}
}
+ private void upgradeGenericObjEntity(UpgradeUnit upgradeUnit) {
+ NodeList objEntityNodes;
+ try {
+ XPath xpath = XPathFactory.newInstance().newXPath();
+ objEntityNodes = (NodeList) xpath.evaluate("/data-map/obj-entity",
upgradeUnit.getDocument(), XPathConstants.NODESET);
+ } catch (Exception ex) {
+ return;
+ }
+
+ for (int j = 0; j < objEntityNodes.getLength(); j++) {
+ Element objEntityElement = (Element) objEntityNodes.item(j);
+ String className = objEntityElement.getAttribute("className");
+ if("org.apache.cayenne.CayenneDataObject".equals(className)) {
+ objEntityElement.setAttribute("className",
"org.apache.cayenne.GenericPersistentObject");
+ }
+ }
+ }
+
private void updateDbImportConfig(UpgradeUnit upgradeUnit) {
XPath xpath = XPathFactory.newInstance().newXPath();
NodeList nodes;
diff --git
a/cayenne-project/src/test/java/org/apache/cayenne/project/upgrade/handlers/UpgradeHandler_V11Test.java
b/cayenne-project/src/test/java/org/apache/cayenne/project/upgrade/handlers/UpgradeHandler_V11Test.java
index fcd643d5e..4c4858a98 100644
---
a/cayenne-project/src/test/java/org/apache/cayenne/project/upgrade/handlers/UpgradeHandler_V11Test.java
+++
b/cayenne-project/src/test/java/org/apache/cayenne/project/upgrade/handlers/UpgradeHandler_V11Test.java
@@ -77,6 +77,7 @@ public class UpgradeHandler_V11Test extends
BaseUpgradeHandlerTest {
assertEquals(2, attributes.getLength());
assertEquals("Artist", attributes.getNamedItem("name").getNodeValue());
assertEquals("Artist",
attributes.getNamedItem("dbEntityName").getNodeValue());
+ assertEquals("org.apache.cayenne.GenericPersistentObject",
attributes.getNamedItem("className").getNodeValue());
assertEquals(3, objEntity.getChildNodes().getLength());
assertEquals("http://cayenne.apache.org/schema/11/info",
objEntity.getFirstChild().getNextSibling().getAttributes().getNamedItem("xmlns:info")
diff --git
a/cayenne-project/src/test/resources/org/apache/cayenne/project/upgrade/handlers/test-map-v10.map.xml
b/cayenne-project/src/test/resources/org/apache/cayenne/project/upgrade/handlers/test-map-v10.map.xml
index 621dd7ece..4a0941164 100644
---
a/cayenne-project/src/test/resources/org/apache/cayenne/project/upgrade/handlers/test-map-v10.map.xml
+++
b/cayenne-project/src/test/resources/org/apache/cayenne/project/upgrade/handlers/test-map-v10.map.xml
@@ -11,7 +11,7 @@
<db-attribute name="untitledAttr" type="CHAR" isPrimaryKey="true"
isMandatory="true" length="10"/>
<db-attribute name="untitledAttr1" type="DATE"/>
</db-entity>
- <obj-entity name="Artist" dbEntityName="Artist"
clientClassName="tmp.Artist" clientSuperClassName="tmp.ClientSuperClass"
serverOnly="false">
+ <obj-entity name="Artist" dbEntityName="Artist"
className="org.apache.cayenne.CayenneDataObject" clientClassName="tmp.Artist"
clientSuperClassName="tmp.ClientSuperClass" serverOnly="false">
<info:property xmlns:info="http://cayenne.apache.org/schema/10/info"
name="comment" value="test"/>
</obj-entity>
<cgen xmlns="http://cayenne.apache.org/schema/10/cgen">