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 3405e7f79 CAY-2834 v11 upgrade handler should update XMLPoolingDataSourceFactory package 3405e7f79 is described below commit 3405e7f79dc65436a96be87ff6d05cf3c95155ec Author: stariy95 <stari...@gmail.com> AuthorDate: Mon Dec 25 15:55:02 2023 +0400 CAY-2834 v11 upgrade handler should update XMLPoolingDataSourceFactory package --- RELEASE-NOTES.txt | 1 + .../project/upgrade/handlers/UpgradeHandler_V11.java | 20 ++++++++++++++++++++ .../upgrade/handlers/UpgradeHandler_V11Test.java | 6 ++++++ .../project/upgrade/handlers/cayenne-project-v10.xml | 3 ++- .../runtime/XMLPoolingDataSourceFactory.java | 3 +-- 5 files changed, 30 insertions(+), 3 deletions(-) diff --git a/RELEASE-NOTES.txt b/RELEASE-NOTES.txt index 5a6bafb7f..b821ee904 100644 --- a/RELEASE-NOTES.txt +++ b/RELEASE-NOTES.txt @@ -54,6 +54,7 @@ CAY-2828 Rename values in `org.apache.cayenne.configuration.Constants` CAY-2829 Merge `BaseContext` with `DataContext` and deprecate it CAY-2830 Cleanup `DataContext` code CAY-2831 Upgrade Gradle to 8.5 +CAY-2834 v11 upgrade handler should update XMLPoolingDataSourceFactory package Bug Fixes: 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 efa19727f..414befca8 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 @@ -71,6 +71,7 @@ public class UpgradeHandler_V11 implements UpgradeHandler { @Override public void processProjectDom(UpgradeUnit upgradeUnit) { updateDomainSchemaAndVersion(upgradeUnit); + updateDataNodeConnectionPool(upgradeUnit); } @Override @@ -167,6 +168,25 @@ public class UpgradeHandler_V11 implements UpgradeHandler { updateTemplates(upgradeUnit); } + private void updateDataNodeConnectionPool(UpgradeUnit upgradeUnit) { + XPath xpath = XPathFactory.newInstance().newXPath(); + NodeList nodes; + try { + nodes = (NodeList) xpath.evaluate("/domain/node", + upgradeUnit.getDocument(), XPathConstants.NODESET); + } catch (Exception e) { + return; + } + + for (int j = 0; j < nodes.getLength(); j++) { + Element propertyElement = (Element) nodes.item(j); + String factory = propertyElement.getAttribute("factory"); + if("org.apache.cayenne.configuration.server.XMLPoolingDataSourceFactory".equals(factory)) { + propertyElement.setAttribute("factory", "org.apache.cayenne.configuration.runtime.XMLPoolingDataSourceFactory"); + } + } + } + private void renameQueryTemplates(UpgradeUnit upgradeUnit) { XPath xpath = XPathFactory.newInstance().newXPath(); NodeList queryTemplates; 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 b5419295d..ad92cee79 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 @@ -50,6 +50,12 @@ public class UpgradeHandler_V11Test extends BaseUpgradeHandlerTest { assertEquals("11", root.getAttribute("project-version")); assertEquals("http://cayenne.apache.org/schema/11/domain", root.getAttribute("xmlns")); assertEquals(2, root.getElementsByTagName("map").getLength()); + + NodeList nodes = document.getElementsByTagName("node"); + assertEquals(1, nodes.getLength()); + + Element node = (Element)nodes.item(0); + assertEquals("org.apache.cayenne.configuration.runtime.XMLPoolingDataSourceFactory", node.getAttribute("factory")); } @Test diff --git a/cayenne-project/src/test/resources/org/apache/cayenne/project/upgrade/handlers/cayenne-project-v10.xml b/cayenne-project/src/test/resources/org/apache/cayenne/project/upgrade/handlers/cayenne-project-v10.xml index b81eb7516..d9d556d5d 100644 --- a/cayenne-project/src/test/resources/org/apache/cayenne/project/upgrade/handlers/cayenne-project-v10.xml +++ b/cayenne-project/src/test/resources/org/apache/cayenne/project/upgrade/handlers/cayenne-project-v10.xml @@ -8,7 +8,8 @@ <map name="testProjectMap1_2" /> <node name="testProjectNode1" - adapter="org.example.test.Adapter" factory="org.example.test.DataSourceFactory"> + adapter="org.example.test.Adapter" + factory="org.apache.cayenne.configuration.server.XMLPoolingDataSourceFactory"> <data-source> <connectionPool min="1" max="1" /> <login /> diff --git a/cayenne/src/main/java/org/apache/cayenne/configuration/runtime/XMLPoolingDataSourceFactory.java b/cayenne/src/main/java/org/apache/cayenne/configuration/runtime/XMLPoolingDataSourceFactory.java index e51520d60..bd89170b8 100644 --- a/cayenne/src/main/java/org/apache/cayenne/configuration/runtime/XMLPoolingDataSourceFactory.java +++ b/cayenne/src/main/java/org/apache/cayenne/configuration/runtime/XMLPoolingDataSourceFactory.java @@ -41,8 +41,7 @@ import org.slf4j.LoggerFactory; * * @since 3.1 */ -// TODO: this factory does not read XML anymore, should we rename it to -// something else? +// TODO: this factory does not read XML anymore, should we rename it to something else? public class XMLPoolingDataSourceFactory implements DataSourceFactory { private static final Logger logger = LoggerFactory.getLogger(XMLPoolingDataSourceFactory.class);