[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