Remove XML writing in AbstactConfiguration
Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/3e7df46b Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/3e7df46b Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/3e7df46b Branch: refs/heads/LOG4J2-1553 Commit: 3e7df46bbdc4c7b1c0b5bb35572f4691e91d761e Parents: 4ae1cc2 Author: Mikael Ståldal <mik...@staldal.nu> Authored: Sun Aug 21 20:19:22 2016 +0200 Committer: Mikael Ståldal <mik...@staldal.nu> Committed: Sun Aug 21 20:19:22 2016 +0200 ---------------------------------------------------------------------- .../core/config/AbstractConfiguration.java | 154 ------------------- .../builder/ConfigurationBuilderTest.java | 43 +----- 2 files changed, 2 insertions(+), 195 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/3e7df46b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/AbstractConfiguration.java ---------------------------------------------------------------------- diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/AbstractConfiguration.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/AbstractConfiguration.java index 49a401b..ef3f668 100644 --- a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/AbstractConfiguration.java +++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/AbstractConfiguration.java @@ -46,17 +46,11 @@ import org.apache.logging.log4j.core.util.NameUtil; import org.apache.logging.log4j.core.util.NanoClock; import org.apache.logging.log4j.core.util.WatchManager; import org.apache.logging.log4j.util.PropertiesUtil; -import org.apache.logging.log4j.util.Strings; -import javax.xml.stream.XMLOutputFactory; -import javax.xml.stream.XMLStreamException; -import javax.xml.stream.XMLStreamWriter; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; -import java.io.OutputStream; import java.io.Serializable; -import java.io.StringWriter; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; @@ -187,154 +181,6 @@ public abstract class AbstractConfiguration extends AbstractFilterable implement return rootNode; } - private static final List<String> SECTION_NAMES = - Arrays.asList("Properties", "Scripts", "CustomLevels", "Filters", "Appenders", "Loggers"); - - public void writeXmlConfiguration(final OutputStream output) throws IOException { - try { - XMLStreamWriter xmlWriter = XMLOutputFactory.newInstance().createXMLStreamWriter(output); - writeXmlConfiguration(xmlWriter); - xmlWriter.close(); - } catch (XMLStreamException e) { - if (e.getNestedException() instanceof IOException) { - throw (IOException)e.getNestedException(); - } else { - throw new RuntimeException(e); - } - } - } - - public String toXmlConfiguration() { - StringWriter sw = new StringWriter(); - try { - XMLStreamWriter xmlWriter = XMLOutputFactory.newInstance().createXMLStreamWriter(sw); - writeXmlConfiguration(xmlWriter); - xmlWriter.close(); - } catch (XMLStreamException e) { - throw new RuntimeException(e); - } - return sw.toString(); - } - - private void writeXmlConfiguration(XMLStreamWriter xmlWriter) throws XMLStreamException { - xmlWriter.writeStartDocument(); - xmlWriter.writeCharacters(System.lineSeparator()); - - xmlWriter.writeStartElement("Configuration"); - - if (name != null) { - xmlWriter.writeAttribute("name", getName()); - } - /* TODO status logger config - if (level != null) { - xmlWriter.writeAttribute("status", level.name()); - } - if (verbosity != null) { - xmlWriter.writeAttribute("verbose", verbosity); - } - if (destination != null) { - xmlWriter.writeAttribute("dest", destination); - } - */ - if (!getPluginPackages().isEmpty()) { - xmlWriter.writeAttribute("packages", Strings.join(getPluginPackages(), ',')); - } - if (!isShutdownHookEnabled()) { - xmlWriter.writeAttribute("shutdownHook", "disable"); - } - if (advertiserNode != null) { - xmlWriter.writeAttribute("advertiser", advertiserNode.getName()); - } - if (getWatchManager().getIntervalSeconds() > 0) { - xmlWriter.writeAttribute("monitorInterval", String.valueOf(getWatchManager().getIntervalSeconds())); - } - - xmlWriter.writeCharacters(System.lineSeparator()); - - writeXmlSection(xmlWriter, lookupSection("Properties")); - writeXmlSection(xmlWriter, lookupSection("Scripts")); - writeXmlSection(xmlWriter, lookupSection("CustomLevels")); - Node filters = lookupSection("Filters"); - if (filters != null) { - writeXmlSection(xmlWriter, filters); - } else { - Node filter = lookupFilter(); - if (filter != null) { - writeXmlNode(xmlWriter, filter, 1); - } - } - - writeXmlSection(xmlWriter, lookupSection("Appenders")); - writeXmlSection(xmlWriter, lookupSection("Loggers")); - - xmlWriter.writeEndElement(); // "Configuration" - xmlWriter.writeCharacters(System.lineSeparator()); - - xmlWriter.writeEndDocument(); - } - - private Node lookupSection(String name) { - for (final Node child : rootNode.getChildren()) { - if (child.getName().equalsIgnoreCase(name)) { - return child; - } - } - return null; - } - - private Node lookupFilter() { - for (final Node child : rootNode.getChildren()) { - if (!SECTION_NAMES.contains(child.getName())) { - return child; - } - } - return null; - } - - private void writeXmlSection(XMLStreamWriter xmlWriter, Node node) throws XMLStreamException { - if (node != null && (!node.getAttributes().isEmpty() || !node.getChildren().isEmpty() || node.getValue() != null)) { - writeXmlNode(xmlWriter, node, 1); - } - } - - private void writeXmlNode(XMLStreamWriter xmlWriter, Node node, int nesting) throws XMLStreamException { - if (!node.getChildren().isEmpty() || node.getValue() != null) { - writeXmlIndent(xmlWriter, nesting); - xmlWriter.writeStartElement(node.getName()); - writeXmlAttributes(xmlWriter, node); - if (!node.getChildren().isEmpty()) { - xmlWriter.writeCharacters(System.lineSeparator()); - } - for (Node childNode : node.getChildren()) { - writeXmlNode(xmlWriter, childNode, nesting + 1); - } - if (node.getValue() != null) { - xmlWriter.writeCharacters(node.getValue()); - } - if (!node.getChildren().isEmpty()) { - writeXmlIndent(xmlWriter, nesting); - } - xmlWriter.writeEndElement(); - } else { - writeXmlIndent(xmlWriter, nesting); - xmlWriter.writeEmptyElement(node.getName()); - writeXmlAttributes(xmlWriter, node); - } - xmlWriter.writeCharacters(System.lineSeparator()); - } - - private void writeXmlIndent(XMLStreamWriter xmlWriter, int nesting) throws XMLStreamException { - for (int i = 0; i < nesting; i++) { - xmlWriter.writeCharacters("\t"); - } - } - - private void writeXmlAttributes(XMLStreamWriter xmlWriter, Node node) throws XMLStreamException { - for (Map.Entry<String, String> attribute : node.getAttributes().entrySet()) { - xmlWriter.writeAttribute(attribute.getKey(), attribute.getValue()); - } - } - @Override public AsyncLoggerConfigDelegate getAsyncLoggerConfigDelegate() { // lazily instantiate only when requested by AsyncLoggers: http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/3e7df46b/log4j-core/src/test/java/org/apache/logging/log4j/core/config/builder/ConfigurationBuilderTest.java ---------------------------------------------------------------------- diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/config/builder/ConfigurationBuilderTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/config/builder/ConfigurationBuilderTest.java index 3525125..87ecd26 100644 --- a/log4j-core/src/test/java/org/apache/logging/log4j/core/config/builder/ConfigurationBuilderTest.java +++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/config/builder/ConfigurationBuilderTest.java @@ -19,7 +19,6 @@ package org.apache.logging.log4j.core.config.builder; import org.apache.logging.log4j.Level; import org.apache.logging.log4j.core.Filter; import org.apache.logging.log4j.core.appender.ConsoleAppender; -import org.apache.logging.log4j.core.config.AbstractConfiguration; import org.apache.logging.log4j.core.config.builder.api.AppenderComponentBuilder; import org.apache.logging.log4j.core.config.builder.api.ConfigurationBuilder; import org.apache.logging.log4j.core.config.builder.api.ConfigurationBuilderFactory; @@ -51,7 +50,7 @@ public class ConfigurationBuilderTest { builder.setPackages("foo,bar"); } - private final static String expectedXml1 = + private final static String expectedXml = "<?xml version='1.0' encoding='UTF-8'?>" + System.lineSeparator() + "<Configuration name=\"config name\" status=\"ERROR\" packages=\"foo,bar\">" + System.lineSeparator() + "\t<Properties>" + System.lineSeparator() + @@ -85,45 +84,7 @@ public class ConfigurationBuilderTest { final ConfigurationBuilder<BuiltConfiguration> builder = ConfigurationBuilderFactory.newConfigurationBuilder(); addTestFixtures("config name", builder); final String xmlConfiguration = builder.toXmlConfiguration(); - assertEquals(expectedXml1, xmlConfiguration); + assertEquals(expectedXml, xmlConfiguration); } - private final static String expectedXml2 = - "<?xml version='1.0' encoding='UTF-8'?>" + System.lineSeparator() + - "<Configuration name=\"config name\" status=\"ERROR\" packages=\"foo,bar\">" + System.lineSeparator() + - "\t<Properties>" + System.lineSeparator() + - "\t\t<Property name=\"MyKey\">MyValue</Property>" + System.lineSeparator() + - "\t</Properties>" + System.lineSeparator() + - "\t<Scripts>" + System.lineSeparator() + - "\t\t<ScriptFile name=\"target/test-classes/scripts/filter.groovy\" path=\"target/test-classes/scripts/filter.groovy\" isWatched=\"true\"/>" + System.lineSeparator() + - "\t</Scripts>" + System.lineSeparator() + - "\t<CustomLevels>" + System.lineSeparator() + - "\t\t<CustomLevel name=\"Panic\" intLevel=\"17\"/>" + System.lineSeparator() + - "\t</CustomLevels>" + System.lineSeparator() + - "\t<ThresholdFilter onMatch=\"ACCEPT\" level=\"DEBUG\" onMisMatch=\"NEUTRAL\"/>" + System.lineSeparator() + - "\t<Appenders>" + System.lineSeparator() + - "\t\t<CONSOLE name=\"Stdout\" target=\"SYSTEM_OUT\">" + System.lineSeparator() + - "\t\t\t<PatternLayout pattern=\"%d [%t] %-5level: %msg%n%throwable\"/>" + System.lineSeparator() + - "\t\t\t<MarkerFilter onMatch=\"DENY\" onMisMatch=\"NEUTRAL\" marker=\"FLOW\"/>" + System.lineSeparator() + - "\t\t</CONSOLE>" + System.lineSeparator() + - "\t</Appenders>" + System.lineSeparator() + - "\t<Loggers>" + System.lineSeparator() + - "\t\t<Logger name=\"org.apache.logging.log4j\" additivity=\"false\" level=\"DEBUG\" includeLocation=\"true\">" + System.lineSeparator() + - "\t\t\t<AppenderRef ref=\"Stdout\"/>" + System.lineSeparator() + - "\t\t</Logger>" + System.lineSeparator() + - "\t\t<Root level=\"ERROR\">" + System.lineSeparator() + - "\t\t\t<AppenderRef ref=\"Stdout\"/>" + System.lineSeparator() + - "\t\t</Root>" + System.lineSeparator() + - "\t</Loggers>" + System.lineSeparator() + - "</Configuration>" + System.lineSeparator(); - - @Test - public void testXmlConstructingWithAbstractConfiguration() throws Exception { - final ConfigurationBuilder<BuiltConfiguration> builder = ConfigurationBuilderFactory.newConfigurationBuilder(); - addTestFixtures("config name", builder); - AbstractConfiguration configuration = builder.build(false); - configuration.setup(); - final String xmlConfiguration = configuration.toXmlConfiguration(); - assertEquals(expectedXml2, xmlConfiguration); - } }