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

Reply via email to