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 85e21296e95..74b3b3be276 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 @@ -1055,7 +1055,7 @@ private void writeProperties(FileWriter writer) throws Exception { // we cannot import a map> property and this feature is only applied by the xml parser "securityRoleNameMappings", // another xml ism using a deprecated config object - "queueConfigs", + "queueConfigurations", "encodeSize", // duplicates "federationPolicyMap", // core federation 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 94b0d234adc..16066d83108 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 @@ -60,11 +60,13 @@ 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 +3069,28 @@ public void testExportInvalidPropertyOnAcceptor() throws Exception { assertEquals("", configuration.getAcceptorConfigurations().stream().findFirst().get().getCombinedParams().get("useKQueue")); } + + @Test + public void testInvalidPropertiesOnQueue() throws Exception { + ConfigurationImpl configuration = new ConfigurationImpl(); + configuration.addQueueConfiguration(QueueConfiguration.of("shouldNotBeHere")); + + // useKQueue here would generate a hashMap Value null, what would break the exportAsProperties. + configuration.addAcceptorConfiguration("test", "tcp://0.0.0.0:61616?useKQueue"); + configuration.addAddressConfiguration(new CoreAddressConfiguration().setName("test").addQueueConfiguration(QueueConfiguration.of("test").setAddress("test").setRingSize(777L).setRoutingType(RoutingType.ANYCAST)).addRoutingType(RoutingType.ANYCAST)); + 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); + } + assertFalse(properties.isEmpty()); + properties.forEach((a, b) -> { + assertFalse(String.valueOf(a).contains("queueConfigurations")); + assertFalse(String.valueOf(b).contains("shouldNotBeHere")); + }); + } + /** * Verifies the lock coordinator configuration parsing and export process: *