This is an automated email from the ASF dual-hosted git repository. clebertsuconic pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/activemq-artemis.git
commit 7ee820864b90b4b7cc6d7f59eb0443f5ac14c559 Author: Gary Tully <[email protected]> AuthorDate: Wed Jul 13 14:24:37 2022 +0100 ARTEMIS-3894 - add conversion from string for list - allow core bridge static connector config via properties --- .../core/config/impl/ConfigurationImpl.java | 11 ++++++++ .../core/config/impl/ConfigurationImplTest.java | 33 ++++++++++++++++++++++ 2 files changed, 44 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 4d85626b98..d43796cc05 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 @@ -550,6 +550,17 @@ public class ConfigurationImpl implements Configuration, Serializable { } }, TransformerConfiguration.class); + beanUtils.getConvertUtils().register(new Converter() { + @Override + public <T> T convert(Class<T> type, Object value) { + List convertedValue = new ArrayList<String>(); + for (String entry : value.toString().split(",")) { + convertedValue.add(entry); + } + return (T) convertedValue; + } + }, java.util.List.class); + // support 25K or 25m etc like xml config beanUtils.getConvertUtils().register(new Converter() { @Override 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 c8763c8082..3fbc6b48ca 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 @@ -44,6 +44,7 @@ import org.apache.activemq.artemis.core.config.amqpBrokerConnectivity.AMQPMirror import org.apache.activemq.artemis.core.config.ha.LiveOnlyPolicyConfiguration; import org.apache.activemq.artemis.core.deployers.impl.FileConfigurationParser; import org.apache.activemq.artemis.core.security.Role; +import org.apache.activemq.artemis.core.server.ComponentConfigurationRoutingType; import org.apache.activemq.artemis.core.server.JournalType; import org.apache.activemq.artemis.core.server.cluster.impl.MessageLoadBalancingType; import org.apache.activemq.artemis.core.server.plugin.impl.LoggingActiveMQServerPlugin; @@ -630,6 +631,38 @@ public class ConfigurationImplTest extends ActiveMQTestBase { Assert.assertEquals("2", configuration.getConnectionRouters().get(0).getPolicyConfiguration().getProperties().get(ConsistentHashModuloPolicy.MODULO)); } + @Test + public void testCoreBridgeConfiguration() throws Throwable { + ConfigurationImpl configuration = new ConfigurationImpl(); + + final String queueName = "q"; + final String forwardingAddress = "fa"; + + Properties properties = new InsertionOrderedProperties(); + + properties.put("bridgeConfigurations.b1.queueName", queueName); + properties.put("bridgeConfigurations.b1.forwardingAddress", forwardingAddress); + properties.put("bridgeConfigurations.b1.confirmationWindowSize", "10"); + properties.put("bridgeConfigurations.b1.routingType", "STRIP"); // enum + // this is a List<String> from comma sep value + properties.put("bridgeConfigurations.b1.staticConnectors", "a,b"); + // flip b in place + properties.put("bridgeConfigurations.b1.staticConnectors[1]", "c"); + + configuration.parsePrefixedProperties(properties, null); + + Assert.assertEquals(1, configuration.getBridgeConfigurations().size()); + Assert.assertEquals(queueName, configuration.getBridgeConfigurations().get(0).getQueueName()); + + Assert.assertEquals(forwardingAddress, configuration.getBridgeConfigurations().get(0).getForwardingAddress()); + Assert.assertEquals(10, configuration.getBridgeConfigurations().get(0).getConfirmationWindowSize()); + Assert.assertEquals(2, configuration.getBridgeConfigurations().get(0).getStaticConnectors().size()); + Assert.assertEquals("a", configuration.getBridgeConfigurations().get(0).getStaticConnectors().get(0)); + Assert.assertEquals("c", configuration.getBridgeConfigurations().get(0).getStaticConnectors().get(1)); + + Assert.assertEquals(ComponentConfigurationRoutingType.STRIP, configuration.getBridgeConfigurations().get(0).getRoutingType()); + } + @Test public void testSetNestedPropertyOnCollections() throws Throwable { ConfigurationImpl configuration = new ConfigurationImpl();
