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

tabish 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 54d2232a75 ARTEMIS-5520 Fix mapped broker properties with dots
54d2232a75 is described below

commit 54d2232a75330a17380267dd81fe3f9f843b13d5
Author: Domenico Francesco Bruscino <[email protected]>
AuthorDate: Thu Jun 5 08:16:13 2025 +0200

    ARTEMIS-5520 Fix mapped broker properties with dots
---
 .../core/config/impl/ConfigurationImpl.java        | 11 ++++--
 .../core/config/impl/ConfigurationImplTest.java    | 40 ++++++++++++++++++++--
 2 files changed, 47 insertions(+), 4 deletions(-)

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 4063c29bda..537a599fff 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
@@ -132,6 +132,7 @@ import 
org.apache.activemq.artemis.core.settings.impl.ResourceLimitSettings;
 import org.apache.activemq.artemis.json.JsonArrayBuilder;
 import org.apache.activemq.artemis.json.JsonObject;
 import org.apache.activemq.artemis.json.JsonObjectBuilder;
+import org.apache.activemq.artemis.json.JsonString;
 import org.apache.activemq.artemis.json.JsonValue;
 import org.apache.activemq.artemis.utils.ByteUtil;
 import org.apache.activemq.artemis.utils.ClassloadingUtil;
@@ -3671,7 +3672,13 @@ public class ConfigurationImpl implements Configuration, 
Serializable {
          if (!collections.isEmpty()) {
             Pair<String, Object> collectionInfo = collections.pop();
          }
-         super.setProperty(bean, name, value);
+
+         if (bean instanceof Map) {
+            String property = getResolver().getProperty(name);
+            this.setPropertyOfMapBean((Map)bean, property, value);
+         } else {
+            super.setProperty(bean, name, value);
+         }
       }
 
       // need to track collections such that we can locate or create entries 
on demand
@@ -3964,7 +3971,7 @@ public class ConfigurationImpl implements Configuration, 
Serializable {
                   loadJsonObject(keySurroundString, propertyKey + ".", 
jsonValue.asJsonObject());
                   break;
                case STRING:
-                  put(propertyKey, jsonObject.getString(jsonKey));
+                  put(propertyKey, ((JsonString)jsonValue).getString());
                   break;
                case NUMBER:
                case TRUE:
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 263e6155f7..93b5dfd1d0 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
@@ -2335,7 +2335,7 @@ public class ConfigurationImplTest extends 
AbstractConfigurationTestBase {
       configuration.parseProperties(tmpFile.getAbsolutePath());
 
       testSimpleConfig(configuration);
-      
assertTrue(configuration.getStatus().contains("\"fileAlder32\":\"2885074053\""));
+      
assertTrue(configuration.getStatus().contains("\"fileAlder32\":\"2235122473\""));
    }
 
    @Test
@@ -2352,7 +2352,7 @@ public class ConfigurationImplTest extends 
AbstractConfigurationTestBase {
       configuration.parseProperties(tmpFile.getAbsolutePath());
 
       testSimpleConfig(configuration);
-      
assertTrue(configuration.getStatus().contains("\"fileAlder32\":\"3147794929\""));
+      
assertTrue(configuration.getStatus().contains("\"fileAlder32\":\"1145294432\""));
    }
 
    @Test
@@ -2517,6 +2517,30 @@ public class ConfigurationImplTest extends 
AbstractConfigurationTestBase {
          configObjectBuilder.add("clusterConfigurations", 
clusterConfigObjectBuilder.build());
 
          configObjectBuilder.add("criticalAnalyzerPolicy", "SHUTDOWN");
+
+         JsonObjectBuilder divertConfigObjectBuilder = 
JsonLoader.createObjectBuilder();
+         {
+            JsonObjectBuilder divertObjectBuilder = 
JsonLoader.createObjectBuilder();
+            {
+               divertObjectBuilder.add("address", "testAddress");
+               divertObjectBuilder.add("forwardingAddress", "forwardAddress");
+
+               JsonObjectBuilder transformerConfigObjectBuilder = 
JsonLoader.createObjectBuilder();
+               {
+                  transformerConfigObjectBuilder.add("className", 
"s.o.m.e.class");
+
+                  JsonObjectBuilder transformerPropertiesObjectBuilder = 
JsonLoader.createObjectBuilder();
+                  {
+                     transformerPropertiesObjectBuilder.add("a", "va");
+                     transformerPropertiesObjectBuilder.add("b.c", "vbc");
+                  }
+                  transformerConfigObjectBuilder.add("properties", 
transformerPropertiesObjectBuilder.build());
+               }
+               divertObjectBuilder.add("transformerConfiguration", 
transformerConfigObjectBuilder.build());
+            }
+            divertConfigObjectBuilder.add("my-divert", 
divertObjectBuilder.build());
+         }
+         configObjectBuilder.add("divertConfigurations", 
divertConfigObjectBuilder.build());
       }
 
       return configObjectBuilder.build();
@@ -2535,6 +2559,11 @@ public class ConfigurationImplTest extends 
AbstractConfigurationTestBase {
       textProperties.add("clusterConfigurations.cc.name=cc");
       
textProperties.add("clusterConfigurations.cc.messageLoadBalancingType=OFF_WITH_REDISTRIBUTION");
       textProperties.add("criticalAnalyzerPolicy=SHUTDOWN");
+      textProperties.add("divertConfigurations.my-divert.address=testAddress");
+      
textProperties.add("divertConfigurations.my-divert.forwardingAddress=forwardAddress");
+      
textProperties.add("divertConfigurations.my-divert.transformerConfiguration.className=s.o.m.e.class");
+      
textProperties.add("divertConfigurations.my-divert.transformerConfiguration.properties.a=va");
+      
textProperties.add("divertConfigurations.my-divert.transformerConfiguration.properties.\"b.c\"=vbc");
 
       return textProperties;
    }
@@ -2556,6 +2585,13 @@ public class ConfigurationImplTest extends 
AbstractConfigurationTestBase {
       assertEquals(MessageLoadBalancingType.OFF_WITH_REDISTRIBUTION, 
configuration.getClusterConfigurations().get(0).getMessageLoadBalancingType());
       assertEquals(CriticalAnalyzerPolicy.SHUTDOWN, 
configuration.getCriticalAnalyzerPolicy());
 
+      assertEquals("my-divert", 
configuration.getDivertConfigurations().get(0).getName());
+      assertEquals("testAddress", 
configuration.getDivertConfigurations().get(0).getAddress());
+      assertEquals("forwardAddress", 
configuration.getDivertConfigurations().get(0).getForwardingAddress());
+      assertEquals("s.o.m.e.class", 
configuration.getDivertConfigurations().get(0).getTransformerConfiguration().getClassName());
+      assertEquals("va", 
configuration.getDivertConfigurations().get(0).getTransformerConfiguration().getProperties().get("a"));
+      assertEquals("vbc", 
configuration.getDivertConfigurations().get(0).getTransformerConfiguration().getProperties().get("b.c"));
+
       assertTrue(configuration.getStatus().contains("\"alder32"));
       assertTrue(configuration.getStatus().contains("\"fileAlder32"));
    }


---------------------------------------------------------------------
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