diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/deployers/impl/FileConfigurationParser.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/deployers/impl/FileConfigurationParser.java index 6b77206cad..c42085b3b5 100644 --- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/deployers/impl/FileConfigurationParser.java +++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/deployers/impl/FileConfigurationParser.java @@ -346,12 +346,6 @@ public final class FileConfigurationParser extends XMLConfigurationUtil { config.setHAPolicyConfiguration(new LiveOnlyPolicyConfiguration()); } - NodeList storeTypeNodes = e.getElementsByTagName("store"); - - if (storeTypeNodes.getLength() > 0) { - parseStoreConfiguration((Element) storeTypeNodes.item(0), config); - } - config.setResolveProtocols(getBoolean(e, "resolve-protocols", config.isResolveProtocols())); config.setPersistenceEnabled(getBoolean(e, "persistence-enabled", config.isPersistenceEnabled())); @@ -437,6 +431,12 @@ public final class FileConfigurationParser extends XMLConfigurationUtil { config.setClusterUser(getString(e, "cluster-user", config.getClusterUser(), Validators.NO_CHECK)); + NodeList storeTypeNodes = e.getElementsByTagName("store"); + + if (storeTypeNodes.getLength() > 0) { + parseStoreConfiguration((Element) storeTypeNodes.item(0), config); + } + NodeList interceptorNodes = e.getElementsByTagName("remoting-interceptors"); ArrayList incomingInterceptorList = new ArrayList<>(); diff --git a/artemis-server/src/test/java/org/apache/activemq/artemis/core/config/impl/FileConfigurationDbEncryptedPassTest.java b/artemis-server/src/test/java/org/apache/activemq/artemis/core/config/impl/FileConfigurationDbEncryptedPassTest.java new file mode 100644 index 0000000000..cad1f638b6 --- /dev/null +++ b/artemis-server/src/test/java/org/apache/activemq/artemis/core/config/impl/FileConfigurationDbEncryptedPassTest.java @@ -0,0 +1,66 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.activemq.artemis.core.config.impl; + +import org.apache.activemq.artemis.core.config.Configuration; +import org.apache.activemq.artemis.core.config.FileDeploymentManager; +import org.apache.activemq.artemis.utils.SensitiveDataCodec; +import org.junit.Assert; +import org.junit.Test; + +public class FileConfigurationDbEncryptedPassTest extends ConfigurationImplTest { + + + protected String getConfigurationName() { + return "ConfigurationTest-db-encrypted-pass-config.xml"; + } + + @Override + @Test + public void testDefaults() { + // empty + } + + @Test + public void testJdbcPasswordWithCustomCodec() { + Assert.assertTrue(MySensitiveStringCodec.decoded); + } + + @Override + protected Configuration createConfiguration() throws Exception { + FileConfiguration fc = new FileConfiguration(); + FileDeploymentManager deploymentManager = new FileDeploymentManager(getConfigurationName()); + deploymentManager.addDeployable(fc); + deploymentManager.readConfiguration(); + return fc; + } + + public static class MySensitiveStringCodec implements SensitiveDataCodec { + public static boolean decoded = false; + + @Override + public String decode(Object mask) throws Exception { + decoded = true; + return null; + } + + @Override + public String encode(Object secret) throws Exception { + return null; + } + } +} diff --git a/artemis-server/src/test/resources/ConfigurationTest-db-encrypted-pass-config.xml b/artemis-server/src/test/resources/ConfigurationTest-db-encrypted-pass-config.xml new file mode 100644 index 0000000000..9caa854e69 --- /dev/null +++ b/artemis-server/src/test/resources/ConfigurationTest-db-encrypted-pass-config.xml @@ -0,0 +1,38 @@ + + + + + org.apache.activemq.artemis.core.config.impl.FileConfigurationDbEncryptedPassTest$MySensitiveStringCodec + + + + foo + foo + foo + foo + foo + foo + ENC(foo) + + + + +