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]>

Reply via email to