You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ant.apache.org by ad...@apache.org on 2002/05/18 06:19:35 UTC

cvs commit: jakarta-ant-myrmidon/site/src/xdocs todo.xml

adammurdoch    02/05/17 21:19:35

  Modified:    antlib/src/java/org/apache/antlib/sound AntSoundPlayer.java
                        SoundTask.java
               api/src/java/org/apache/myrmidon/api/event TaskListener.java
               framework/src/todo/org/apache/tools/todo/taskdefs
                        IContract.java
               site/src/xdocs todo.xml
  Added:       antlib/src/java/org/apache/antlib/project
                        ClassicProjectListener.java
                        DefaultProjectListener.java
                        NoPrefixProjectListener.java
               framework/src/java/org/apache/myrmidon/framework/listener
                        AbstractProjectListener.java ProjectEvent.java
                        ProjectListener.java ProjectListenerDeployer.java
                        TaskToProjectListenerAdapter.java
  Removed:     api/src/java/org/apache/myrmidon/listeners
                        AbstractProjectListener.java
                        ClassicProjectListener.java
                        DefaultProjectListener.java
                        NoPrefixProjectListener.java ProjectEvent.java
                        ProjectListener.java
                        TaskToProjectListenerAdapter.java
  Log:
  Moved ProjectListener out of task API:
  
  * Moved ProjectListener, ProjectEvent, and AbstractProjectListener to framework.
  
  * Moved concrete implementations to project antlib.
  
  * Added a custom deployer for project listeners, which registers them under
    ProjectListener and TaskListener roles.
  
  Revision  Changes    Path
  1.1                  jakarta-ant-myrmidon/antlib/src/java/org/apache/antlib/project/ClassicProjectListener.java
  
  Index: ClassicProjectListener.java
  ===================================================================
  /*
   * Copyright (C) The Apache Software Foundation. All rights reserved.
   *
   * This software is published under the terms of the Apache Software License
   * version 1.1, a copy of which has been included with this distribution in
   * the LICENSE.txt file.
   */
  package org.apache.antlib.project;
  
  import java.io.PrintWriter;
  import org.apache.avalon.framework.ExceptionUtil;
  import org.apache.myrmidon.framework.listener.AbstractProjectListener;
  import org.apache.myrmidon.framework.listener.ProjectEvent;
  
  /**
   * Classic listener that emulates the default ant1.x listener.
   *
   * @author <a href="mailto:peter@apache.org">Peter Donald</a>
   * @version $Revision: 1.1 $ $Date: 2002/05/18 04:19:34 $
   * @ant.type type="project-listener" name="classic"
   */
  public class ClassicProjectListener
      extends AbstractProjectListener
  {
      private final PrintWriter m_printWriter;
  
      public ClassicProjectListener()
      {
          m_printWriter = new PrintWriter( System.out, true );
      }
  
      /**
       * Notify listener of targetStarted event.
       */
      public void targetStarted( final ProjectEvent event )
      {
          writeTargetHeader( event );
      }
  
      /**
       * Notify listener of targetFinished event.
       */
      public void targetFinished( final ProjectEvent event )
      {
          getWriter().println();
      }
  
      /**
       * Notify listener of log message event.
       */
      public void log( final ProjectEvent event )
      {
          writeMessage( event );
          writeThrowable( event );
      }
  
      /**
       * Returns the PrintWriter to write to.
       */
      protected PrintWriter getWriter()
      {
          return m_printWriter;
      }
  
      /**
       * Writes the target header.
       */
      protected void writeTargetHeader( final ProjectEvent event )
      {
          getWriter().println( event.getTarget() + ":" );
      }
  
      /**
       * Writes a message
       */
      protected void writeMessage( final ProjectEvent event )
      {
          // Write the message
          final String message = event.getMessage();
          final String task = event.getTask();
          if( null != task )
          {
              getWriter().println( "    [" + task + "] " + message );
          }
          else
          {
              getWriter().println( message );
          }
      }
  
      /**
       * Writes a throwable.
       */
      private void writeThrowable( final ProjectEvent event )
      {
          // Write the exception, if any
          final Throwable throwable = event.getThrowable();
          if( throwable != null )
          {
              getWriter().println( ExceptionUtil.printStackTrace( throwable, 8, true ) );
          }
      }
  }
  
  
  
  1.1                  jakarta-ant-myrmidon/antlib/src/java/org/apache/antlib/project/DefaultProjectListener.java
  
  Index: DefaultProjectListener.java
  ===================================================================
  /*
   * Copyright (C) The Apache Software Foundation. All rights reserved.
   *
   * This software is published under the terms of the Apache Software License
   * version 1.1, a copy of which has been included with this distribution in
   * the LICENSE.txt file.
   */
  package org.apache.antlib.project;
  
  import org.apache.antlib.project.ClassicProjectListener;
  import org.apache.myrmidon.framework.listener.ProjectEvent;
  
  /**
   * Default listener that emulates the Ant 1.x no banner listener.
   *
   * @author <a href="mailto:peter@apache.org">Peter Donald</a>
   * @version $Revision: 1.1 $ $Date: 2002/05/18 04:19:34 $
   * @ant.type type="project-listener" name="default"
   */
  public class DefaultProjectListener
      extends ClassicProjectListener
  {
      private boolean m_targetOutput;
  
      /**
       * Notify listener of targetStarted event.
       */
      public void targetStarted( final ProjectEvent target )
      {
          m_targetOutput = false;
      }
  
      /**
       * Notify listener of targetFinished event.
       */
      public void targetFinished( final ProjectEvent event )
      {
          if( m_targetOutput )
          {
              getWriter().println();
          }
      }
  
      /**
       * Notify listener of log message event.
       */
      public void log( final ProjectEvent event )
      {
          // Write the target header, if necessary
          final String target = event.getTarget();
          if( target != null && !m_targetOutput )
          {
              writeTargetHeader( event );
              m_targetOutput = true;
          }
  
          // Write the message
          super.log( event );
      }
  }
  
  
  
  1.1                  jakarta-ant-myrmidon/antlib/src/java/org/apache/antlib/project/NoPrefixProjectListener.java
  
  Index: NoPrefixProjectListener.java
  ===================================================================
  /*
   * Copyright (C) The Apache Software Foundation. All rights reserved.
   *
   * This software is published under the terms of the Apache Software License
   * version 1.1, a copy of which has been included  with this distribution in
   * the LICENSE.txt file.
   */
  package org.apache.antlib.project;
  
  import org.apache.antlib.project.DefaultProjectListener;
  import org.apache.myrmidon.framework.listener.ProjectEvent;
  
  /**
   * A project listener that emulated the Ant 1.x -emacs mode.
   *
   * @author <a href="mailto:adammurdoch@apache.org">Adam Murdoch</a>
   * @version $Revision: 1.1 $ $Date: 2002/05/18 04:19:34 $
   * @ant.type type="project-listener" name="noprefix"
   */
  public class NoPrefixProjectListener
      extends DefaultProjectListener
  {
      /**
       * Writes a message
       */
      protected void writeMessage( final ProjectEvent event )
      {
          getWriter().println( event.getMessage() );
      }
  }
  
  
  
  1.3       +3 -3      jakarta-ant-myrmidon/antlib/src/java/org/apache/antlib/sound/AntSoundPlayer.java
  
  Index: AntSoundPlayer.java
  ===================================================================
  RCS file: /home/cvs/jakarta-ant-myrmidon/antlib/src/java/org/apache/antlib/sound/AntSoundPlayer.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- AntSoundPlayer.java	25 Apr 2002 08:17:31 -0000	1.2
  +++ AntSoundPlayer.java	18 May 2002 04:19:34 -0000	1.3
  @@ -21,8 +21,8 @@
   import javax.sound.sampled.UnsupportedAudioFileException;
   import org.apache.avalon.framework.logger.LogEnabled;
   import org.apache.avalon.framework.logger.Logger;
  -import org.apache.myrmidon.listeners.AbstractProjectListener;
  -import org.apache.myrmidon.listeners.ProjectEvent;
  +import org.apache.myrmidon.framework.listener.AbstractProjectListener;
  +import org.apache.myrmidon.framework.listener.ProjectEvent;
   
   /**
    * This class is designed to be used by any AntTask that requires audio output.
  @@ -32,7 +32,7 @@
    * Both seem to work fine.
    *
    * @author Nick Pellow
  - * @version $Revision: 1.2 $, $Date: 2002/04/25 08:17:31 $
  + * @version $Revision: 1.3 $, $Date: 2002/05/18 04:19:34 $
    */
   public class AntSoundPlayer
       extends AbstractProjectListener
  
  
  
  1.3       +2 -2      jakarta-ant-myrmidon/antlib/src/java/org/apache/antlib/sound/SoundTask.java
  
  Index: SoundTask.java
  ===================================================================
  RCS file: /home/cvs/jakarta-ant-myrmidon/antlib/src/java/org/apache/antlib/sound/SoundTask.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- SoundTask.java	11 May 2002 12:44:00 -0000	1.2
  +++ SoundTask.java	18 May 2002 04:19:34 -0000	1.3
  @@ -15,7 +15,7 @@
   import org.apache.myrmidon.api.AbstractTask;
   import org.apache.myrmidon.api.TaskException;
   import org.apache.myrmidon.interfaces.workspace.Workspace;
  -import org.apache.myrmidon.listeners.TaskToProjectListenerAdapter;
  +import org.apache.myrmidon.framework.listener.TaskToProjectListenerAdapter;
   
   /**
    * This is an example of an AntTask that makes of use of the AntSoundPlayer.
  @@ -30,7 +30,7 @@
    * @ant.task name="sound-listener"
    * @author Nick Pellow
    * @author <a href="mailto:peter@apache.org">Peter Donald</a>
  - * @version $Revision: 1.2 $, $Date: 2002/05/11 12:44:00 $
  + * @version $Revision: 1.3 $, $Date: 2002/05/18 04:19:34 $
    */
   public class SoundTask
       extends AbstractTask
  
  
  
  1.4       +3 -1      jakarta-ant-myrmidon/api/src/java/org/apache/myrmidon/api/event/TaskListener.java
  
  Index: TaskListener.java
  ===================================================================
  RCS file: /home/cvs/jakarta-ant-myrmidon/api/src/java/org/apache/myrmidon/api/event/TaskListener.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- TaskListener.java	25 Apr 2002 08:25:24 -0000	1.3
  +++ TaskListener.java	18 May 2002 04:19:34 -0000	1.4
  @@ -12,11 +12,13 @@
    * notifications about tasks.
    *
    * @author <a href="mailto:peter@apache.org">Peter Donald</a>
  - * @version $Revision: 1.3 $ $Date: 2002/04/25 08:25:24 $
  + * @version $Revision: 1.4 $ $Date: 2002/05/18 04:19:34 $
    * @ant.role name="task-listener"
    */
   public interface TaskListener
   {
  +    String ROLE = "task-listener";
  +
       /**
        * Notify the listener that the task is starting.
        * This is called prior to task starting.
  
  
  
  1.1                  jakarta-ant-myrmidon/framework/src/java/org/apache/myrmidon/framework/listener/AbstractProjectListener.java
  
  Index: AbstractProjectListener.java
  ===================================================================
  /*
   * Copyright (C) The Apache Software Foundation. All rights reserved.
   *
   * This software is published under the terms of the Apache Software License
   * version 1.1, a copy of which has been included with this distribution in
   * the LICENSE.txt file.
   */
  package org.apache.myrmidon.framework.listener;
  
  /**
   * Abstract listener from which to extend.  This implementation provedes
   * empty implementions of each of the event methods.
   *
   * @author <a href="mailto:peter@apache.org">Peter Donald</a>
   * @author <a href="mailto:adammurdoch@apache.org">Adam Murdoch</a>
   * @version $Revision: 1.1 $ $Date: 2002/05/18 04:19:34 $
   */
  public abstract class AbstractProjectListener
      implements ProjectListener
  {
      /**
       * Notify listener of projectStarted event.
       */
      public void projectStarted( final ProjectEvent event )
      {
      }
  
      /**
       * Notify listener of projectFinished event.
       */
      public void projectFinished( final ProjectEvent event )
      {
      }
  
      /**
       * Notify listener of targetStarted event.
       */
      public void targetStarted( final ProjectEvent event )
      {
      }
  
      /**
       * Notify listener of targetFinished event.
       */
      public void targetFinished( final ProjectEvent event )
      {
      }
  
      /**
       * Notify listener of taskStarted event.
       */
      public void taskStarted( final ProjectEvent event )
      {
      }
  
      /**
       * Notify listener of taskFinished event.
       */
      public void taskFinished( final ProjectEvent event )
      {
      }
  
      /**
       * Notify listener of log message event.
       */
      public void log( final ProjectEvent event )
      {
      }
  }
  
  
  
  1.1                  jakarta-ant-myrmidon/framework/src/java/org/apache/myrmidon/framework/listener/ProjectEvent.java
  
  Index: ProjectEvent.java
  ===================================================================
  /*
   * Copyright (C) The Apache Software Foundation. All rights reserved.
   *
   * This software is published under the terms of the Apache Software License
   * version 1.1, a copy of which has been included  with this distribution in
   * the LICENSE.txt file.
   */
  package org.apache.myrmidon.framework.listener;
  
  import java.util.EventObject;
  import org.apache.myrmidon.api.event.TaskEvent;
  
  /**
   * An event raised while processing an Ant project.
   *
   * @author <a href="mailto:adammurdoch@apache.org">Adam Murdoch</a>
   * @author <a href="mailto:peter@apache.org">Peter Donald</a>
   * @version $Revision: 1.1 $ $Date: 2002/05/18 04:19:34 $
   */
  public class ProjectEvent
      extends EventObject
  {
      /**
       * The name of the project associated with event.
       */
      private final String m_projectName;
  
      /**
       * The name of the target associated with event (if any).
       */
      private final String m_targetName;
  
      /**
       * The name of the task associated with event (if any).
       */
      private final String m_taskName;
  
      /**
       * Message associated with event.
       */
      private final String m_message;
  
      /**
       * Exception associated with event
       */
      private final Throwable m_throwable;
  
      public ProjectEvent( final TaskEvent source,
                           final String projectName,
                           final String targetName,
                           final String taskName,
                           final String message,
                           final Throwable throwable )
      {
          super( source );
          m_projectName = projectName;
          m_targetName = targetName;
          m_taskName = taskName;
          m_message = message;
          m_throwable = throwable;
      }
  
      public String getProject()
      {
          return m_projectName;
      }
  
      public String getTarget()
      {
          return m_targetName;
      }
  
      public String getTask()
      {
          return m_taskName;
      }
  
      public String getMessage()
      {
          return m_message;
      }
  
      public Throwable getThrowable()
      {
          return m_throwable;
      }
  
      public TaskEvent getTaskEvent()
      {
          return (TaskEvent)getSource();
      }
  }
  
  
  
  1.1                  jakarta-ant-myrmidon/framework/src/java/org/apache/myrmidon/framework/listener/ProjectListener.java
  
  Index: ProjectListener.java
  ===================================================================
  /*
   * Copyright (C) The Apache Software Foundation. All rights reserved.
   *
   * This software is published under the terms of the Apache Software License
   * version 1.1, a copy of which has been included with this distribution in
   * the LICENSE.txt file.
   */
  package org.apache.myrmidon.framework.listener;
  
  import org.apache.myrmidon.framework.listener.ProjectEvent;
  
  /**
   * The interface to implement if you want to receive
   * notification of project status.
   *
   * @author <a href="mailto:peter@apache.org">Peter Donald</a>
   * @author <a href="mailto:adammurdoch@apache.org">Adam Murdoch</a>
   * @version $Revision: 1.1 $ $Date: 2002/05/18 04:19:34 $
   * @ant.role name="project-listener"
   *           type-deployer="org.apache.myrmidon.framework.listener.ProjectListenerDeployer"
   *
   * @todo Think about having a way to indicate that a foreign project
   *       is being referenced, a implicit target is being referenced
   *       and that a library is being imported.
   */
  public interface ProjectListener
  {
      String ROLE = "listener";
  
      /**
       * Notify the listener that a project is about to start.  This method
       * is called for top-level projects only.
       */
      void projectStarted( ProjectEvent event );
  
      /**
       * Notify the listener that a project has finished.  This method is called
       * for top-level projects only.
       */
      void projectFinished( ProjectEvent event );
  
      /**
       * Notify the listener that a target is about to start.  Note that the
       * project name reported by the event may be different to that reported
       * in {@link #projectStarted}.
       */
      void targetStarted( ProjectEvent event );
  
      /**
       * Notify the listener that a target has finished.
       */
      void targetFinished( ProjectEvent event );
  
      /**
       * Notify the listener that a task is about to start.
       */
      void taskStarted( ProjectEvent event );
  
      /**
       * Notify the listener that a task has finished.
       */
      void taskFinished( ProjectEvent event );
  
      /**
       * Notify listener of log message event.  Note that this method may
       * be called at any time, so the reported task, target, or project names
       * may be null.
       */
      void log( ProjectEvent event );
  }
  
  
  
  1.1                  jakarta-ant-myrmidon/framework/src/java/org/apache/myrmidon/framework/listener/ProjectListenerDeployer.java
  
  Index: ProjectListenerDeployer.java
  ===================================================================
  /*
   * Copyright (C) The Apache Software Foundation. All rights reserved.
   *
   * This software is published under the terms of the Apache Software License
   * version 1.1, a copy of which has been included with this distribution in
   * the LICENSE.txt file.
   */
  package org.apache.myrmidon.framework.listener;
  
  import org.apache.myrmidon.interfaces.deployer.DefaultTypeDeployer;
  import org.apache.myrmidon.interfaces.deployer.TypeDefinition;
  import org.apache.myrmidon.interfaces.type.TypeFactory;
  import org.apache.myrmidon.interfaces.type.AdaptingTypeFactory;
  import org.apache.myrmidon.api.event.TaskListener;
  
  /**
   * A deployer for project listeners.  Registers the listener as a
   * ProjectListener, and a TaskListener.
   *
   * @author <a href="mailto:adammurdoch@apache.org">Adam Murdoch</a>
   * @version $Revision: 1.1 $ $Date: 2002/05/18 04:19:34 $
   */
  public class ProjectListenerDeployer
      extends DefaultTypeDeployer
  {
      private final AdaptingTypeFactory m_factory = new AdaptingTypeFactory( TaskToProjectListenerAdapter.class );
  
      /**
       * Deploys a type.
       */
      public void deployType( final String namespace,
                              final TypeDefinition typeDefinition,
                              final TypeFactory typeFactory )
          throws Exception
      {
          // Register the listener as a ProjectListener
          super.deployType( namespace, typeDefinition, typeFactory );
  
          // Register the listener as a TaskListener
          final String typeName = typeDefinition.getName();
          m_factory.addMapping( typeName, typeFactory );
          getTypeManager().registerType( TaskListener.ROLE, namespace, typeDefinition.getName(), m_factory );
      }
  }
  
  
  
  1.1                  jakarta-ant-myrmidon/framework/src/java/org/apache/myrmidon/framework/listener/TaskToProjectListenerAdapter.java
  
  Index: TaskToProjectListenerAdapter.java
  ===================================================================
  /*
   * Copyright (C) The Apache Software Foundation. All rights reserved.
   *
   * This software is published under the terms of the Apache Software License
   * version 1.1, a copy of which has been included  with this distribution in
   * the LICENSE.txt file.
   */
  package org.apache.myrmidon.framework.listener;
  
  import java.util.StringTokenizer;
  import org.apache.myrmidon.api.event.TaskEvent;
  import org.apache.myrmidon.api.event.TaskListener;
  import org.apache.myrmidon.framework.listener.ProjectEvent;
  import org.apache.myrmidon.framework.listener.ProjectListener;
  
  /**
   * This is a class that adapts {@link org.apache.myrmidon.api.event.TaskListener} interface to
   * the {@link org.apache.myrmidon.framework.listener.ProjectListener} interface.
   *
   * @author <a href="mailto:peter@apache.org">Peter Donald</a>
   * @version $Revision: 1.1 $ $Date: 2002/05/18 04:19:34 $
   */
  public class TaskToProjectListenerAdapter
      implements TaskListener
  {
      private final ProjectListener m_listener;
  
      /**
       * Create an adaptor for specified listener.
       *
       * @param listener the ProjectListener to redirect events to
       */
      public TaskToProjectListenerAdapter( final ProjectListener listener )
      {
          m_listener = listener;
      }
  
      /**
       * Notify the listener that the task is starting.
       * This is called prior to task starting.
       *
       * @param event the TaskEvent
       */
      public void taskStarting( final TaskEvent event )
      {
          final ProjectEvent projectEvent = toProjectEvent( event );
          if( null == projectEvent.getTarget() )
          {
              m_listener.projectStarted( projectEvent );
          }
          else if( null == projectEvent.getTask() )
          {
              m_listener.targetStarted( projectEvent );
          }
          else
          {
              m_listener.taskStarted( projectEvent );
          }
      }
  
      /**
       * Notify the listener that the task logged
       * a message.
       *
       * @param event the TaskEvent
       */
      public void taskMessage( final TaskEvent event )
      {
          final ProjectEvent projectEvent = toProjectEvent( event );
          m_listener.log( projectEvent );
      }
  
      /**
       * Notify the listener that the task has finished.
       * This is called after task has finished.
       *
       * @param event the TaskEvent
       */
      public void taskFinished( final TaskEvent event )
      {
          final ProjectEvent projectEvent = toProjectEvent( event );
          if( null == projectEvent.getTarget() )
          {
              m_listener.projectFinished( projectEvent );
          }
          else if( null == projectEvent.getTask() )
          {
              m_listener.targetFinished( projectEvent );
          }
          else
          {
              m_listener.taskFinished( projectEvent );
          }
      }
  
      /**
       * Convert the specified {@link org.apache.myrmidon.api.event.TaskEvent} to a {@link org.apache.myrmidon.framework.listener.ProjectEvent}.
       *
       * @param event the TaskEvent
       * @return the Project event representing TaskEvent
       */
      private ProjectEvent toProjectEvent( final TaskEvent event )
      {
          final String path = event.getPath();
          final String[] elements = split( path, "/" );
  
          String projectName = null;
          String targetName = null;
          String taskName = null;
          if( elements.length >= 1 )
          {
              projectName = elements[ 0 ];
          }
  
          if( elements.length >= 2 )
          {
              targetName = elements[ 1 ];
          }
  
          if( elements.length >= 3 )
          {
              taskName = elements[ elements.length - 1 ];
          }
  
          return new ProjectEvent( event,
                                   projectName,
                                   targetName,
                                   taskName,
                                   event.getMessage(),
                                   event.getThrowable() );
      }
  
      /**
       * Splits the string on every token into an array of strings.
       *
       * @param string the string
       * @param onToken the token
       * @return the resultant array
       */
      protected final String[] split( final String string, final String onToken )
      {
          final StringTokenizer tokenizer = new StringTokenizer( string, onToken );
          final String[] result = new String[ tokenizer.countTokens() ];
  
          for( int i = 0; i < result.length; i++ )
          {
              result[ i ] = tokenizer.nextToken();
          }
  
          return result;
      }
  }
  
  
  
  1.3       +1 -1      jakarta-ant-myrmidon/framework/src/todo/org/apache/tools/todo/taskdefs/IContract.java
  
  Index: IContract.java
  ===================================================================
  RCS file: /home/cvs/jakarta-ant-myrmidon/framework/src/todo/org/apache/tools/todo/taskdefs/IContract.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- IContract.java	6 May 2002 09:29:44 -0000	1.2
  +++ IContract.java	18 May 2002 04:19:35 -0000	1.3
  @@ -15,7 +15,7 @@
   import java.util.Date;
   import java.util.Properties;
   import org.apache.myrmidon.api.TaskException;
  -import org.apache.myrmidon.listeners.AbstractProjectListener;
  +import org.apache.myrmidon.framework.listener.AbstractProjectListener;
   import org.apache.myrmidon.listeners.LogEvent;
   import org.apache.tools.todo.taskdefs.javac.DefaultCompilerAdapter;
   import org.apache.tools.todo.taskdefs.javac.Javac;
  
  
  
  1.4       +2 -0      jakarta-ant-myrmidon/site/src/xdocs/todo.xml
  
  Index: todo.xml
  ===================================================================
  RCS file: /home/cvs/jakarta-ant-myrmidon/site/src/xdocs/todo.xml,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- todo.xml	16 May 2002 01:28:28 -0000	1.3
  +++ todo.xml	18 May 2002 04:19:35 -0000	1.4
  @@ -298,6 +298,8 @@
                       <code>&lt;path&gt;</code> or <code>&lt;fileset&gt;</code>)
                       as Ant 1 types.
                       </li>
  +                    <li>Add an adaptor to convert an Ant 1 BuildListener to a
  +                    TaskListener.</li>
                       <li>
                       Missing tests:
                       <ul>
  
  
  

--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>