[prev in list] [next in list] [prev in thread] [next in thread] 

List:       activemq-commits
Subject:    [activemq-artemis] branch main updated: ARTEMIS-4398 - support configuring database using Broker Pro
From:       gtully () apache ! org
Date:       2023-08-29 14:23:57
Message-ID: 169331903787.2420524.15221478563719802812 () gitbox2-he-fi ! apache ! org
[Download RAW message or body]

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 6b053dd290 ARTEMIS-4398 - support configuring database using Broker \
Properties 6b053dd290 is described below

commit 6b053dd290c140d36ca446f9a4799cfd629f7a3b
Author: Andy Taylor <andy.tayls67@gmail.com>
AuthorDate: Wed Aug 23 13:26:44 2023 +0100

    ARTEMIS-4398 - support configuring database using Broker Properties
    
    https://issues.apache.org/jira/browse/ARTEMIS-4398
---
 .../core/config/impl/ConfigurationImpl.java        | 12 +++++
 .../artemis/core/server/ActiveMQMessageBundle.java |  3 ++
 .../core/config/impl/ConfigurationImplTest.java    | 54 ++++++++++++++++++++++
 3 files changed, 69 insertions(+)

diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/config/impl/ConfigurationImpl.java \
b/artemis-server/src/main/java/org/apache/activemq/artemis/core/config/impl/ConfigurationImpl.java
 index 45a452cb4e..dcf1e45da2 100644
--- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/config/impl/ConfigurationImpl.java
                
+++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/config/impl/ConfigurationImpl.java
 @@ -84,6 +84,7 @@ import \
org.apache.activemq.artemis.core.remoting.impl.invm.InVMConnectorFactory;  import \
org.apache.activemq.artemis.core.remoting.impl.netty.NettyConnectorFactory;  import \
org.apache.activemq.artemis.core.security.Role;  import \
org.apache.activemq.artemis.core.server.ActiveMQServerLogger; +import \
org.apache.activemq.artemis.core.server.ActiveMQMessageBundle;  import \
org.apache.activemq.artemis.core.server.JournalType;  import \
org.apache.activemq.artemis.core.server.NetworkHealthCheck;  import \
org.apache.activemq.artemis.core.server.SecuritySettingPlugin; @@ -773,6 +774,17 @@ \
public class ConfigurationImpl implements Configuration, Serializable {  }
       }, TransformerConfiguration.class);
 
