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/artemis.git
The following commit(s) were added to refs/heads/main by this push:
new afd557820c ARTEMIS-5892 don't export deprecated attributes
afd557820c is described below
commit afd557820c178acc9ed79819960ec5079dd0533c
Author: Gary Tully <[email protected]>
AuthorDate: Tue Feb 10 16:00:29 2026 +0000
ARTEMIS-5892 don't export deprecated attributes
---
.../core/config/impl/ConfigurationImpl.java | 20 ++++++++--
.../core/config/impl/ConfigurationImplTest.java | 44 ++++++++++++++++++++++
.../core/config/impl/FileConfigurationTest.java | 36 ++++++++++--------
3 files changed, 82 insertions(+), 18 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 85e21296e9..50d2ee9e22 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
@@ -1049,12 +1049,13 @@ public class ConfigurationImpl extends
javax.security.auth.login.Configuration i
}
}
- final Set<String> ignored = Set.of(
+ static final Set<String> defaultIgnoredForExportProperties = Set.of(
// we report errors through the status, it should not typically be set
"status",
// we cannot import a map<string,set<string>> property and this feature
is only applied by the xml parser
"securityRoleNameMappings",
- // another xml ism using a deprecated config object
+ // using a deprecated config object
+ "queueConfigurations",
"queueConfigs",
"encodeSize",
// duplicates
@@ -1072,6 +1073,19 @@ public class ConfigurationImpl extends
javax.security.auth.login.Configuration i
// and connectionElements need to be split
"connectionElements"
);
+
+ static Map<Class, Set<String>> ignoredByType = Map.of(
+ CoreAddressConfiguration.class, Set.of("queueConfigurations")
+ );
+
+ static boolean isIgnored(Class clazz, PropertyDescriptor descriptor) {
+ Set<String> ignoredByTypeSet = ignoredByType.get(clazz);
+ if (ignoredByTypeSet != null) {
+ return ignoredByTypeSet.contains(descriptor.getName());
+ }
+ return defaultIgnoredForExportProperties.contains(descriptor.getName());
+ }
+
private void export(BeanUtilsBean beanUtils, Stack<String> nested,
BufferedWriter bufferedWriter, Object value) {
if (value instanceof Collection collection) {
@@ -1141,7 +1155,7 @@ public class ConfigurationImpl extends
javax.security.auth.login.Configuration i
// recursive export via accessors
Arrays.stream(beanUtils.getPropertyUtils().getPropertyDescriptors(value)).filter(propertyDescriptor
-> {
- if (ignored.contains(propertyDescriptor.getName())) {
+ if (isIgnored(value.getClass(), propertyDescriptor)) {
return false;
}
final Method descriptorReadMethod =
propertyDescriptor.getReadMethod();
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 94b0d234ad..d70a786a0d 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
@@ -16,6 +16,7 @@
*/
package org.apache.activemq.artemis.core.config.impl;
+
import static
org.apache.activemq.artemis.core.config.impl.ConfigurationImpl.REDACTED;
import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
import static org.junit.jupiter.api.Assertions.assertEquals;
@@ -60,11 +61,13 @@ import java.util.stream.Collectors;
import org.apache.activemq.artemis.ArtemisConstants;
import org.apache.activemq.artemis.api.config.ActiveMQDefaultConfiguration;
+import org.apache.activemq.artemis.api.core.QueueConfiguration;
import org.apache.activemq.artemis.api.core.RoutingType;
import org.apache.activemq.artemis.api.core.SimpleString;
import org.apache.activemq.artemis.api.core.TransportConfiguration;
import org.apache.activemq.artemis.core.config.Configuration;
import org.apache.activemq.artemis.core.config.ConfigurationUtils;
+import org.apache.activemq.artemis.core.config.CoreAddressConfiguration;
import org.apache.activemq.artemis.core.config.HAPolicyConfiguration;
import org.apache.activemq.artemis.core.config.LockCoordinatorConfiguration;
import org.apache.activemq.artemis.core.config.ScaleDownConfiguration;
@@ -3067,6 +3070,47 @@ public class ConfigurationImplTest extends
AbstractConfigurationTestBase {
assertEquals("",
configuration.getAcceptorConfigurations().stream().findFirst().get().getCombinedParams().get("useKQueue"));
}
+ @Test
+ public void testDeprecatedConfigsAreNotExportedAsProperties() throws
Exception {
+ ConfigurationImpl configuration = new ConfigurationImpl();
+
configuration.addQueueConfiguration(QueueConfiguration.of("shouldNotBeHere"));
+
+ configuration.addAddressConfiguration(new
CoreAddressConfiguration().setName("test").addQueueConfiguration(QueueConfiguration.of("test").setAddress("test").setRoutingType(RoutingType.ANYCAST)).addRoutingType(RoutingType.ANYCAST));
+
+ CoreAddressConfiguration carAddress = new CoreAddressConfiguration();
+ carAddress.setName("CarOrders");
+ carAddress.addRoutingType(RoutingType.MULTICAST);
+
+
carAddress.addQueueConfiguration(QueueConfiguration.of("tires").setRoutingType(RoutingType.MULTICAST));
+
carAddress.addQueueConfiguration(QueueConfiguration.of("batteries").setRoutingType(RoutingType.MULTICAST));
+ configuration.addAddressConfiguration(carAddress);
+
+ File fileOutput = new File(getTestDirfile(), "broker.properties");
+ assertDoesNotThrow(() -> configuration.exportAsProperties(fileOutput));
+ Properties properties = new Properties();
+ try (InputStream inStream = Files.newInputStream(fileOutput.toPath())) {
+ properties.load(inStream);
+ }
+
+ AtomicBoolean foundTires = new AtomicBoolean(false);
+ AtomicBoolean foundBatteries = new AtomicBoolean(false);
+ assertFalse(properties.isEmpty());
+ properties.forEach((a, b) -> {
+ assertFalse(String.valueOf(a).contains("queueConfigurations"));
+ assertFalse(String.valueOf(b).contains("shouldNotBeHere"));
+ if (String.valueOf(b).equals("batteries")) {
+ foundBatteries.set(true);
+ }
+ if (String.valueOf(b).equals("tires")) {
+ foundTires.set(true);
+ }
+ });
+ assertTrue(foundBatteries.get());
+ assertTrue(foundTires.get());
+ assertTrue(properties.containsKey("addressConfigurations.test.name"));
+
assertTrue(properties.containsKey("addressConfigurations.test.queueConfigs.test.name"));
+ }
+
/**
* Verifies the lock coordinator configuration parsing and export process:
* <ul>
diff --git
a/artemis-server/src/test/java/org/apache/activemq/artemis/core/config/impl/FileConfigurationTest.java
b/artemis-server/src/test/java/org/apache/activemq/artemis/core/config/impl/FileConfigurationTest.java
index 43cf9d1896..4dead4742a 100644
---
a/artemis-server/src/test/java/org/apache/activemq/artemis/core/config/impl/FileConfigurationTest.java
+++
b/artemis-server/src/test/java/org/apache/activemq/artemis/core/config/impl/FileConfigurationTest.java
@@ -185,6 +185,10 @@ public class FileConfigurationTest extends
AbstractConfigurationTestBase {
}
private void validateFullConfig(Configuration configInstance) {
+ validateFullConfig(configInstance, false);
+ }
+
+ private void validateFullConfig(Configuration configInstance, boolean
fromProperties) {
// Check they match the values from the test file
assertEquals("SomeNameForUseOnTheApplicationServer",
configInstance.getName());
assertFalse(configInstance.isPersistenceEnabled());
@@ -610,20 +614,22 @@ public class FileConfigurationTest extends
AbstractConfigurationTestBase {
assertEquals(104,
configInstance.getResourceLimitSettings().get("myUser").getMaxSessions());
assertEquals(13,
configInstance.getResourceLimitSettings().get("myUser").getMaxQueues());
- assertEquals(2, configInstance.getQueueConfigs().size());
-
- assertEquals("queue1",
configInstance.getQueueConfigs().get(0).getName().toString());
- assertEquals("address1",
configInstance.getQueueConfigs().get(0).getAddress().toString());
- assertEquals("color='red'",
configInstance.getQueueConfigs().get(0).getFilterString().toString());
- assertNotNull(configInstance.getQueueConfigs().get(0).isDurable());
- assertFalse(configInstance.getQueueConfigs().get(0).isDurable());
-
- assertEquals("queue2",
configInstance.getQueueConfigs().get(1).getName().toString());
- assertEquals("address2",
configInstance.getQueueConfigs().get(1).getAddress().toString());
- assertEquals("color='blue'",
configInstance.getQueueConfigs().get(1).getFilterString().toString());
- assertNotNull(configInstance.getQueueConfigs().get(1).isDurable());
- assertFalse(configInstance.getQueueConfigs().get(1).isDurable());
-
+ if (!fromProperties) {
+ // we don't export deprecated entries
+ assertEquals(2, configInstance.getQueueConfigs().size());
+
+ assertEquals("queue1",
configInstance.getQueueConfigs().get(0).getName().toString());
+ assertEquals("address1",
configInstance.getQueueConfigs().get(0).getAddress().toString());
+ assertEquals("color='red'",
configInstance.getQueueConfigs().get(0).getFilterString().toString());
+ assertNotNull(configInstance.getQueueConfigs().get(0).isDurable());
+ assertFalse(configInstance.getQueueConfigs().get(0).isDurable());
+
+ assertEquals("queue2",
configInstance.getQueueConfigs().get(1).getName().toString());
+ assertEquals("address2",
configInstance.getQueueConfigs().get(1).getAddress().toString());
+ assertEquals("color='blue'",
configInstance.getQueueConfigs().get(1).getFilterString().toString());
+ assertNotNull(configInstance.getQueueConfigs().get(1).isDurable());
+ assertFalse(configInstance.getQueueConfigs().get(1).isDurable());
+ }
verifyAddresses();
Map<String, Set<Role>> roles = configInstance.getSecurityRoles();
@@ -1048,7 +1054,7 @@ public class FileConfigurationTest extends
AbstractConfigurationTestBase {
assertTrue(REDACTED.equals(configuration.getClusterPassword()));
configuration.setClusterPassword("Wombat");
- validateFullConfig(configuration);
+ validateFullConfig(configuration, true);
}
private Configuration createConfiguration(String filename) throws Exception
{
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]