NodeList children = e.getElementsByTagName(CONFIGURATION_SCHEMA_ROOT_ELEMENT);
if (children.getLength() > 0) {
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 30a3ab0a89..637e3ac7de 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
@@ -16,9 +16,12 @@
*/
package org.apache.activemq.artemis.core.deployers.impl;
+import javax.xml.XMLConstants;
+import javax.xml.transform.dom.DOMSource;
+import javax.xml.validation.Schema;
+import javax.xml.validation.SchemaFactory;
+import javax.xml.validation.Validator;
import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.io.Reader;
import java.security.AccessController;
import java.security.PrivilegedAction;
import java.util.ArrayList;
@@ -93,12 +96,6 @@ import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
-import javax.xml.XMLConstants;
-import javax.xml.transform.dom.DOMSource;
-import javax.xml.validation.Schema;
-import javax.xml.validation.SchemaFactory;
-import javax.xml.validation.Validator;
-
/**
* Parses an XML document according to the {@literal artemis-configuration.xsd} schema.
*/
@@ -286,10 +283,7 @@ public final class FileConfigurationParser extends XMLConfigurationUtil {
}
public Configuration parseMainConfig(final InputStream input) throws Exception {
- Reader reader = new InputStreamReader(input);
- String xml = XMLUtil.readerToString(reader);
- xml = XMLUtil.replaceSystemProps(xml);
- Element e = XMLUtil.stringToElement(xml);
+ Element e = XMLUtil.streamToElement(input);
SchemaFactory schemaFactory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
Schema schema = schemaFactory.newSchema(XMLUtil.findResource("schema/artemis-server.xsd"));
Validator validator = schema.newValidator();
diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/persistence/impl/journal/DescribeJournal.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/persistence/impl/journal/DescribeJournal.java
index d21d38a944..0723d70cc8 100644
--- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/persistence/impl/journal/DescribeJournal.java
+++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/persistence/impl/journal/DescribeJournal.java
@@ -16,42 +16,15 @@
*/
package org.apache.activemq.artemis.core.persistence.impl.journal;
-import static org.apache.activemq.artemis.core.persistence.impl.journal.JournalRecordIds.ACKNOWLEDGE_CURSOR;
-import static org.apache.activemq.artemis.core.persistence.impl.journal.JournalRecordIds.ACKNOWLEDGE_REF;
-import static org.apache.activemq.artemis.core.persistence.impl.journal.JournalRecordIds.ADDRESS_BINDING_RECORD;
-import static org.apache.activemq.artemis.core.persistence.impl.journal.JournalRecordIds.ADDRESS_SETTING_RECORD;
-import static org.apache.activemq.artemis.core.persistence.impl.journal.JournalRecordIds.ADD_LARGE_MESSAGE;
-import static org.apache.activemq.artemis.core.persistence.impl.journal.JournalRecordIds.ADD_LARGE_MESSAGE_PENDING;
-import static org.apache.activemq.artemis.core.persistence.impl.journal.JournalRecordIds.ADD_MESSAGE;
-import static org.apache.activemq.artemis.core.persistence.impl.journal.JournalRecordIds.ADD_MESSAGE_PROTOCOL;
-import static org.apache.activemq.artemis.core.persistence.impl.journal.JournalRecordIds.ADD_REF;
-import static org.apache.activemq.artemis.core.persistence.impl.journal.JournalRecordIds.DUPLICATE_ID;
-import static org.apache.activemq.artemis.core.persistence.impl.journal.JournalRecordIds.HEURISTIC_COMPLETION;
-import static org.apache.activemq.artemis.core.persistence.impl.journal.JournalRecordIds.ID_COUNTER_RECORD;
-import static org.apache.activemq.artemis.core.persistence.impl.journal.JournalRecordIds.PAGE_CURSOR_COMPLETE;
-import static org.apache.activemq.artemis.core.persistence.impl.journal.JournalRecordIds.PAGE_CURSOR_COUNTER_INC;
-import static org.apache.activemq.artemis.core.persistence.impl.journal.JournalRecordIds.PAGE_CURSOR_COUNTER_VALUE;
-import static org.apache.activemq.artemis.core.persistence.impl.journal.JournalRecordIds.PAGE_CURSOR_PENDING_COUNTER;
-import static org.apache.activemq.artemis.core.persistence.impl.journal.JournalRecordIds.PAGE_TRANSACTION;
-import static org.apache.activemq.artemis.core.persistence.impl.journal.JournalRecordIds.QUEUE_BINDING_RECORD;
-import static org.apache.activemq.artemis.core.persistence.impl.journal.JournalRecordIds.QUEUE_STATUS_RECORD;
-import static org.apache.activemq.artemis.core.persistence.impl.journal.JournalRecordIds.SECURITY_RECORD;
-import static org.apache.activemq.artemis.core.persistence.impl.journal.JournalRecordIds.SET_SCHEDULED_DELIVERY_TIME;
-import static org.apache.activemq.artemis.core.persistence.impl.journal.JournalRecordIds.UPDATE_DELIVERY_COUNT;
-
+import javax.transaction.xa.Xid;
import java.io.File;
-import java.io.IOException;
-import java.io.InputStreamReader;
import java.io.PrintStream;
-import java.io.Reader;
import java.net.URL;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
-import javax.transaction.xa.Xid;
-
import org.apache.activemq.artemis.api.core.ActiveMQBuffer;
import org.apache.activemq.artemis.api.core.ActiveMQBuffers;
import org.apache.activemq.artemis.api.core.Message;
@@ -95,6 +68,29 @@ import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
+import static org.apache.activemq.artemis.core.persistence.impl.journal.JournalRecordIds.ACKNOWLEDGE_CURSOR;
+import static org.apache.activemq.artemis.core.persistence.impl.journal.JournalRecordIds.ACKNOWLEDGE_REF;
+import static org.apache.activemq.artemis.core.persistence.impl.journal.JournalRecordIds.ADDRESS_BINDING_RECORD;
+import static org.apache.activemq.artemis.core.persistence.impl.journal.JournalRecordIds.ADDRESS_SETTING_RECORD;
+import static org.apache.activemq.artemis.core.persistence.impl.journal.JournalRecordIds.ADD_LARGE_MESSAGE;
+import static org.apache.activemq.artemis.core.persistence.impl.journal.JournalRecordIds.ADD_LARGE_MESSAGE_PENDING;
+import static org.apache.activemq.artemis.core.persistence.impl.journal.JournalRecordIds.ADD_MESSAGE;
+import static org.apache.activemq.artemis.core.persistence.impl.journal.JournalRecordIds.ADD_MESSAGE_PROTOCOL;
+import static org.apache.activemq.artemis.core.persistence.impl.journal.JournalRecordIds.ADD_REF;
+import static org.apache.activemq.artemis.core.persistence.impl.journal.JournalRecordIds.DUPLICATE_ID;
+import static org.apache.activemq.artemis.core.persistence.impl.journal.JournalRecordIds.HEURISTIC_COMPLETION;
+import static org.apache.activemq.artemis.core.persistence.impl.journal.JournalRecordIds.ID_COUNTER_RECORD;
+import static org.apache.activemq.artemis.core.persistence.impl.journal.JournalRecordIds.PAGE_CURSOR_COMPLETE;
+import static org.apache.activemq.artemis.core.persistence.impl.journal.JournalRecordIds.PAGE_CURSOR_COUNTER_INC;
+import static org.apache.activemq.artemis.core.persistence.impl.journal.JournalRecordIds.PAGE_CURSOR_COUNTER_VALUE;
+import static org.apache.activemq.artemis.core.persistence.impl.journal.JournalRecordIds.PAGE_CURSOR_PENDING_COUNTER;
+import static org.apache.activemq.artemis.core.persistence.impl.journal.JournalRecordIds.PAGE_TRANSACTION;
+import static org.apache.activemq.artemis.core.persistence.impl.journal.JournalRecordIds.QUEUE_BINDING_RECORD;
+import static org.apache.activemq.artemis.core.persistence.impl.journal.JournalRecordIds.QUEUE_STATUS_RECORD;
+import static org.apache.activemq.artemis.core.persistence.impl.journal.JournalRecordIds.SECURITY_RECORD;
+import static org.apache.activemq.artemis.core.persistence.impl.journal.JournalRecordIds.SET_SCHEDULED_DELIVERY_TIME;
+import static org.apache.activemq.artemis.core.persistence.impl.journal.JournalRecordIds.UPDATE_DELIVERY_COUNT;
+
/**
* Outputs a String description of the Journals contents.
*
@@ -113,15 +109,10 @@ public final class DescribeJournal {
if (instanceFolder != null) {
configuration = new FileConfiguration();
File configFile = new File(instanceFolder + "/etc/broker.xml");
- URL url;
- Reader reader = null;
try {
- url = configFile.toURI().toURL();
- reader = new InputStreamReader(url.openStream());
- String xml = XMLUtil.readerToString(reader);
- xml = XMLUtil.replaceSystemProps(xml);
- Element e = XMLUtil.stringToElement(xml);
+ URL url = configFile.toURI().toURL();
+ Element e = XMLUtil.urlToElement(url);
String root = ((FileConfiguration) configuration).getRootElement();
NodeList children = e.getElementsByTagName(root);
@@ -132,14 +123,6 @@ public final class DescribeJournal {
}
} catch (Exception e) {
logger.error("failed to load broker.xml", e);
- } finally {
- if (reader != null) {
- try {
- reader.close();
- } catch (IOException e) {
- // ignore
- }
- }
}
} else {
configuration = new ConfigurationImpl();
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 79ea2d4ef9..3ca145d50a 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
@@ -59,11 +59,31 @@ import org.apache.activemq.artemis.core.server.cluster.impl.MessageLoadBalancing
import org.apache.activemq.artemis.core.server.impl.LegacyLDAPSecuritySettingPlugin;
import org.apache.activemq.artemis.core.server.plugin.ActiveMQServerPlugin;
import org.apache.activemq.artemis.core.settings.impl.SlowConsumerPolicy;
+import org.junit.AfterClass;
import org.junit.Assert;
+import org.junit.Before;
+import org.junit.BeforeClass;
import org.junit.Test;
public class FileConfigurationTest extends ConfigurationImplTest {
+ @BeforeClass
+ public static void setupProperties() {
+ System.setProperty("a2Prop", "a2");
+ System.setProperty("falseProp", "false");
+ System.setProperty("trueProp", "true");
+ System.setProperty("ninetyTwoProp", "92");
+ }
+
+ @AfterClass
+ public static void clearProperties() {
+ System.clearProperty("a2Prop");
+ System.clearProperty("falseProp");
+ System.clearProperty("trueProp");
+ System.clearProperty("ninetyTwoProp");
+ }
+
+
protected String getConfigurationName() {
return "ConfigurationTest-full-config.xml";
}
diff --git a/artemis-server/src/test/resources/ConfigurationTest-full-config.xml b/artemis-server/src/test/resources/ConfigurationTest-full-config.xml
index 930e70baab..d27e7f4288 100644
--- a/artemis-server/src/test/resources/ConfigurationTest-full-config.xml
+++ b/artemis-server/src/test/resources/ConfigurationTest-full-config.xml
@@ -84,7 +84,7 @@
tcp://0.0.0.0:61616?
tcpNoDelay=456;
connectionTtl=44;
- connectionsAllowed=92
+ connectionsAllowed=${ninetyTwoProp}
vm://0?e1=z1;e2=567;connectionsAllowed=87
@@ -364,7 +364,7 @@
-
+
@@ -438,11 +438,11 @@
- false
+ ${falseProp}
-
- true
+
+ ${trueProp}
@@ -452,8 +452,8 @@
-
- true
+
+ ${trueProp}
diff --git a/artemis-server/src/test/resources/ConfigurationTest-xinclude-config-acceptors.xml b/artemis-server/src/test/resources/ConfigurationTest-xinclude-config-acceptors.xml
new file mode 100644
index 0000000000..9ebad5712f
--- /dev/null
+++ b/artemis-server/src/test/resources/ConfigurationTest-xinclude-config-acceptors.xml
@@ -0,0 +1,20 @@
+
+
+ tcp://0.0.0.0:61616?tcpNoDelay=456;connectionTtl=44;connectionsAllowed=${ninetyTwoProp}
+ vm://0?e1=z1;e2=567;connectionsAllowed=87
+
\ No newline at end of file
diff --git a/artemis-server/src/test/resources/ConfigurationTest-xinclude-config-addresses.xml b/artemis-server/src/test/resources/ConfigurationTest-xinclude-config-addresses.xml
index 377b048431..530695ec81 100644
--- a/artemis-server/src/test/resources/ConfigurationTest-xinclude-config-addresses.xml
+++ b/artemis-server/src/test/resources/ConfigurationTest-xinclude-config-addresses.xml
@@ -18,11 +18,11 @@
- false
+ ${falseProp}
-
- true
+
+ ${trueProp}
@@ -32,8 +32,8 @@
-
- true
+
+ ${trueProp}
diff --git a/artemis-server/src/test/resources/ConfigurationTest-xinclude-config-security-settings.xml b/artemis-server/src/test/resources/ConfigurationTest-xinclude-config-security-settings.xml
index e22784c986..38076ab345 100644
--- a/artemis-server/src/test/resources/ConfigurationTest-xinclude-config-security-settings.xml
+++ b/artemis-server/src/test/resources/ConfigurationTest-xinclude-config-security-settings.xml
@@ -18,7 +18,7 @@
-
+
\ No newline at end of file
diff --git a/artemis-server/src/test/resources/ConfigurationTest-xinclude-config.xml b/artemis-server/src/test/resources/ConfigurationTest-xinclude-config.xml
index c99b4ebe28..bd647d61d1 100644
--- a/artemis-server/src/test/resources/ConfigurationTest-xinclude-config.xml
+++ b/artemis-server/src/test/resources/ConfigurationTest-xinclude-config.xml
@@ -76,10 +76,9 @@
tcp://localhost1:5678?localAddress=mylocal;localPort=99
vm://5
-
- tcp://0.0.0.0:61616?tcpNoDelay=456;connectionTtl=44;connectionsAllowed=92
- vm://0?e1=z1;e2=567;connectionsAllowed=87
-
+
+
+
10999
diff --git a/tests/unit-tests/src/test/java/org/apache/activemq/artemis/tests/unit/core/config/impl/ConfigurationValidationTest.java b/tests/unit-tests/src/test/java/org/apache/activemq/artemis/tests/unit/core/config/impl/ConfigurationValidationTest.java
index c6b7c1603e..e7420baf89 100644
--- a/tests/unit-tests/src/test/java/org/apache/activemq/artemis/tests/unit/core/config/impl/ConfigurationValidationTest.java
+++ b/tests/unit-tests/src/test/java/org/apache/activemq/artemis/tests/unit/core/config/impl/ConfigurationValidationTest.java
@@ -26,6 +26,13 @@ import org.w3c.dom.Element;
public class ConfigurationValidationTest extends ActiveMQTestBase {
+ static {
+ System.setProperty("a2Prop", "a2");
+ System.setProperty("falseProp", "false");
+ System.setProperty("trueProp", "true");
+ System.setProperty("ninetyTwoProp", "92");
+ }
+
// Constants -----------------------------------------------------
// Attributes ----------------------------------------------------