This is an automated email from the ASF dual-hosted git repository.

gtully pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/activemq-artemis.git


The following commit(s) were added to refs/heads/main by this push:
     new d975a7e606 ARTEMIS-5521 ensure conversion is in play when applying 
jdbc dataSourceProperties
d975a7e606 is described below

commit d975a7e606bea10ebb64bfa4e58f4d3949ae06d9
Author: Gary Tully <[email protected]>
AuthorDate: Thu Jun 5 13:54:36 2025 +0100

    ARTEMIS-5521 ensure conversion is in play when applying jdbc 
dataSourceProperties
---
 .../activemq/artemis/jdbc/store/drivers/JDBCDataSourceUtils.java | 4 ++--
 .../activemq/artemis/core/config/impl/ConfigurationImplTest.java | 9 +++++++--
 2 files changed, 9 insertions(+), 4 deletions(-)

diff --git 
a/artemis-jdbc-store/src/main/java/org/apache/activemq/artemis/jdbc/store/drivers/JDBCDataSourceUtils.java
 
b/artemis-jdbc-store/src/main/java/org/apache/activemq/artemis/jdbc/store/drivers/JDBCDataSourceUtils.java
index 0018443800..4294876ee5 100644
--- 
a/artemis-jdbc-store/src/main/java/org/apache/activemq/artemis/jdbc/store/drivers/JDBCDataSourceUtils.java
+++ 
b/artemis-jdbc-store/src/main/java/org/apache/activemq/artemis/jdbc/store/drivers/JDBCDataSourceUtils.java
@@ -18,7 +18,7 @@ package org.apache.activemq.artemis.jdbc.store.drivers;
 
 import org.apache.activemq.artemis.journal.ActiveMQJournalLogger;
 import org.apache.activemq.artemis.utils.ClassloadingUtil;
-import org.apache.commons.beanutils.PropertyUtils;
+import org.apache.commons.beanutils.BeanUtilsBean;
 
 import javax.sql.DataSource;
 import java.util.Map;
@@ -35,7 +35,7 @@ public class JDBCDataSourceUtils {
       try {
          DataSource dataSource = (DataSource) 
ClassloadingUtil.getInstanceWithTypeCheck(dataSourceClassName, 
DataSource.class, JDBCDataSourceUtils.class.getClassLoader());
          for (Map.Entry<String, Object> entry : 
dataSourceProperties.entrySet()) {
-            PropertyUtils.setProperty(dataSource, entry.getKey(), 
entry.getValue());
+            BeanUtilsBean.getInstance().setProperty(dataSource, 
entry.getKey(), entry.getValue());
          }
          return dataSource;
       } catch (ClassNotFoundException cnfe) {
diff --git 
a/artemis-server/src/test/java/org/apache/activemq/artemis/core/config/impl/ConfigurationImplTest.java
 
b/artemis-server/src/test/java/org/apache/activemq/artemis/core/config/impl/ConfigurationImplTest.java
index 93b5dfd1d0..d7132f592e 100644
--- 
a/artemis-server/src/test/java/org/apache/activemq/artemis/core/config/impl/ConfigurationImplTest.java
+++ 
b/artemis-server/src/test/java/org/apache/activemq/artemis/core/config/impl/ConfigurationImplTest.java
@@ -103,6 +103,7 @@ import 
org.apache.activemq.artemis.core.settings.impl.AddressFullMessagePolicy;
 import org.apache.activemq.artemis.core.settings.impl.DeletionPolicy;
 import org.apache.activemq.artemis.core.settings.impl.ResourceLimitSettings;
 import 
org.apache.activemq.artemis.core.settings.impl.SlowConsumerThresholdMeasurementUnit;
+import org.apache.activemq.artemis.jdbc.store.drivers.JDBCDataSourceUtils;
 import org.apache.activemq.artemis.json.JsonObject;
 import org.apache.activemq.artemis.logs.AssertionLoggerHandler;
 import org.apache.activemq.artemis.json.JsonObjectBuilder;
@@ -2207,7 +2208,7 @@ public class ConfigurationImplTest extends 
AbstractConfigurationTestBase {
       
insertionOrderedProperties.put("storeConfiguration.largeMessageTableName", 
"lmtn");
       insertionOrderedProperties.put("storeConfiguration.messageTableName", 
"mtn");
       insertionOrderedProperties.put("storeConfiguration.bindingsTableName", 
"btn");
-      insertionOrderedProperties.put("storeConfiguration.dataSourceClassName", 
"dscn");
+      insertionOrderedProperties.put("storeConfiguration.dataSourceClassName", 
ActiveMQDefaultConfiguration.getDefaultDataSourceClassName());
       
insertionOrderedProperties.put("storeConfiguration.nodeManagerStoreTableName", 
"nmtn");
       insertionOrderedProperties.put("storeConfiguration.pageStoreTableName", 
"pstn");
       insertionOrderedProperties.put("storeConfiguration.jdbcAllowedTimeDiff", 
123);
@@ -2219,6 +2220,7 @@ public class ConfigurationImplTest extends 
AbstractConfigurationTestBase {
       
insertionOrderedProperties.put("storeConfiguration.jdbcLockRenewPeriodMillis", 
654);
       insertionOrderedProperties.put("storeConfiguration.jdbcNetworkTimeout", 
987);
       
insertionOrderedProperties.put("storeConfiguration.dataSourceProperties.password",
 "pass");
+      
insertionOrderedProperties.put("storeConfiguration.dataSourceProperties.initialSize",
 3); // needs conversion from string to int
       insertionOrderedProperties.put("storeConfiguration.jdbcUser", "user");
       configuration.parsePrefixedProperties(insertionOrderedProperties, null);
 
@@ -2229,7 +2231,7 @@ public class ConfigurationImplTest extends 
AbstractConfigurationTestBase {
       assertEquals("lmtn", dsc.getLargeMessageTableName());
       assertEquals("mtn", dsc.getMessageTableName());
       assertEquals("btn", dsc.getBindingsTableName());
-      assertEquals("dscn", dsc.getDataSourceClassName());
+      
assertEquals(ActiveMQDefaultConfiguration.getDefaultDataSourceClassName(), 
dsc.getDataSourceClassName());
       assertEquals(123, dsc.getJdbcAllowedTimeDiff());
       assertEquals("url", dsc.getJdbcConnectionUrl());
       assertEquals("dcn", dsc.getJdbcDriverClassName());
@@ -2242,6 +2244,9 @@ public class ConfigurationImplTest extends 
AbstractConfigurationTestBase {
       assertEquals("user", dsc.getJdbcUser());
       assertEquals("nmtn", dsc.getNodeManagerStoreTableName());
       assertEquals("pstn", dsc.getPageStoreTableName());
+
+      // force load to verify dataSourceProperties are applied ok
+      JDBCDataSourceUtils.getDataSource(dsc.getDataSourceClassName(), 
dsc.getDataSourceProperties());
    }
 
    @Test


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]
For further information, visit: https://activemq.apache.org/contact


Reply via email to