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 <stari...@gmail.com> 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">