+      beanUtils.getConvertUtils().register(new Converter() {
+         @Override
+         public <T> T convert(Class<T> type, Object value) {
+            //we only care about DATABASE type as it is the only one used
+            if (StoreConfiguration.StoreType.DATABASE.toString().equals(value)) {
+               return (T) new DatabaseStorageConfiguration();
+            }
+            throw ActiveMQMessageBundle.BUNDLE.unsupportedStorePropertyType();
+         }
+      }, StoreConfiguration.class);
+
       beanUtils.getConvertUtils().register(new Converter() {
          @Override
          public <T> T convert(Class<T> type, Object value) {
diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/ActiveMQMessageBundle.java \
b/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/ActiveMQMessageBundle.java
 index 2018d3f136..5de85adb7f 100644
--- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/ActiveMQMessageBundle.java
                
+++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/ActiveMQMessageBundle.java
 @@ -536,4 +536,7 @@ public interface ActiveMQMessageBundle {
 
    @Message(id = 229248, value = "Invalid value for webSocketEncoderType: '{}'. \
Supported values: 'binary', 'text'.")  IllegalStateException \
invalidWebSocketEncoderType(String webSocketEncoderType); +
+   @Message(id = 229249, value = "Invalid Store property, only DATABASE property is \
supported") +   RuntimeException unsupportedStorePropertyType();
 }
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 a36de3b148..c7eb9d676d 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
 @@ -50,6 +50,7 @@ import \
org.apache.activemq.artemis.core.config.federation.FederationAddressPolic  import \
org.apache.activemq.artemis.core.config.federation.FederationPolicySet;  import \
org.apache.activemq.artemis.core.config.federation.FederationQueuePolicyConfiguration;
  import org.apache.activemq.artemis.core.config.ha.LiveOnlyPolicyConfiguration;
+import org.apache.activemq.artemis.core.config.storage.DatabaseStorageConfiguration;
 import org.apache.activemq.artemis.core.deployers.impl.FileConfigurationParser;
 import org.apache.activemq.artemis.core.io.SequentialFileFactory;
 import org.apache.activemq.artemis.core.paging.PagingManager;
@@ -1554,6 +1555,59 @@ public class ConfigurationImplTest extends ActiveMQTestBase {
       }
    }
 
+   @Test
+   public void testDatabaseStoreConfigurationProps() throws Exception {
+      ConfigurationImpl configuration = new ConfigurationImpl();
+      Properties insertionOrderedProperties = new \
ConfigurationImpl.InsertionOrderedProperties(); +      \
insertionOrderedProperties.put("storeConfiguration", "DATABASE"); +      \
insertionOrderedProperties.put("storeConfiguration.largeMessageTableName", "lmtn"); + \
insertionOrderedProperties.put("storeConfiguration.messageTableName", "mtn"); +      \
insertionOrderedProperties.put("storeConfiguration.bindingsTableName", "btn"); +      \
insertionOrderedProperties.put("storeConfiguration.dataSourceClassName", "dscn"); +   \
insertionOrderedProperties.put("storeConfiguration.nodeManagerStoreTableName", \
"nmtn"); +      insertionOrderedProperties.put("storeConfiguration.pageStoreTableName", \
"pstn"); +      insertionOrderedProperties.put("storeConfiguration.jdbcAllowedTimeDiff", \
123); +      insertionOrderedProperties.put("storeConfiguration.jdbcConnectionUrl", \
"url"); +      insertionOrderedProperties.put("storeConfiguration.jdbcDriverClassName", \
"dcn"); +      insertionOrderedProperties.put("storeConfiguration.jdbcJournalSyncPeriodMillis", \
456); +      insertionOrderedProperties.put("storeConfiguration.jdbcLockAcquisitionTimeoutMillis", \
789); +      insertionOrderedProperties.put("storeConfiguration.jdbcLockExpirationMillis", \
321); +      insertionOrderedProperties.put("storeConfiguration.jdbcLockRenewPeriodMillis", \
654); +      insertionOrderedProperties.put("storeConfiguration.jdbcNetworkTimeout", \
987); +      insertionOrderedProperties.put("storeConfiguration.jdbcPassword", \
"pass"); +      insertionOrderedProperties.put("storeConfiguration.jdbcUser", \
"user"); +      configuration.parsePrefixedProperties(insertionOrderedProperties, \
null); +      Assert.assertTrue(configuration.getStoreConfiguration() instanceof \
DatabaseStorageConfiguration); +      DatabaseStorageConfiguration dsc = \
(DatabaseStorageConfiguration) configuration.getStoreConfiguration(); +      \
Assert.assertEquals(dsc.getLargeMessageTableName(), "lmtn"); +      \
Assert.assertEquals(dsc.getMessageTableName(), "mtn"); +      \
Assert.assertEquals(dsc.getBindingsTableName(), "btn"); +      \
Assert.assertEquals(dsc.getDataSourceClassName(), "dscn"); +      \
Assert.assertEquals(dsc.getJdbcAllowedTimeDiff(), 123); +      \
Assert.assertEquals(dsc.getJdbcConnectionUrl(), "url"); +      \
Assert.assertEquals(dsc.getJdbcDriverClassName(), "dcn"); +      \
Assert.assertEquals(dsc.getJdbcJournalSyncPeriodMillis(), 456); +      \
Assert.assertEquals(dsc.getJdbcLockAcquisitionTimeoutMillis(), 789); +      \
Assert.assertEquals(dsc.getJdbcLockExpirationMillis(), 321); +      \
Assert.assertEquals(dsc.getJdbcLockRenewPeriodMillis(), 654); +      \
Assert.assertEquals(dsc.getJdbcNetworkTimeout(), 987); +      \
Assert.assertEquals(dsc.getJdbcPassword(), "pass"); +      \
Assert.assertEquals(dsc.getJdbcUser(), "user"); +      \
Assert.assertEquals(dsc.getNodeManagerStoreTableName(), "nmtn"); +      \
Assert.assertEquals(dsc.getPageStoreTableName(), "pstn"); +   }
+
+   @Test
+   public void testInvalidStoreConfigurationProps() throws Exception {
+      ConfigurationImpl configuration = new ConfigurationImpl();
+      Properties insertionOrderedProperties = new \
ConfigurationImpl.InsertionOrderedProperties(); +      \
insertionOrderedProperties.put("storeConfiguration", "File"); +      \
configuration.parsePrefixedProperties(insertionOrderedProperties, null); +      \
String status = configuration.getStatus(); +      //test for exception code
+      Assert.assertTrue(status.contains("AMQ229249"));
+   }
+
    @Test
    public void testEnumConversion() throws Exception {
       ConfigurationImpl configuration = new ConfigurationImpl();


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic