You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by cl...@apache.org on 2022/07/13 19:44:33 UTC

[activemq-artemis] 01/02: ARTEMIS-3894 - add conversion from string for list - allow core bridge static connector config via properties

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 <ga...@gmail.com>
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();