diff options
Diffstat (limited to 'src/main/org/apache/tools/ant/XmlLogger.java')
-rw-r--r-- | src/main/org/apache/tools/ant/XmlLogger.java | 55 |
1 files changed, 27 insertions, 28 deletions
diff --git a/src/main/org/apache/tools/ant/XmlLogger.java b/src/main/org/apache/tools/ant/XmlLogger.java index 086123efc..3a9848e0c 100644 --- a/src/main/org/apache/tools/ant/XmlLogger.java +++ b/src/main/org/apache/tools/ant/XmlLogger.java @@ -32,7 +32,6 @@ import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import org.apache.tools.ant.util.DOMElementWriter; -import org.apache.tools.ant.util.FileUtils; import org.apache.tools.ant.util.StringUtils; import org.w3c.dom.Document; import org.w3c.dom.Element; @@ -109,16 +108,16 @@ public class XmlLogger implements BuildLogger { private Document doc = builder.newDocument(); /** Mapping for when tasks started (Task to TimedElement). */ - private Hashtable<Task, TimedElement> tasks = new Hashtable<Task, TimedElement>(); + private Hashtable<Task, TimedElement> tasks = new Hashtable<>(); /** Mapping for when targets started (Target to TimedElement). */ - private Hashtable<Target, TimedElement> targets = new Hashtable<Target, XmlLogger.TimedElement>(); + private Hashtable<Target, TimedElement> targets = new Hashtable<>(); /** * Mapping of threads to stacks of elements * (Thread to Stack of TimedElement). */ - private Hashtable<Thread, Stack<TimedElement>> threadStacks = new Hashtable<Thread, Stack<TimedElement>>(); + private Hashtable<Thread, Stack<TimedElement>> threadStacks = new Hashtable<>(); /** * When the build started. @@ -134,23 +133,20 @@ public class XmlLogger implements BuildLogger { private long startTime; /** Element created at the start time. */ private Element element; + + @Override public String toString() { return element.getTagName() + ":" + element.getAttribute("name"); } } /** - * Constructs a new BuildListener that logs build events to an XML file. - */ - public XmlLogger() { - } - - /** * Fired when the build starts, this builds the top-level element for the * document and remembers the time of the start of the build. * * @param event Ignored. */ + @Override public void buildStarted(BuildEvent event) { buildElement = new TimedElement(); buildElement.startTime = System.currentTimeMillis(); @@ -164,6 +160,7 @@ public class XmlLogger implements BuildLogger { * @param event An event with any relevant extra information. * Will not be <code>null</code>. */ + @Override public void buildFinished(BuildEvent event) { long totalTime = System.currentTimeMillis() - buildElement.startTime; buildElement.element.setAttribute(TIME_ATTR, DefaultLogger.formatTime(totalTime)); @@ -180,25 +177,19 @@ public class XmlLogger implements BuildLogger { } String outFilename = getProperty(event, "XmlLogger.file", "log.xml"); String xslUri = getProperty(event, "ant.XmlLogger.stylesheet.uri", "log.xsl"); - Writer out = null; - try { - // specify output in UTF8 otherwise accented characters will blow - // up everything - OutputStream stream = outStream; - if (stream == null) { - stream = Files.newOutputStream(Paths.get(outFilename)); - } - out = new OutputStreamWriter(stream, "UTF8"); + + try (OutputStream stream = + outStream == null ? Files.newOutputStream(Paths.get(outFilename)) : outStream; + Writer out = new OutputStreamWriter(stream, "UTF8")) { out.write("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"); if (xslUri.length() > 0) { - out.write("<?xml-stylesheet type=\"text/xsl\" href=\"" + xslUri + "\"?>\n\n"); + out.write("<?xml-stylesheet type=\"text/xsl\" href=\"" + xslUri + + "\"?>\n\n"); } new DOMElementWriter().write(buildElement.element, out, 0, "\t"); out.flush(); } catch (IOException exc) { throw new BuildException("Unable to write log file", exc); - } finally { - FileUtils.close(out); } buildElement = null; } @@ -218,7 +209,7 @@ public class XmlLogger implements BuildLogger { private Stack<TimedElement> getStack() { Stack<TimedElement> threadStack = threadStacks.get(Thread.currentThread()); if (threadStack == null) { - threadStack = new Stack<TimedElement>(); + threadStack = new Stack<>(); threadStacks.put(Thread.currentThread(), threadStack); } /* For debugging purposes uncomment: @@ -236,6 +227,7 @@ public class XmlLogger implements BuildLogger { * @param event An event with any relevant extra information. * Will not be <code>null</code>. */ + @Override public void targetStarted(BuildEvent event) { Target target = event.getTarget(); TimedElement targetElement = new TimedElement(); @@ -253,6 +245,7 @@ public class XmlLogger implements BuildLogger { * @param event An event with any relevant extra information. * Will not be <code>null</code>. */ + @Override public void targetFinished(BuildEvent event) { Target target = event.getTarget(); TimedElement targetElement = targets.get(target); @@ -290,6 +283,7 @@ public class XmlLogger implements BuildLogger { * @param event An event with any relevant extra information. * Will not be <code>null</code>. */ + @Override public void taskStarted(BuildEvent event) { TimedElement taskElement = new TimedElement(); taskElement.startTime = System.currentTimeMillis(); @@ -313,6 +307,7 @@ public class XmlLogger implements BuildLogger { * @param event An event with any relevant extra information. * Will not be <code>null</code>. */ + @Override public void taskFinished(BuildEvent event) { Task task = event.getTask(); TimedElement taskElement = tasks.get(task); @@ -355,10 +350,9 @@ public class XmlLogger implements BuildLogger { } for (Enumeration<Task> e = tasks.keys(); e.hasMoreElements();) { Task key = e.nextElement(); - if (key instanceof UnknownElement) { - if (((UnknownElement) key).getTask() == task) { - return tasks.get(key); - } + if (key instanceof UnknownElement + && ((UnknownElement) key).getTask() == task) { + return tasks.get(key); } } return null; @@ -372,6 +366,7 @@ public class XmlLogger implements BuildLogger { * @param event An event with any relevant extra information. * Will not be <code>null</code>. */ + @Override public void messageLogged(BuildEvent event) { int priority = event.getPriority(); if (priority > msgOutputLevel) { @@ -379,7 +374,7 @@ public class XmlLogger implements BuildLogger { } Element messageElement = doc.createElement(MESSAGE_TAG); - String name = "debug"; + String name; switch (priority) { case Project.MSG_ERR: name = "error"; @@ -433,6 +428,7 @@ public class XmlLogger implements BuildLogger { * see {@link org.apache.tools.ant.Project#MSG_ERR Project} * class for level definitions */ + @Override public void setMessageOutputLevel(int level) { msgOutputLevel = level; } @@ -443,6 +439,7 @@ public class XmlLogger implements BuildLogger { * * @param output the output PrintStream. */ + @Override public void setOutputPrintStream(PrintStream output) { this.outStream = new PrintStream(output, true); } @@ -453,6 +450,7 @@ public class XmlLogger implements BuildLogger { * @param emacsMode true if logger should produce emacs compatible * output */ + @Override public void setEmacsMode(boolean emacsMode) { } @@ -463,6 +461,7 @@ public class XmlLogger implements BuildLogger { * * @param err the stream we are going to ignore. */ + @Override public void setErrorPrintStream(PrintStream err) { } |