Submitted by: dion@multitask.com.au via "Vincent Massol" <vmassol@octo.com> git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@272158 13f79535-47bb-0310-9956-ffa450edef68master
| @@ -14,12 +14,12 @@ import java.io.IOException; | |||
| import java.io.OutputStreamWriter; | |||
| import java.io.PrintWriter; | |||
| import java.io.UnsupportedEncodingException; | |||
| import java.text.SimpleDateFormat; | |||
| import java.util.ArrayList; | |||
| import java.util.Date; | |||
| import java.util.Enumeration; | |||
| import java.util.Properties; | |||
| import java.util.Vector; | |||
| import java.util.ArrayList; | |||
| import java.util.Date; | |||
| import java.text.SimpleDateFormat; | |||
| import org.apache.avalon.excalibur.i18n.ResourceManager; | |||
| import org.apache.avalon.excalibur.i18n.Resources; | |||
| import org.apache.avalon.excalibur.io.IOUtil; | |||
| @@ -28,7 +28,6 @@ import org.apache.myrmidon.api.TaskException; | |||
| import org.apache.myrmidon.framework.Execute; | |||
| import org.apache.myrmidon.framework.FileSet; | |||
| import org.apache.tools.todo.types.Commandline; | |||
| import org.apache.tools.todo.types.DirectoryScanner; | |||
| /** | |||
| * Change log task. | |||
| @@ -220,7 +219,7 @@ public class ChangeLog | |||
| } | |||
| */ | |||
| final ChangeLogParser parser = new ChangeLogParser( userList ); | |||
| final ChangeLogParser parser = new ChangeLogParser( userList, getContext() ); | |||
| final Execute exe = new Execute(); | |||
| exe.setWorkingDirectory( m_dir ); | |||
| exe.setCommandline( command ); | |||
| @@ -297,7 +296,7 @@ public class ChangeLog | |||
| final ArrayList results = new ArrayList(); | |||
| for( int i = 0; i < entrySet.length; i++ ) | |||
| { | |||
| final CVSEntry cvsEntry = entrySet[i ]; | |||
| final CVSEntry cvsEntry = entrySet[ i ]; | |||
| final Date date = cvsEntry.getDate(); | |||
| if( null != m_start && m_start.after( date ) ) | |||
| { | |||
| @@ -312,7 +311,7 @@ public class ChangeLog | |||
| results.add( cvsEntry ); | |||
| } | |||
| return (CVSEntry[])results.toArray( new CVSEntry[results.size() ] ); | |||
| return (CVSEntry[])results.toArray( new CVSEntry[ results.size() ] ); | |||
| } | |||
| /** | |||
| @@ -12,9 +12,10 @@ import java.text.SimpleDateFormat; | |||
| import java.util.Date; | |||
| import java.util.Hashtable; | |||
| import java.util.Properties; | |||
| import org.apache.avalon.excalibur.i18n.Resources; | |||
| import org.apache.avalon.excalibur.i18n.ResourceManager; | |||
| import org.apache.aut.nativelib.ExecOutputHandler; | |||
| import org.apache.avalon.excalibur.i18n.ResourceManager; | |||
| import org.apache.avalon.excalibur.i18n.Resources; | |||
| import org.apache.myrmidon.api.TaskContext; | |||
| /** | |||
| * A class used to parse the output of the CVS log command. | |||
| @@ -48,6 +49,8 @@ class ChangeLogParser | |||
| private int m_status = GET_FILE; | |||
| private final TaskContext m_context; | |||
| /** rcs entries */ | |||
| private final Hashtable m_entries = new Hashtable(); | |||
| @@ -58,9 +61,11 @@ class ChangeLogParser | |||
| * | |||
| * @param userList the userlist | |||
| */ | |||
| public ChangeLogParser( Properties userList ) | |||
| ChangeLogParser( final Properties userList, | |||
| final TaskContext context ) | |||
| { | |||
| m_userList = userList; | |||
| m_context = context; | |||
| } | |||
| /** | |||
| @@ -80,7 +85,7 @@ class ChangeLogParser | |||
| */ | |||
| public void stderr( String line ) | |||
| { | |||
| //ignore | |||
| m_context.error( line ); | |||
| } | |||
| /** | |||
| @@ -280,6 +280,12 @@ public class ChangeLogTask | |||
| throw new BuildException( ioe.toString() ); | |||
| } | |||
| final String errors = handler.getErrors(); | |||
| if( null != errors ) | |||
| { | |||
| log( errors, Project.MSG_ERR ); | |||
| } | |||
| final CVSEntry[] entrySet = parser.getEntrySetAsArray(); | |||
| final CVSEntry[] filteredEntrySet = filterEntrySet( entrySet ); | |||
| writeChangeLog( filteredEntrySet ); | |||
| @@ -72,12 +72,25 @@ class RedirectingStreamHandler | |||
| private final ChangeLogParser m_parser; | |||
| private BufferedReader m_reader; | |||
| private InputStreamReader m_error; | |||
| private final StringBuffer m_errors = new StringBuffer(); | |||
| public RedirectingStreamHandler( final ChangeLogParser parser ) | |||
| RedirectingStreamHandler( final ChangeLogParser parser ) | |||
| { | |||
| m_parser = parser; | |||
| } | |||
| String getErrors() | |||
| { | |||
| if( 0 == m_errors.length() ) | |||
| { | |||
| return null; | |||
| } | |||
| else | |||
| { | |||
| return m_errors.toString(); | |||
| } | |||
| } | |||
| /** | |||
| * Install a handler for the input stream of the subprocess. | |||
| * | |||
| @@ -127,7 +140,11 @@ class RedirectingStreamHandler | |||
| //http://developer.java.sun.com/developer/bugParade/bugs/4329985.html) | |||
| while( m_error.ready() ) | |||
| { | |||
| m_error.read(); | |||
| final int value = m_error.read(); | |||
| if( -1 != value ) | |||
| { | |||
| m_errors.append( (char)value ); | |||
| } | |||
| } | |||
| } | |||