git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@270799 13f79535-47bb-0310-9956-ffa450edef68master
| @@ -19,11 +19,11 @@ import java.text.MessageFormat; | |||||
| import java.text.ParseException; | import java.text.ParseException; | ||||
| import java.util.ArrayList; | import java.util.ArrayList; | ||||
| import java.util.Iterator; | import java.util.Iterator; | ||||
| import org.apache.aut.nativelib.ExecOutputHandler; | |||||
| import org.apache.avalon.excalibur.io.IOUtil; | |||||
| import org.apache.myrmidon.api.AbstractTask; | import org.apache.myrmidon.api.AbstractTask; | ||||
| import org.apache.myrmidon.api.TaskException; | import org.apache.myrmidon.api.TaskException; | ||||
| import org.apache.tools.ant.taskdefs.exec.Execute; | |||||
| import org.apache.tools.ant.taskdefs.exec.Execute2; | import org.apache.tools.ant.taskdefs.exec.Execute2; | ||||
| import org.apache.tools.ant.taskdefs.exec.LogOutputStream; | |||||
| import org.apache.tools.ant.types.Commandline; | import org.apache.tools.ant.types.Commandline; | ||||
| /** | /** | ||||
| @@ -44,6 +44,7 @@ import org.apache.tools.ant.types.Commandline; | |||||
| */ | */ | ||||
| public class Pvcs | public class Pvcs | ||||
| extends AbstractTask | extends AbstractTask | ||||
| implements ExecOutputHandler | |||||
| { | { | ||||
| /** | /** | ||||
| * Constant for the thing to execute | * Constant for the thing to execute | ||||
| @@ -72,6 +73,7 @@ public class Pvcs | |||||
| private String m_repository; | private String m_repository; | ||||
| private boolean m_updateOnly; | private boolean m_updateOnly; | ||||
| private String m_workspace; | private String m_workspace; | ||||
| private FileOutputStream m_output; | |||||
| /** | /** | ||||
| * Creates a Pvcs object | * Creates a Pvcs object | ||||
| @@ -269,9 +271,10 @@ public class Pvcs | |||||
| tmp = File.createTempFile( "pvcs_ant_", ".log" ); | tmp = File.createTempFile( "pvcs_ant_", ".log" ); | ||||
| final File fileList = File.createTempFile( "pvcs_ant_", ".log" ); | final File fileList = File.createTempFile( "pvcs_ant_", ".log" ); | ||||
| final Execute exe = new Execute(); | |||||
| exe.setOutput( new FileOutputStream( tmp ) ); | |||||
| exe.setError( new LogOutputStream( getLogger(), true ) ); | |||||
| final Execute2 exe = new Execute2(); | |||||
| setupLogger( exe ); | |||||
| exe.setExecOutputHandler( this ); | |||||
| m_output = new FileOutputStream( tmp ); | |||||
| exe.setWorkingDirectory( getBaseDirectory() ); | exe.setWorkingDirectory( getBaseDirectory() ); | ||||
| exe.setCommandline( cmd.getCommandline() ); | exe.setCommandline( cmd.getCommandline() ); | ||||
| final int result = exe.execute(); | final int result = exe.execute(); | ||||
| @@ -306,6 +309,7 @@ public class Pvcs | |||||
| } | } | ||||
| finally | finally | ||||
| { | { | ||||
| IOUtil.shutdownStream( m_output ); | |||||
| if( null != tmp ) | if( null != tmp ) | ||||
| { | { | ||||
| tmp.delete(); | tmp.delete(); | ||||
| @@ -313,6 +317,32 @@ public class Pvcs | |||||
| } | } | ||||
| } | } | ||||
| /** | |||||
| * Receive notification about the process writing | |||||
| * to standard output. | |||||
| */ | |||||
| public void stdout( final String line ) | |||||
| { | |||||
| try | |||||
| { | |||||
| m_output.write( line.getBytes() ); | |||||
| } | |||||
| catch( final IOException ioe ) | |||||
| { | |||||
| final String message = "Failed to write to output stream"; | |||||
| getLogger().error( message ); | |||||
| } | |||||
| } | |||||
| /** | |||||
| * Receive notification about the process writing | |||||
| * to standard error. | |||||
| */ | |||||
| public void stderr( final String line ) | |||||
| { | |||||
| getLogger().warn( line ); | |||||
| } | |||||
| private Commandline buildPCLICommand() | private Commandline buildPCLICommand() | ||||
| throws TaskException | throws TaskException | ||||
| { | { | ||||
| @@ -19,11 +19,11 @@ import java.text.MessageFormat; | |||||
| import java.text.ParseException; | import java.text.ParseException; | ||||
| import java.util.ArrayList; | import java.util.ArrayList; | ||||
| import java.util.Iterator; | import java.util.Iterator; | ||||
| import org.apache.aut.nativelib.ExecOutputHandler; | |||||
| import org.apache.avalon.excalibur.io.IOUtil; | |||||
| import org.apache.myrmidon.api.AbstractTask; | import org.apache.myrmidon.api.AbstractTask; | ||||
| import org.apache.myrmidon.api.TaskException; | import org.apache.myrmidon.api.TaskException; | ||||
| import org.apache.tools.ant.taskdefs.exec.Execute; | |||||
| import org.apache.tools.ant.taskdefs.exec.Execute2; | import org.apache.tools.ant.taskdefs.exec.Execute2; | ||||
| import org.apache.tools.ant.taskdefs.exec.LogOutputStream; | |||||
| import org.apache.tools.ant.types.Commandline; | import org.apache.tools.ant.types.Commandline; | ||||
| /** | /** | ||||
| @@ -44,6 +44,7 @@ import org.apache.tools.ant.types.Commandline; | |||||
| */ | */ | ||||
| public class Pvcs | public class Pvcs | ||||
| extends AbstractTask | extends AbstractTask | ||||
| implements ExecOutputHandler | |||||
| { | { | ||||
| /** | /** | ||||
| * Constant for the thing to execute | * Constant for the thing to execute | ||||
| @@ -72,6 +73,7 @@ public class Pvcs | |||||
| private String m_repository; | private String m_repository; | ||||
| private boolean m_updateOnly; | private boolean m_updateOnly; | ||||
| private String m_workspace; | private String m_workspace; | ||||
| private FileOutputStream m_output; | |||||
| /** | /** | ||||
| * Creates a Pvcs object | * Creates a Pvcs object | ||||
| @@ -269,9 +271,10 @@ public class Pvcs | |||||
| tmp = File.createTempFile( "pvcs_ant_", ".log" ); | tmp = File.createTempFile( "pvcs_ant_", ".log" ); | ||||
| final File fileList = File.createTempFile( "pvcs_ant_", ".log" ); | final File fileList = File.createTempFile( "pvcs_ant_", ".log" ); | ||||
| final Execute exe = new Execute(); | |||||
| exe.setOutput( new FileOutputStream( tmp ) ); | |||||
| exe.setError( new LogOutputStream( getLogger(), true ) ); | |||||
| final Execute2 exe = new Execute2(); | |||||
| setupLogger( exe ); | |||||
| exe.setExecOutputHandler( this ); | |||||
| m_output = new FileOutputStream( tmp ); | |||||
| exe.setWorkingDirectory( getBaseDirectory() ); | exe.setWorkingDirectory( getBaseDirectory() ); | ||||
| exe.setCommandline( cmd.getCommandline() ); | exe.setCommandline( cmd.getCommandline() ); | ||||
| final int result = exe.execute(); | final int result = exe.execute(); | ||||
| @@ -306,6 +309,7 @@ public class Pvcs | |||||
| } | } | ||||
| finally | finally | ||||
| { | { | ||||
| IOUtil.shutdownStream( m_output ); | |||||
| if( null != tmp ) | if( null != tmp ) | ||||
| { | { | ||||
| tmp.delete(); | tmp.delete(); | ||||
| @@ -313,6 +317,32 @@ public class Pvcs | |||||
| } | } | ||||
| } | } | ||||
| /** | |||||
| * Receive notification about the process writing | |||||
| * to standard output. | |||||
| */ | |||||
| public void stdout( final String line ) | |||||
| { | |||||
| try | |||||
| { | |||||
| m_output.write( line.getBytes() ); | |||||
| } | |||||
| catch( final IOException ioe ) | |||||
| { | |||||
| final String message = "Failed to write to output stream"; | |||||
| getLogger().error( message ); | |||||
| } | |||||
| } | |||||
| /** | |||||
| * Receive notification about the process writing | |||||
| * to standard error. | |||||
| */ | |||||
| public void stderr( final String line ) | |||||
| { | |||||
| getLogger().warn( line ); | |||||
| } | |||||
| private Commandline buildPCLICommand() | private Commandline buildPCLICommand() | ||||
| throws TaskException | throws TaskException | ||||
| { | { | ||||