conor 2003/01/16 06:45:24 Modified: src/main/org/apache/tools/ant XmlLogger.java Log: Associate messages with the correct tasks in XML Logger. Where an UnknownElement is involved, need to look a little harder Commented out for now the code which associated a project level message with the currently active element - better to have it go to the project level PR: 7926 Revision Changes Path 1.32 +33 -5 jakarta-ant/src/main/org/apache/tools/ant/XmlLogger.java Index: XmlLogger.java =================================================================== RCS file: /home/cvs/jakarta-ant/src/main/org/apache/tools/ant/XmlLogger.java,v retrieving revision 1.31 retrieving revision 1.32 diff -u -w -u -r1.31 -r1.32 --- XmlLogger.java 25 Jul 2002 15:21:01 -0000 1.31 +++ XmlLogger.java 16 Jan 2003 14:45:24 -0000 1.32 @@ -62,6 +62,7 @@ import java.io.Writer; import java.util.Hashtable; import java.util.Stack; +import java.util.Enumeration; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import org.apache.tools.ant.util.DOMElementWriter; @@ -311,11 +312,11 @@ * Will not be <code>null</code>. */ public void taskStarted(BuildEvent event) { - Task task = event.getTask(); TimedElement taskElement = new TimedElement(); taskElement.startTime = System.currentTimeMillis(); taskElement.element = doc.createElement(TASK_TAG); + Task task = event.getTask(); String name = event.getTask().getTaskName(); taskElement.element.setAttribute(NAME_ATTR, name); taskElement.element.setAttribute(LOCATION_ATTR, @@ -360,6 +361,31 @@ } } + + /** + * Get the TimedElement associated with a task. + * + * Where the task is not found directly, search for unknown elements which + * may be hiding the real task + */ + private TimedElement getTaskElement(Task task) { + TimedElement element = (TimedElement) tasks.get(task); + if (element != null) { + return element; + } + + for (Enumeration e = tasks.keys(); e.hasMoreElements();) { + Task key = (Task) e.nextElement(); + if (key instanceof UnknownElement) { + if (((UnknownElement) key).getTask() == task) { + return (TimedElement) tasks.get(key); + } + } + } + + return null; + } + /** * Fired when a message is logged, this adds a message element to the * most appropriate parent element (task, target or build) and records @@ -401,12 +427,13 @@ Target target = event.getTarget(); if (task != null) { - parentElement = (TimedElement) tasks.get(task); + parentElement = getTaskElement(task); } if (parentElement == null && target != null) { parentElement = (TimedElement) targets.get(target); } + /* if (parentElement == null) { Stack threadStack = (Stack) threadStacks.get(Thread.currentThread()); @@ -416,6 +443,7 @@ } } } + */ if (parentElement != null) { parentElement.element.appendChild(messageElement);
-- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>