You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ant.apache.org by do...@apache.org on 2002/01/06 03:30:44 UTC
cvs commit: jakarta-ant/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/optional/perforce P4Add.java P4Base.java P4Change.java P4Counter.java P4Delete.java P4Edit.java P4Have.java P4Label.java P4Reopen.java P4Revert.java P4Submit.java P4Sync.java P4Handler.java P4HandlerAdapter.java P4OutputHandler.java SimpleP4OutputHandler.java
donaldp 02/01/05 18:30:44
Modified: proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/optional/perforce
P4Add.java P4Base.java P4Change.java P4Counter.java
P4Delete.java P4Edit.java P4Have.java P4Label.java
P4Reopen.java P4Revert.java P4Submit.java
P4Sync.java
Removed: proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/optional/perforce
P4Handler.java P4HandlerAdapter.java
P4OutputHandler.java SimpleP4OutputHandler.java
Log:
Started to move the perforce tasks towards the new Execute2 abstraction
Revision Changes Path
1.8 +12 -6 jakarta-ant/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/optional/perforce/P4Add.java
Index: P4Add.java
===================================================================
RCS file: /home/cvs/jakarta-ant/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/optional/perforce/P4Add.java,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- P4Add.java 1 Jan 2002 09:13:46 -0000 1.7
+++ P4Add.java 6 Jan 2002 02:30:43 -0000 1.8
@@ -111,12 +111,12 @@
throws TaskException
{
- if( P4View != null )
+ if( m_p4View != null )
{
- addCmd = P4View;
+ addCmd = m_p4View;
}
- P4CmdOpts = ( m_changelist > 0 ) ? ( "-c " + m_changelist ) : "";
+ m_p4CmdOpts = ( m_changelist > 0 ) ? ( "-c " + m_changelist ) : "";
StringBuffer filelist = new StringBuffer();
@@ -152,10 +152,16 @@
}
- private void execP4Add( StringBuffer list )
+ private void execP4Add( final StringBuffer list )
+ throws TaskException
{
- getLogger().info( "Execing add " + P4CmdOpts + " " + addCmd + list );
+ if( getLogger().isInfoEnabled() )
+ {
+ final String message = "Execing add " + m_p4CmdOpts + " " + addCmd + list;
+ getLogger().info( message );
+ }
- execP4Command( "-s add " + P4CmdOpts + " " + addCmd + list, new SimpleP4OutputHandler( this ) );
+ final String command = "-s add " + m_p4CmdOpts + " " + addCmd + list;
+ execP4Command( command, null );
}
}
1.12 +94 -56 jakarta-ant/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/optional/perforce/P4Base.java
Index: P4Base.java
===================================================================
RCS file: /home/cvs/jakarta-ant/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/optional/perforce/P4Base.java,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -r1.11 -r1.12
--- P4Base.java 23 Dec 2001 14:22:47 -0000 1.11
+++ P4Base.java 6 Jan 2002 02:30:43 -0000 1.12
@@ -9,8 +9,9 @@
import java.io.IOException;
import org.apache.myrmidon.api.TaskException;
+import org.apache.myrmidon.framework.exec.ExecOutputHandler;
import org.apache.oro.text.perl.Perl5Util;
-import org.apache.tools.ant.taskdefs.exec.Execute;
+import org.apache.tools.ant.taskdefs.exec.Execute2;
import org.apache.tools.ant.types.Commandline;
/**
@@ -26,31 +27,32 @@
* @see P4Label
* @see org.apache.tools.ant.taskdefs.Exec
*/
-public abstract class P4Base extends org.apache.tools.ant.Task
+public abstract class P4Base
+ extends org.apache.tools.ant.Task
+ implements ExecOutputHandler
{
-
/**
* Perl5 regexp in Java - cool eh?
*/
- protected Perl5Util util = null;
+ protected Perl5Util util;
//P4 runtime directives
/**
* Perforce Server Port (eg KM01:1666)
*/
- protected String P4Port = "";
+ protected String m_p4Port = "";
/**
* Perforce Client (eg myclientspec)
*/
- protected String P4Client = "";
+ protected String m_p4Client = "";
/**
* Perforce User (eg fbloggs)
*/
- protected String P4User = "";
+ protected String m_p4User = "";
/**
* Perforce view for commands (eg //projects/foobar/main/source/... )
*/
- protected String P4View = "";
+ protected String m_p4View = "";
//P4 g-opts and cmd opts (rtfm)
/**
@@ -60,36 +62,38 @@
/**
* Perforce command opts. Forms half of low level API
*/
- protected String P4CmdOpts = "";
+ protected String m_p4CmdOpts = "";
/**
* The OS shell to use (cmd.exe or /bin/sh)
*/
protected String shell;
+ private TaskException m_error;
+
public void setClient( String P4Client )
{
- this.P4Client = "-c" + P4Client;
+ this.m_p4Client = "-c" + P4Client;
}
public void setCmdopts( String P4CmdOpts )
{
- this.P4CmdOpts = P4CmdOpts;
+ this.m_p4CmdOpts = P4CmdOpts;
}
//Setters called by Ant
public void setPort( String P4Port )
{
- this.P4Port = "-p" + P4Port;
+ this.m_p4Port = "-p" + P4Port;
}
public void setUser( String P4User )
{
- this.P4User = "-u" + P4User;
+ this.m_p4User = "-u" + P4User;
}
public void setView( String P4View )
{
- this.P4View = P4View;
+ this.m_p4View = P4View;
}
private void prepare()
@@ -98,19 +102,19 @@
//Get default P4 settings from environment - Mark would have done something cool with
//introspection here.....:-)
- String tmpprop;
- if( ( tmpprop = getProject().getProperty( "p4.port" ) ) != null )
- setPort( tmpprop );
- if( ( tmpprop = getProject().getProperty( "p4.client" ) ) != null )
- setClient( tmpprop );
- if( ( tmpprop = getProject().getProperty( "p4.user" ) ) != null )
- setUser( tmpprop );
- }
-
- protected void execP4Command( String command )
- throws TaskException
- {
- execP4Command( command, null );
+ Object tmpprop;
+ if( ( tmpprop = getProperty( "p4.port" ) ) != null )
+ {
+ setPort( tmpprop.toString() );
+ }
+ if( ( tmpprop = getProperty( "p4.client" ) ) != null )
+ {
+ setClient( tmpprop.toString() );
+ }
+ if( ( tmpprop = getProperty( "p4.user" ) ) != null )
+ {
+ setUser( tmpprop.toString() );
+ }
}
public void execute()
@@ -123,36 +127,32 @@
/**
* Execute P4 command assembled by subclasses.
- *
- * @param command The command to run
- * @param handler A P4Handler to process any input and output
- * @exception TaskException Description of Exception
*/
- protected void execP4Command( String command, P4Handler handler )
+ protected void execP4Command( final String command,
+ ExecOutputHandler handler )
throws TaskException
{
try
{
-
- Commandline commandline = new Commandline();
- commandline.setExecutable( "p4" );
+ final Commandline cmd = new Commandline();
+ cmd.setExecutable( "p4" );
//Check API for these - it's how CVS does it...
- if( P4Port != null && P4Port.length() != 0 )
+ if( m_p4Port != null && m_p4Port.length() != 0 )
{
- commandline.createArgument().setValue( P4Port );
+ cmd.createArgument().setValue( m_p4Port );
}
- if( P4User != null && P4User.length() != 0 )
+ if( m_p4User != null && m_p4User.length() != 0 )
{
- commandline.createArgument().setValue( P4User );
+ cmd.createArgument().setValue( m_p4User );
}
- if( P4Client != null && P4Client.length() != 0 )
+ if( m_p4Client != null && m_p4Client.length() != 0 )
{
- commandline.createArgument().setValue( P4Client );
+ cmd.createArgument().setValue( m_p4Client );
}
- commandline.createArgument().setLine( command );
+ cmd.createArgument().setLine( command );
- String[] cmdline = commandline.getCommandline();
+ String[] cmdline = cmd.getCommandline();
String cmdl = "";
for( int i = 0; i < cmdline.length; i++ )
{
@@ -160,12 +160,14 @@
}
getLogger().debug( "Execing " + cmdl );
-
if( handler == null )
- handler = new SimpleP4OutputHandler( this );
+ {
+ handler = this;
+ }
- final Execute exe = new Execute( handler );
- exe.setCommandline( commandline.getCommandline() );
+ final Execute2 exe = new Execute2();
+ exe.setExecOutputHandler( handler );
+ exe.setCommandline( cmd.getCommandline() );
try
{
@@ -175,21 +177,57 @@
{
throw new TaskException( "Error", e );
}
- finally
+ if( null != m_error )
{
- try
- {
- handler.stop();
- }
- catch( Exception e )
- {
- }
+ throw m_error;
}
-
+ }
+ catch( TaskException te )
+ {
+ throw te;
}
catch( Exception e )
{
throw new TaskException( "Problem exec'ing P4 command: " + e.getMessage() );
}
+ }
+
+ protected final void registerError( final TaskException error )
+ {
+ m_error = error;
+ m_error.fillInStackTrace();
+ }
+
+ /**
+ * Receive notification about the process writing
+ * to standard output.
+ */
+ public void stdout( final String line )
+ {
+ if( util.match( "/^exit/", line ) )
+ {
+ return;
+ }
+
+ //Throw exception on errors (except up-to-date)
+ //p4 -s is unpredicatable. For example a server down
+ //does not return error: markup
+ //
+ //Some forms producing commands (p4 -s change -o) do tag the output
+ //others don't.....
+ //Others mark errors as info, for example edit a file
+ //which is already open for edit.....
+ //Just look for error: - catches most things....
+
+ if( util.match( "/error:/", line ) && !util.match( "/up-to-date/", line ) )
+ {
+ registerError( new TaskException( line ) );
+ }
+
+ getLogger().info( util.substitute( "s/^.*: //", line ) );
+ }
+
+ public void stderr( final String line )
+ {
}
}
1.7 +88 -75 jakarta-ant/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/optional/perforce/P4Change.java
Index: P4Change.java
===================================================================
RCS file: /home/cvs/jakarta-ant/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/optional/perforce/P4Change.java,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- P4Change.java 23 Dec 2001 14:22:47 -0000 1.6
+++ P4Change.java 6 Jan 2002 02:30:43 -0000 1.7
@@ -8,7 +8,6 @@
package org.apache.tools.ant.taskdefs.optional.perforce;
import org.apache.myrmidon.api.TaskException;
-import org.apache.tools.ant.Project;
/**
* P4Change - grab a new changelist from Perforce. P4Change creates a new
@@ -19,97 +18,59 @@
* @see P4Edit
* @see P4Submit
*/
-public class P4Change extends P4Base
+public class P4Change
+ extends P4Base
{
-
- protected String emptyChangeList = null;
- protected String description = "AutoSubmit By Ant";
+ private String m_emptyChangeList;
+ private String m_description = "AutoSubmit By Ant";
+ private final StringBuffer m_changelistData = new StringBuffer();
+ private boolean m_changelist;
/*
* Set Description Variable.
*/
- public void setDescription( String desc )
+ public void setDescription( final String description )
{
- this.description = desc;
+ m_description = description;
}
- public String getEmptyChangeList()
+ private String getEmptyChangeList()
throws TaskException
{
- final StringBuffer stringbuf = new StringBuffer();
+ m_changelist = true;
+ execP4Command( "change -o", null );
+ m_changelist = false;
- execP4Command( "change -o",
- new P4HandlerAdapter()
- {
- public void process( String line )
- {
- if( !util.match( "/^#/", line ) )
- {
- if( util.match( "/error/", line ) )
- {
-
- getLogger().debug( "Client Error" );
- throw new TaskException( "Perforce Error, check client settings and/or server" );
- }
- else if( util.match( "/<enter description here>/", line ) )
- {
-
- // we need to escape the description in case there are /
- description = backslash( description );
- line = util.substitute( "s/<enter description here>/" + description + "/", line );
-
- }
- else if( util.match( "/\\/\\//", line ) )
- {
- //Match "//" for begining of depot filespec
- return;
- }
-
- stringbuf.append( line );
- stringbuf.append( "\n" );
-
- }
- }
- } );
+ return m_changelistData.toString();
+ }
- return stringbuf.toString();
+ /**
+ * Receive notification about the process writing
+ * to standard output.
+ */
+ public void stdout( final String line )
+ {
+ if( m_changelist )
+ {
+ changelist_stdout( line );
+ }
+ else
+ {
+ change_stdout( line );
+ }
}
public void execute()
throws TaskException
{
+ if( m_emptyChangeList == null )
+ {
+ m_emptyChangeList = getEmptyChangeList();
+ }
- if( emptyChangeList == null )
- emptyChangeList = getEmptyChangeList();
- final Project myProj = getProject();
-
- P4Handler handler =
- new P4HandlerAdapter()
- {
- public void process( String line )
- {
- if( util.match( "/Change/", line ) )
- {
-
- //Remove any non-numerical chars - should leave the change number
- line = util.substitute( "s/[^0-9]//g", line );
-
- int changenumber = Integer.parseInt( line );
- getLogger().info( "Change Number is " + changenumber );
- setProperty( "p4.change", "" + changenumber );
-
- }
- else if( util.match( "/error/", line ) )
- {
- throw new TaskException( "Perforce Error, check client settings and/or server" );
- }
-
- }
- };
-
- handler.setOutput( emptyChangeList );
+ //handler.setOutput( m_emptyChangeList );
- execP4Command( "change -i", handler );
+ execP4Command( "change -i", null );
}
/**
@@ -122,7 +83,7 @@
* @see < a href="http://jakarta.apache.org/oro/api/org/apache/oro/text/perl/Perl5Util.html#substitute(java.lang.String,%20java.lang.String)">
* Oro</a>
*/
- protected String backslash( String value )
+ private String backslash( String value )
{
final StringBuffer buf = new StringBuffer( value.length() );
final int len = value.length();
@@ -138,4 +99,56 @@
return buf.toString();
}
-}//EoF
+ private void changelist_stdout( String line )
+ {
+ if( !util.match( "/^#/", line ) )
+ {
+ if( util.match( "/error/", line ) )
+ {
+ getLogger().debug( "Client Error" );
+ registerError( new TaskException( "Perforce Error, check client settings and/or server" ) );
+ }
+ else if( util.match( "/<enter description here>/", line ) )
+ {
+
+ // we need to escape the description in case there are /
+ m_description = backslash( m_description );
+ line = util.substitute( "s/<enter description here>/" + m_description + "/", line );
+
+ }
+ else if( util.match( "/\\/\\//", line ) )
+ {
+ //Match "//" for begining of depot filespec
+ return;
+ }
+
+ m_changelistData.append( line );
+ m_changelistData.append( "\n" );
+ }
+ }
+
+ private void change_stdout( String line )
+ {
+ if( util.match( "/Change/", line ) )
+ {
+ //Remove any non-numerical chars - should leave the change number
+ line = util.substitute( "s/[^0-9]//g", line );
+
+ final int changenumber = Integer.parseInt( line );
+ getLogger().info( "Change Number is " + changenumber );
+ try
+ {
+ setProperty( "p4.change", "" + changenumber );
+ }
+ catch( final TaskException te )
+ {
+ registerError( te );
+ }
+ }
+ else if( util.match( "/error/", line ) )
+ {
+ final String message = "Perforce Error, check client settings and/or server";
+ registerError( new TaskException( message ) );
+ }
+ }
+}
1.7 +59 -53 jakarta-ant/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/optional/perforce/P4Counter.java
Index: P4Counter.java
===================================================================
RCS file: /home/cvs/jakarta-ant/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/optional/perforce/P4Counter.java,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- P4Counter.java 23 Dec 2001 14:22:47 -0000 1.6
+++ P4Counter.java 6 Jan 2002 02:30:43 -0000 1.7
@@ -8,7 +8,6 @@
package org.apache.tools.ant.taskdefs.optional.perforce;
import org.apache.myrmidon.api.TaskException;
-import org.apache.tools.ant.Project;
/**
* P4Counter - Obtain or set the value of a counter. P4Counter can be used to
@@ -20,48 +19,37 @@
*
* @author <a href="mailto:kirk@radik.com">Kirk Wylie</a>
*/
-
-public class P4Counter extends P4Base
+public class P4Counter
+ extends P4Base
{
- public String counter = null;
- public String property = null;
- public boolean shouldSetValue = false;
- public boolean shouldSetProperty = false;
- public int value = 0;
+ private String m_counter;
+ private String m_property;
+ private boolean m_shouldSetValue;
+ private int m_value;
- public void setName( String counter )
+ public void setName( final String counter )
{
- this.counter = counter;
+ m_counter = counter;
}
- public void setProperty( String property )
+ public void setProperty( final String property )
{
- this.property = property;
- shouldSetProperty = true;
+ m_property = property;
}
- public void setValue( int value )
+ public void setValue( final int value )
{
- this.value = value;
- shouldSetValue = true;
+ m_value = value;
+ m_shouldSetValue = true;
}
public void execute()
throws TaskException
{
+ validate();
- if( ( counter == null ) || counter.length() == 0 )
- {
- throw new TaskException( "No counter specified to retrieve" );
- }
-
- if( shouldSetValue && shouldSetProperty )
- {
- throw new TaskException( "Cannot both set the value of the property and retrieve the value of the property." );
- }
-
- String command = "counter " + P4CmdOpts + " " + counter;
- if( !shouldSetProperty )
+ String command = "counter " + m_p4CmdOpts + " " + m_counter;
+ if( !shouldSetProperty() )
{
// NOTE kirk@radik.com 04-April-2001 -- If you put in the -s, you
// have to start running through regular expressions here. Much easier
@@ -69,38 +57,56 @@
// and strip it later.
command = "-s " + command;
}
- if( shouldSetValue )
+ if( m_shouldSetValue )
{
- command += " " + value;
+ command += " " + m_value;
}
- if( shouldSetProperty )
- {
- final Project myProj = getProject();
-
- P4Handler handler =
- new P4HandlerAdapter()
- {
- public void process( String line )
- {
- getLogger().debug( "P4Counter retrieved line \"" + line + "\"" );
- try
- {
- value = Integer.parseInt( line );
- setProperty( property, "" + value );
- }
- catch( NumberFormatException nfe )
- {
- throw new TaskException( "Perforce error. Could not retrieve counter value." );
- }
- }
- };
+ execP4Command( command, null );
+ }
- execP4Command( command, handler );
+ public void stdout( final String line )
+ {
+ if( shouldSetProperty() )
+ {
+ super.stdout( line );
}
else
{
- execP4Command( command, new SimpleP4OutputHandler( this ) );
+ getLogger().debug( "P4Counter retrieved line \"" + line + "\"" );
+ try
+ {
+ m_value = Integer.parseInt( line );
+ setProperty( m_property, "" + m_value );
+ }
+ catch( final TaskException te )
+ {
+ registerError( te );
+ }
+ catch( NumberFormatException nfe )
+ {
+ final String message = "Perforce error. Could not retrieve counter value.";
+ registerError( new TaskException( message ) );
+ }
}
+ }
+
+ private void validate()
+ throws TaskException
+ {
+ if( ( m_counter == null ) || m_counter.length() == 0 )
+ {
+ throw new TaskException( "No counter specified to retrieve" );
+ }
+
+ if( m_shouldSetValue && shouldSetProperty() )
+ {
+ throw new TaskException( "Cannot both set the value of the property and retrieve the value of the property." );
+ }
+ }
+
+ private boolean shouldSetProperty()
+ {
+ return ( null == m_property );
}
}
1.4 +9 -3 jakarta-ant/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/optional/perforce/P4Delete.java
Index: P4Delete.java
===================================================================
RCS file: /home/cvs/jakarta-ant/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/optional/perforce/P4Delete.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- P4Delete.java 23 Dec 2001 06:31:59 -0000 1.3
+++ P4Delete.java 6 Jan 2002 02:30:43 -0000 1.4
@@ -34,9 +34,15 @@
throws TaskException
{
if( change != null )
- P4CmdOpts = "-c " + change;
- if( P4View == null )
+ {
+ m_p4CmdOpts = "-c " + change;
+ }
+ if( m_p4View == null )
+ {
throw new TaskException( "No view specified to delete" );
- execP4Command( "-s delete " + P4CmdOpts + " " + P4View, new SimpleP4OutputHandler( this ) );
+ }
+
+ final String command = "-s delete " + m_p4CmdOpts + " " + m_p4View;
+ execP4Command( command, null );
}
}
1.4 +9 -3 jakarta-ant/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/optional/perforce/P4Edit.java
Index: P4Edit.java
===================================================================
RCS file: /home/cvs/jakarta-ant/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/optional/perforce/P4Edit.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- P4Edit.java 23 Dec 2001 06:31:59 -0000 1.3
+++ P4Edit.java 6 Jan 2002 02:30:43 -0000 1.4
@@ -31,9 +31,15 @@
throws TaskException
{
if( change != null )
- P4CmdOpts = "-c " + change;
- if( P4View == null )
+ {
+ m_p4CmdOpts = "-c " + change;
+ }
+ if( m_p4View == null )
+ {
throw new TaskException( "No view specified to edit" );
- execP4Command( "-s edit " + P4CmdOpts + " " + P4View, new SimpleP4OutputHandler( this ) );
+ }
+
+ final String command = "-s edit " + m_p4CmdOpts + " " + m_p4View;
+ execP4Command( command, null );
}
}
1.4 +4 -3 jakarta-ant/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/optional/perforce/P4Have.java
Index: P4Have.java
===================================================================
RCS file: /home/cvs/jakarta-ant/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/optional/perforce/P4Have.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- P4Have.java 23 Dec 2001 06:31:59 -0000 1.3
+++ P4Have.java 6 Jan 2002 02:30:43 -0000 1.4
@@ -15,12 +15,13 @@
*
* @author <A HREF="mailto:leslie.hughes@rubus.com">Les Hughes</A>
*/
-public class P4Have extends P4Base
+public class P4Have
+ extends P4Base
{
-
public void execute()
throws TaskException
{
- execP4Command( "have " + P4CmdOpts + " " + P4View, new SimpleP4OutputHandler( this ) );
+ final String command = "have " + m_p4CmdOpts + " " + m_p4View;
+ execP4Command( command, null );
}
}
1.5 +69 -89 jakarta-ant/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/optional/perforce/P4Label.java
Index: P4Label.java
===================================================================
RCS file: /home/cvs/jakarta-ant/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/optional/perforce/P4Label.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- P4Label.java 23 Dec 2001 14:22:47 -0000 1.4
+++ P4Label.java 6 Jan 2002 02:30:43 -0000 1.5
@@ -20,134 +20,114 @@
*
* @author <A HREF="mailto:leslie.hughes@rubus.com">Les Hughes</A>
*/
-public class P4Label extends P4Base
+public class P4Label
+ extends P4Base
{
- protected String desc;
- protected String lock;
+ private String m_description;
+ private String m_lock;
+ private String m_name;
+ private boolean m_getLabelSpec;
+ private StringBuffer m_labelSpec;
- protected String name;
-
- public void setDesc( String desc )
+ public void setDesc( final String description )
{
- this.desc = desc;
+ m_description = description;
}
- public void setLock( String lock )
+ public void setLock( final String lock )
{
- this.lock = lock;
+ m_lock = lock;
}
- public void setName( String name )
+ public void setName( final String name )
{
- this.name = name;
+ m_name = name;
}
- public void execute()
- throws TaskException
+ public void stdout( String line )
{
- getLogger().info( "P4Label exec:" );
+ getLogger().debug( line );
- if( P4View == null || P4View.length() < 1 )
+ if( null != m_labelSpec )
{
- getLogger().warn( "View not set, assuming //depot/..." );
- P4View = "//depot/...";
- }
+ if( util.match( "/^Options:/", line ) )
+ {
+ line = "Options: " + m_lock;
+ }
- if( desc == null || desc.length() < 1 )
- {
- getLogger().warn( "Label Description not set, assuming 'AntLabel'" );
- desc = "AntLabel";
+ m_labelSpec.append( line + "\n" );
}
+ }
- if( lock != null && !lock.equalsIgnoreCase( "locked" ) )
- {
- getLogger().warn( "lock attribute invalid - ignoring" );
- }
+ public void execute()
+ throws TaskException
+ {
+ getLogger().info( "P4Label exec:" );
- if( name == null || name.length() < 1 )
- {
- SimpleDateFormat formatter = new SimpleDateFormat( "yyyy.MM.dd-hh:mm" );
- Date now = new Date();
- name = "AntLabel-" + formatter.format( now );
- getLogger().warn( "name not set, assuming '" + name + "'" );
- }
+ validate();
//We have to create a unlocked label first
String newLabel =
- "Label: " + name + "\n" +
- "Description: " + desc + "\n" +
+ "Label: " + m_name + "\n" +
+ "Description: " + m_description + "\n" +
"Options: unlocked\n" +
- "View: " + P4View + "\n";
+ "View: " + m_p4View + "\n";
- P4Handler handler =
- new P4HandlerAdapter()
- {
- public void process( String line )
- {
- getLogger().debug( line );
- }
- };
-
- handler.setOutput( newLabel );
-
- execP4Command( "label -i", handler );
-
- execP4Command( "labelsync -l " + name,
- new P4HandlerAdapter()
- {
- public void process( String line )
- {
- getLogger().debug( line );
- }
- } );
+ //handler.setOutput( newLabel );
+ execP4Command( "label -i", null );
+ execP4Command( "labelsync -l " + m_name, null );
- getLogger().info( "Created Label " + name + " (" + desc + ")" );
+ getLogger().info( "Created Label " + m_name + " (" + m_description + ")" );
//Now lock if required
- if( lock != null && lock.equalsIgnoreCase( "locked" ) )
+ if( m_lock != null && m_lock.equalsIgnoreCase( "locked" ) )
{
getLogger().info( "Modifying lock status to 'locked'" );
- final StringBuffer labelSpec = new StringBuffer();
-
//Read back the label spec from perforce,
//Replace Options
//Submit back to Perforce
- handler =
- new P4HandlerAdapter()
- {
- public void process( String line )
- {
- getLogger().debug( line );
-
- if( util.match( "/^Options:/", line ) )
- {
- line = "Options: " + lock;
- }
-
- labelSpec.append( line + "\n" );
- }
- };
+ m_labelSpec = new StringBuffer();
+ execP4Command( "label -o " + m_name, null );
+ final String labelSpec = m_labelSpec.toString();
+ getLogger().debug( labelSpec );
- execP4Command( "label -o " + name, handler );
- getLogger().debug( labelSpec.toString() );
+ //reset labelSpec to null so output is not written to it anymore
+ m_labelSpec = null;
getLogger().debug( "Now locking label..." );
- handler =
- new P4HandlerAdapter()
- {
- public void process( String line )
- {
- getLogger().debug( line );
- }
- };
+ //handler.setOutput( labelSpec );
+ execP4Command( "label -i", null );
+ }
+ }
- handler.setOutput( labelSpec.toString() );
- execP4Command( "label -i", handler );
+ private void validate()
+ {
+ if( m_p4View == null || m_p4View.length() < 1 )
+ {
+ getLogger().warn( "View not set, assuming //depot/..." );
+ m_p4View = "//depot/...";
}
- }
+ if( m_description == null || m_description.length() < 1 )
+ {
+ getLogger().warn( "Label Description not set, assuming 'AntLabel'" );
+ m_description = "AntLabel";
+ }
+
+ if( m_lock != null && !m_lock.equalsIgnoreCase( "locked" ) )
+ {
+ getLogger().warn( "lock attribute invalid - ignoring" );
+ }
+ if( m_name == null || m_name.length() < 1 )
+ {
+ SimpleDateFormat formatter = new SimpleDateFormat( "yyyy.MM.dd-hh:mm" );
+ Date now = new Date();
+ m_name = "AntLabel-" + formatter.format( now );
+ getLogger().warn( "name not set, assuming '" + m_name + "'" );
+ }
+ }
}
1.4 +13 -10 jakarta-ant/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/optional/perforce/P4Reopen.java
Index: P4Reopen.java
===================================================================
RCS file: /home/cvs/jakarta-ant/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/optional/perforce/P4Reopen.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- P4Reopen.java 23 Dec 2001 06:31:59 -0000 1.3
+++ P4Reopen.java 6 Jan 2002 02:30:43 -0000 1.4
@@ -14,27 +14,30 @@
*
* @author <A HREF="mailto:leslie.hughes@rubus.com">Les Hughes</A>
*/
-
-public class P4Reopen extends P4Base
+public class P4Reopen
+ extends P4Base
{
+ private String m_toChange = "";
- private String toChange = "";
-
- public void setToChange( String toChange )
+ public void setToChange( final String toChange )
throws TaskException
{
if( toChange == null && !toChange.equals( "" ) )
+ {
throw new TaskException( "P4Reopen: tochange cannot be null or empty" );
+ }
- this.toChange = toChange;
+ m_toChange = toChange;
}
public void execute()
throws TaskException
{
- if( P4View == null )
- if( P4View == null )
- throw new TaskException( "No view specified to reopen" );
- execP4Command( "-s reopen -c " + toChange + " " + P4View, new SimpleP4OutputHandler( this ) );
+ if( m_p4View == null )
+ {
+ throw new TaskException( "No view specified to reopen" );
+ }
+ final String message = "-s reopen -c " + m_toChange + " " + m_p4View;
+ execP4Command( message, null );
}
}
1.4 +18 -14 jakarta-ant/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/optional/perforce/P4Revert.java
Index: P4Revert.java
===================================================================
RCS file: /home/cvs/jakarta-ant/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/optional/perforce/P4Revert.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- P4Revert.java 23 Dec 2001 06:31:59 -0000 1.3
+++ P4Revert.java 6 Jan 2002 02:30:43 -0000 1.4
@@ -14,32 +14,31 @@
*
* @author <A HREF="mailto:leslie.hughes@rubus.com">Les Hughes</A>
*/
-
-public class P4Revert extends P4Base
+public class P4Revert
+ extends P4Base
{
+ private String m_revertChange;
+ private boolean m_onlyUnchanged;
- private String revertChange = null;
- private boolean onlyUnchanged = false;
-
- public void setChange( String revertChange )
+ public void setChange( final String revertChange )
throws TaskException
{
if( revertChange == null && !revertChange.equals( "" ) )
+ {
throw new TaskException( "P4Revert: change cannot be null or empty" );
+ }
- this.revertChange = revertChange;
-
+ m_revertChange = revertChange;
}
public void setRevertOnlyUnchanged( boolean onlyUnchanged )
{
- this.onlyUnchanged = onlyUnchanged;
+ this.m_onlyUnchanged = onlyUnchanged;
}
public void execute()
throws TaskException
{
-
/*
* Here we can either revert any unchanged files in a changelist
* or
@@ -49,12 +48,17 @@
* The whole process also accepts a p4 filespec
*/
String p4cmd = "-s revert";
- if( onlyUnchanged )
+ if( m_onlyUnchanged )
+ {
p4cmd += " -a";
+ }
- if( revertChange != null )
- p4cmd += " -c " + revertChange;
+ if( m_revertChange != null )
+ {
+ p4cmd += " -c " + m_revertChange;
+ }
- execP4Command( p4cmd + " " + P4View, new SimpleP4OutputHandler( this ) );
+ final String command = p4cmd + " " + m_p4View;
+ execP4Command( command, null );
}
}
1.5 +16 -17 jakarta-ant/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/optional/perforce/P4Submit.java
Index: P4Submit.java
===================================================================
RCS file: /home/cvs/jakarta-ant/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/optional/perforce/P4Submit.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- P4Submit.java 23 Dec 2001 14:22:47 -0000 1.4
+++ P4Submit.java 6 Jan 2002 02:30:43 -0000 1.5
@@ -18,32 +18,32 @@
*
* @author <A HREF="mailto:leslie.hughes@rubus.com">Les Hughes</A>
*/
-public class P4Submit extends P4Base
+public class P4Submit
+ extends P4Base
{
-
//ToDo: If dealing with default cl need to parse out <enter description here>
- public String change;
+ private String m_change;
+
+ public void setChange( final String change )
+ {
+ m_change = change;
+ }
- public void setChange( String change )
+ /**
+ * Receive notification about the process writing
+ * to standard output.
+ */
+ public void stdout( final String line )
{
- this.change = change;
+ getLogger().debug( line );
}
public void execute()
throws TaskException
{
- if( change != null )
+ if( m_change != null )
{
- execP4Command( "submit -c " + change,
- new P4HandlerAdapter()
- {
- public void process( String line )
- {
- getLogger().debug( line );
- }
- }
- );
-
+ execP4Command( "submit -c " + m_change, this );
}
else
{
@@ -52,5 +52,4 @@
throw new TaskException( "No change specified (no support for default change yet...." );
}
}
-
}
1.5 +18 -15 jakarta-ant/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/optional/perforce/P4Sync.java
Index: P4Sync.java
===================================================================
RCS file: /home/cvs/jakarta-ant/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/optional/perforce/P4Sync.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- P4Sync.java 23 Dec 2001 14:22:47 -0000 1.4
+++ P4Sync.java 6 Jan 2002 02:30:43 -0000 1.5
@@ -84,44 +84,47 @@
*/
public class P4Sync extends P4Base
{
- private String syncCmd = "";
+ private String m_syncCmd = "";
+ private String m_label;
- String label;
-
- public void setForce( String force )
+ public void setForce( final String force )
throws TaskException
{
- if( force == null && !label.equals( "" ) )
+ if( force == null && !m_label.equals( "" ) )
+ {
throw new TaskException( "P4Sync: If you want to force, set force to non-null string!" );
- P4CmdOpts = "-f";
+ }
+ m_p4CmdOpts = "-f";
}
public void setLabel( String label )
throws TaskException
{
if( label == null && !label.equals( "" ) )
+ {
throw new TaskException( "P4Sync: Labels cannot be Null or Empty" );
+ }
- this.label = label;
-
+ m_label = label;
}
public void execute()
throws TaskException
{
-
- if( P4View != null )
+ if( m_p4View != null )
{
- syncCmd = P4View;
+ m_syncCmd = m_p4View;
}
- if( label != null && !label.equals( "" ) )
+ if( m_label != null && !m_label.equals( "" ) )
{
- syncCmd = syncCmd + "@" + label;
+ m_syncCmd = m_syncCmd + "@" + m_label;
}
- getLogger().debug( "Execing sync " + P4CmdOpts + " " + syncCmd );
+ final String message = "Execing sync " + m_p4CmdOpts + " " + m_syncCmd;
+ getLogger().debug( message );
- execP4Command( "-s sync " + P4CmdOpts + " " + syncCmd, new SimpleP4OutputHandler( this ) );
+ final String command = "-s sync " + m_p4CmdOpts + " " + m_syncCmd;
+ execP4Command( command, null );
}
}
--
To unsubscribe, e-mail: <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>