diff --git a/proposal/myrmidon/src/java/org/apache/antlib/cvslib/ChangeLog.java b/proposal/myrmidon/src/java/org/apache/antlib/cvslib/ChangeLog.java index 75bb1585d..b4e1455ee 100644 --- a/proposal/myrmidon/src/java/org/apache/antlib/cvslib/ChangeLog.java +++ b/proposal/myrmidon/src/java/org/apache/antlib/cvslib/ChangeLog.java @@ -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() ] ); } /** diff --git a/proposal/myrmidon/src/java/org/apache/antlib/cvslib/ChangeLogParser.java b/proposal/myrmidon/src/java/org/apache/antlib/cvslib/ChangeLogParser.java index 95cec58d5..a8aa1630b 100644 --- a/proposal/myrmidon/src/java/org/apache/antlib/cvslib/ChangeLogParser.java +++ b/proposal/myrmidon/src/java/org/apache/antlib/cvslib/ChangeLogParser.java @@ -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 ); } /** diff --git a/src/main/org/apache/tools/ant/taskdefs/cvslib/ChangeLogTask.java b/src/main/org/apache/tools/ant/taskdefs/cvslib/ChangeLogTask.java index 972f0da60..e37d025a1 100644 --- a/src/main/org/apache/tools/ant/taskdefs/cvslib/ChangeLogTask.java +++ b/src/main/org/apache/tools/ant/taskdefs/cvslib/ChangeLogTask.java @@ -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 ); diff --git a/src/main/org/apache/tools/ant/taskdefs/cvslib/RedirectingStreamHandler.java b/src/main/org/apache/tools/ant/taskdefs/cvslib/RedirectingStreamHandler.java index edc08717f..948acff6a 100644 --- a/src/main/org/apache/tools/ant/taskdefs/cvslib/RedirectingStreamHandler.java +++ b/src/main/org/apache/tools/ant/taskdefs/cvslib/RedirectingStreamHandler.java @@ -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 ); + } } }