antoine 2003/07/14 15:13:19
Modified: src/main/org/apache/tools/ant/taskdefs/optional/perforce
P4OutputStream.java P4HandlerAdapter.java
P4Revert.java P4Submit.java
FStatP4OutputHandler.java P4Add.java P4Base.java
P4Counter.java P4Label.java P4Handler.java
P4Integrate.java P4Labelsync.java
SimpleP4OutputHandler.java P4Delete.java
P4OutputHandler.java P4Sync.java P4Resolve.java
P4Change.java P4Reopen.java P4Fstat.java
P4Edit.java
Log:
checkstyle
remainders : mostly instance variables which should be private but are
protected or public
Revision Changes Path
1.2 +122 -118
ant/src/main/org/apache/tools/ant/taskdefs/optional/perforce/P4OutputStream.java
Index: P4OutputStream.java
===================================================================
RCS file:
/home/cvs/ant/src/main/org/apache/tools/ant/taskdefs/optional/perforce/P4OutputStream.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- P4OutputStream.java 6 Jun 2003 21:12:13 -0000 1.1
+++ P4OutputStream.java 14 Jul 2003 22:13:17 -0000 1.2
@@ -1,118 +1,122 @@
-/*
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2003 The Apache Software Foundation. All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- *
- * 3. The end-user documentation included with the redistribution, if
- * any, must include the following acknowlegement:
- * "This product includes software developed by the
- * Apache Software Foundation (http://www.apache.org/)."
- * Alternately, this acknowlegement may appear in the software itself,
- * if and wherever such third-party acknowlegements normally appear.
- *
- * 4. The names "Ant" and "Apache Software
- * Foundation" must not be used to endorse or promote products derived
- * from this software without prior written permission. For written
- * permission, please contact [EMAIL PROTECTED]
- *
- * 5. Products derived from this software may not be called "Apache"
- * nor may "Apache" appear in their names without prior written
- * permission of the Apache Group.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation. For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
-
-package org.apache.tools.ant.taskdefs.optional.perforce;
-
-import java.io.OutputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-
-/**
- * heavily inspired from LogOutputStream
- * this stream class calls back the P4Handler on each line of stdout or
stderr read
- * @author : <a href="mailto:[EMAIL PROTECTED]">Antoine Levy-Lambert</a>
- */
-public class P4OutputStream extends OutputStream {
- private P4Handler handler;
- private ByteArrayOutputStream buffer = new ByteArrayOutputStream();
- private boolean skip = false;
-
- /**
- * creates a new P4OutputStream for a P4Handler
- * @param handler
- */
- public P4OutputStream(P4Handler handler) {
- this.handler = handler;
- }
-
- /**
- * Write the data to the buffer and flush the buffer, if a line
- * separator is detected.
- *
- * @param cc data to log (byte).
- */
- public void write(int cc) throws IOException {
- final byte c = (byte) cc;
- if ((c == '\n') || (c == '\r')) {
- if (!skip) {
- processBuffer();
- }
- } else {
- buffer.write(cc);
- }
- skip = (c == '\r');
- }
-
-
- /**
- * Converts the buffer to a string and sends it to
<code>processLine</code>
- */
- protected void processBuffer() {
- handler.process(buffer.toString());
- buffer.reset();
- }
-
- /**
- * Writes all remaining
- */
- public void close() throws IOException {
- if (buffer.size() > 0) {
- processBuffer();
- }
- super.close();
- }
-
-}
-
-
+/*
+ * The Apache Software License, Version 1.1
+ *
+ * Copyright (c) 2003 The Apache Software Foundation. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * 3. The end-user documentation included with the redistribution, if
+ * any, must include the following acknowlegement:
+ * "This product includes software developed by the
+ * Apache Software Foundation (http://www.apache.org/)."
+ * Alternately, this acknowlegement may appear in the software itself,
+ * if and wherever such third-party acknowlegements normally appear.
+ *
+ * 4. The names "Ant" and "Apache Software
+ * Foundation" must not be used to endorse or promote products derived
+ * from this software without prior written permission. For written
+ * permission, please contact [EMAIL PROTECTED]
+ *
+ * 5. Products derived from this software may not be called "Apache"
+ * nor may "Apache" appear in their names without prior written
+ * permission of the Apache Group.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation. For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ */
+
+package org.apache.tools.ant.taskdefs.optional.perforce;
+
+import java.io.OutputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+
+/**
+ * heavily inspired from LogOutputStream
+ * this stream class calls back the P4Handler on each line of stdout or
stderr read
+ * @author : <a href="mailto:[EMAIL PROTECTED]">Antoine Levy-Lambert</a>
+ */
+public class P4OutputStream extends OutputStream {
+ private P4Handler handler;
+ private ByteArrayOutputStream buffer = new ByteArrayOutputStream();
+ private boolean skip = false;
+
+ /**
+ * creates a new P4OutputStream for a P4Handler
+ * @param handler the handler which will process the streams
+ */
+ public P4OutputStream(P4Handler handler) {
+ this.handler = handler;
+ }
+
+ /**
+ * Write the data to the buffer and flush the buffer, if a line
+ * separator is detected.
+ *
+ * @param cc data to log (byte).
+ * @throws IOException IOException if an I/O error occurs. In
particular,
+ * an <code>IOException</code> may be thrown if the
+ * output stream has been closed.
+ */
+ public void write(int cc) throws IOException {
+ final byte c = (byte) cc;
+ if ((c == '\n') || (c == '\r')) {
+ if (!skip) {
+ processBuffer();
+ }
+ } else {
+ buffer.write(cc);
+ }
+ skip = (c == '\r');
+ }
+
+
+ /**
+ * Converts the buffer to a string and sends it to
<code>processLine</code>
+ */
+ protected void processBuffer() {
+ handler.process(buffer.toString());
+ buffer.reset();
+ }
+
+ /**
+ * Writes all remaining
+ * @throws IOException if an I/O error occurs.
+ */
+ public void close() throws IOException {
+ if (buffer.size() > 0) {
+ processBuffer();
+ }
+ super.close();
+ }
+
+}
+
+
1.15 +37 -8
ant/src/main/org/apache/tools/ant/taskdefs/optional/perforce/P4HandlerAdapter.java
Index: P4HandlerAdapter.java
===================================================================
RCS file:
/home/cvs/ant/src/main/org/apache/tools/ant/taskdefs/optional/perforce/P4HandlerAdapter.java,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -r1.14 -r1.15
--- P4HandlerAdapter.java 23 Jun 2003 09:06:59 -0000 1.14
+++ P4HandlerAdapter.java 14 Jul 2003 22:13:17 -0000 1.15
@@ -62,8 +62,9 @@
import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.taskdefs.PumpStreamHandler;
/**
- * base class to manage streams around the execution of the Perforce
- * command line client
+ * base class to manage streams around the execution of the Perforce
+ * command line client
+ * @author <A HREF="mailto:[EMAIL PROTECTED]">Les Hughes</A>
*/
public abstract class P4HandlerAdapter implements P4Handler {
@@ -79,15 +80,21 @@
/**
* subclasses of P4HandlerAdapter must implement this routine
* processing of one line of stdout or of stderr
- * @param line
+ * @param line line of stdout or stderr to process
*/
public abstract void process(String line);
+ /**
+ * this routine gets called by the execute routine of the Execute class
+ * it connects the PumpStreamHandler to the input/output/error streams
of the process.
+ * @throws BuildException
+ * @see org.apache.tools.ant.taskdefs.Execute#execute
+ */
public void start() throws BuildException {
if (p4input != null && p4input.length() > 0) {
- myHandler = new PumpStreamHandler(new P4OutputStream(this),new
P4OutputStream(this), new ByteArrayInputStream(p4input.getBytes()));
- }
- else {
+ myHandler = new PumpStreamHandler(new P4OutputStream(this), new
P4OutputStream(this),
+ new ByteArrayInputStream(p4input.getBytes()));
+ } else {
myHandler = new PumpStreamHandler(new P4OutputStream(this), new
P4OutputStream(this));
}
myHandler.setProcessInputStream(os);
@@ -96,22 +103,44 @@
myHandler.start();
}
+ /**
+ * stops the processing of streams
+ * called from P4Base#execP4Command(String command, P4Handler handler)
+ * @see P4Base#execP4Command(String, P4Handler)
+ */
public void stop() {
myHandler.stop();
}
- OutputStream os; //OUtput
- InputStream is; //Input
+ OutputStream os; //Input
+ InputStream is; //Output
InputStream es; //Error
+ /**
+ * connects the handler to the input stream into Perforce
+ * used indirectly by tasks requiring to send specific standard input
+ * such as p4label, p4change
+ * @param os the stream bringing input to the p4 executable
+ * @throws IOException under unknown circumstances
+ */
public void setProcessInputStream(OutputStream os) throws IOException {
this.os = os;
}
+ /**
+ * connects the handler to the stderr of the Perforce process
+ * @param is stderr coming from Perforce
+ * @throws IOException under unknown circumstances
+ */
public void setProcessErrorStream(InputStream is) throws IOException {
this.es = is;
}
+ /**
+ * connects the handler to the stdout of the Perforce process
+ * @param is stdout coming from Perforce
+ * @throws IOException under unknown circumstances
+ */
public void setProcessOutputStream(InputStream is) throws IOException {
this.is = is;
}
1.12 +8 -0
ant/src/main/org/apache/tools/ant/taskdefs/optional/perforce/P4Revert.java
Index: P4Revert.java
===================================================================
RCS file:
/home/cvs/ant/src/main/org/apache/tools/ant/taskdefs/optional/perforce/P4Revert.java,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -r1.11 -r1.12
--- P4Revert.java 10 Feb 2003 14:14:19 -0000 1.11
+++ P4Revert.java 14 Jul 2003 22:13:17 -0000 1.12
@@ -75,6 +75,8 @@
/**
* The changelist to revert; optional.
+ * @param revertChange : the change list to revert
+ * @throws BuildException if the change list is null or empty string
*/
public void setChange(String revertChange) throws BuildException {
if (revertChange == null && !revertChange.equals("")) {
@@ -87,11 +89,17 @@
/**
* flag to revert only unchanged files (p4 revert -a); optional, default
false.
+ * @param onlyUnchanged if set to true revert only unchanged files
*/
public void setRevertOnlyUnchanged(boolean onlyUnchanged) {
this.onlyUnchanged = onlyUnchanged;
}
+ /**
+ * do the work
+ * @throws BuildException if an error occurs during the execution of the
Perforce command
+ * and failonError is set to true
+ */
public void execute() throws BuildException {
/* Here we can either revert any unchanged files in a changelist
1.15 +21 -5
ant/src/main/org/apache/tools/ant/taskdefs/optional/perforce/P4Submit.java
Index: P4Submit.java
===================================================================
RCS file:
/home/cvs/ant/src/main/org/apache/tools/ant/taskdefs/optional/perforce/P4Submit.java,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -r1.14 -r1.15
--- P4Submit.java 10 Feb 2003 14:14:19 -0000 1.14
+++ P4Submit.java 14 Jul 2003 22:13:18 -0000 1.15
@@ -79,15 +79,23 @@
public class P4Submit extends P4Base {
//ToDo: If dealing with default cl need to parse out <enter description
here>
+ /**
+ * change list number
+ */
public String change;
/**
+ * set the change list number to submit
* @param change The changelist number to submit; required.
*/
public void setChange(String change) {
this.change = change;
}
+ /**
+ * do the work
+ * @throws BuildException if no change list specified
+ */
public void execute() throws BuildException {
if (change != null) {
execP4Command("submit -c " + change, (P4HandlerAdapter) new
P4SubmitAdapter());
@@ -98,10 +106,17 @@
}
}
+ /**
+ * internal class used to process the output of p4 submit
+ */
public class P4SubmitAdapter extends P4HandlerAdapter {
+ /**
+ * process a line of stdout/stderr coming from Perforce
+ * @param line line of stdout or stderr coming from Perforce
+ */
public void process(String line) {
log(line, Project.MSG_VERBOSE);
- getProject().setProperty("p4.needsresolve","0");
+ getProject().setProperty("p4.needsresolve", "0");
// this type of output might happen
// Change 18 renamed change 20 and submitted.
if (util.match("/renamed/", line)) {
@@ -111,12 +126,13 @@
boolean found = false;
for (int counter = 0; counter < myarray.size();
counter++) {
if (found == true) {
- int changenumber = Integer.parseInt((String)
myarray.elementAt(counter + 1));
+ String chnum = (String)
myarray.elementAt(counter + 1);
+ int changenumber = Integer.parseInt(chnum);
log("Perforce change renamed " + changenumber,
Project.MSG_INFO);
getProject().setProperty("p4.change", "" +
changenumber);
found = false;
}
- if (((String)
(myarray.elementAt(counter))).equals("renamed")) {
+ if
(((myarray.elementAt(counter))).equals("renamed")) {
found = true;
}
}
@@ -128,8 +144,8 @@
throw new BuildException(msg, e, getLocation());
}
}
- if (util.match("/p4 submit -c/",line)) {
- getProject().setProperty("p4.needsresolve","1");
+ if (util.match("/p4 submit -c/", line)) {
+ getProject().setProperty("p4.needsresolve", "1");
}
}
1.3 +3 -3
ant/src/main/org/apache/tools/ant/taskdefs/optional/perforce/FStatP4OutputHandler.java
Index: FStatP4OutputHandler.java
===================================================================
RCS file:
/home/cvs/ant/src/main/org/apache/tools/ant/taskdefs/optional/perforce/FStatP4OutputHandler.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- FStatP4OutputHandler.java 10 Feb 2003 14:14:18 -0000 1.2
+++ FStatP4OutputHandler.java 14 Jul 2003 22:13:18 -0000 1.3
@@ -58,9 +58,9 @@
import java.util.ArrayList;
-/**
+/**
* FStatP4OutputHandler - spezialied Perforce output handler
- * able to sort files recognized as managed by Perforce and files not
+ * able to sort files recognized as managed by Perforce and files not
* managed by Perforce in the output
*
* @author <A HREF="mailto:[EMAIL PROTECTED]">Miha</A>
@@ -83,7 +83,7 @@
String f = util.group(1);
nonExisting.add(f);
}
- parent.log(parent.util.substitute("s/^.*: //", line),
+ parent.log(parent.util.substitute("s/^.*: //", line),
Project.MSG_VERBOSE);
}
1.15 +25 -5
ant/src/main/org/apache/tools/ant/taskdefs/optional/perforce/P4Add.java
Index: P4Add.java
===================================================================
RCS file:
/home/cvs/ant/src/main/org/apache/tools/ant/taskdefs/optional/perforce/P4Add.java,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -r1.14 -r1.15
--- P4Add.java 4 Apr 2003 13:51:12 -0000 1.14
+++ P4Add.java 14 Jul 2003 22:13:18 -0000 1.15
@@ -72,9 +72,16 @@
* <b>Example Usage:</b>
* <table border="1">
* <th>Function</th><th>Command</th>
- * <tr><td>Add files using P4USER, P4PORT and P4CLIENT settings
specified</td><td><P4add <br>P4view="//projects/foo/main/source/..."
<br>P4User="fbloggs" <br>P4Port="km01:1666"
<br>P4Client="fbloggsclient"><br><fileset basedir="dir"
includes="**/*.java"><br></p4add></td></tr>
- * <tr><td>Add files using P4USER, P4PORT and P4CLIENT settings defined in
environment</td><td><P4add P4view="//projects/foo/main/source/..."
/><br><fileset basedir="dir"
includes="**/*.java"><br></p4add></td></tr>
- * <tr><td>Specify the length of command line arguments to pass to each
invocation of p4</td><td><p4add Commandlength="450"></td></tr>
+ * <tr><td>Add files using P4USER, P4PORT and P4CLIENT settings
specified</td>
+ * <td><P4add <br>P4view="//projects/foo/main/source/..."
<br>P4User="fbloggs"
+ * <br>P4Port="km01:1666"
+ * <br>P4Client="fbloggsclient"><br><fileset basedir="dir"
includes="**/*.java"><br>
+ * </p4add></td></tr>
+ * <tr><td>Add files using P4USER, P4PORT and P4CLIENT settings defined in
environment</td><td>
+ * <P4add P4view="//projects/foo/main/source/..." /><br><fileset
basedir="dir"
+ * includes="**/*.java"><br></p4add></td></tr>
+ * <tr><td>Specify the length of command line arguments to pass to each
invocation of p4</td>
+ * <td><p4add Commandlength="450"></td></tr>
* </table>
*
* @author <A HREF="mailto:[EMAIL PROTECTED]">Les Hughes</A>
@@ -83,17 +90,19 @@
* @ant.task category="scm"
*/
public class P4Add extends P4Base {
-
+ private static final int DEFAULT_CMD_LENGTH = 450;
private int changelist;
private String addCmd = "";
private Vector filesets = new Vector();
- private int cmdLength = 450;
+ private int cmdLength = DEFAULT_CMD_LENGTH;
/**
* positive integer specifying the maximum length
* of the commandline when calling Perforce to add the files.
* Defaults to 450, higher values mean faster execution,
* but also possible failures.
+ * @param len maximum length of command line default is 450.
+ * @throws BuildException if trying to set the command line length to
0 or less.
*/
public void setCommandlength(int len) throws BuildException {
@@ -107,6 +116,10 @@
* If specified the open files are associated with the
* specified pending changelist number; otherwise the open files are
* associated with the default changelist.
+ *
+ * @param changelist the change list number
+ *
+ * @throws BuildException if trying to set a change list number <=0.
*/
public void setChangelist(int changelist) throws BuildException {
if (changelist <= 0) {
@@ -118,11 +131,18 @@
/**
* files to add
+ *
+ * @param set the FileSet that one wants to add to Perforce Source
Control
*/
public void addFileset(FileSet set) {
filesets.addElement(set);
}
+ /**
+ * run the task.
+ *
+ * @throws BuildException if the execution of the Perforce command fails.
+ */
public void execute() throws BuildException {
if (P4View != null) {
1.23 +52 -10
ant/src/main/org/apache/tools/ant/taskdefs/optional/perforce/P4Base.java
Index: P4Base.java
===================================================================
RCS file:
/home/cvs/ant/src/main/org/apache/tools/ant/taskdefs/optional/perforce/P4Base.java,v
retrieving revision 1.22
retrieving revision 1.23
diff -u -r1.22 -r1.23
--- P4Base.java 10 Feb 2003 14:14:18 -0000 1.22
+++ P4Base.java 14 Jul 2003 22:13:18 -0000 1.23
@@ -75,7 +75,7 @@
* @see P4Edit
* @see P4Submit
* @see P4Label
- * @see org.apache.tools.ant.taskdefs.Exec
+ * @see org.apache.tools.ant.taskdefs.Execute
* @author <A HREF="mailto:[EMAIL PROTECTED]">Les Hughes</A>
*/
public abstract class P4Base extends org.apache.tools.ant.Task {
@@ -112,6 +112,8 @@
/**
* The p4d server and port to connect to;
* optional, default "perforce:1666"
+ *
+ * @param P4Port the port one wants to set such as localhost:1666
*/
public void setPort(String P4Port) {
this.P4Port = "-p" + P4Port;
@@ -120,6 +122,8 @@
/**
* The p4 client spec to use;
* optional, defaults to the current user
+ *
+ * @param P4Client the name of the Perforce client spec
*/
public void setClient(String P4Client) {
this.P4Client = "-c" + P4Client;
@@ -128,22 +132,34 @@
/**
* The p4 username;
* optional, defaults to the current user
+ *
+ * @param P4User the user name
*/
public void setUser(String P4User) {
this.P4User = "-u" + P4User;
}
-
/**
* Set global P4 options; Used on all
* of the Perforce tasks.
- */
+ *
+ * @param P4Opts global options, to use a specific P4Config file for
instance
+ */
public void setGlobalopts(String P4Opts) {
this.P4Opts = P4Opts;
}
-
/**
* The client, branch or label view to operate upon;
- * optional default "//..."
+ * optional default "//...".
+ *
+ * the view is required for the following tasks :
+ * <ul>
+ * <li>p4delete</li>
+ * <li>p4edit</li>
+ * <li>p4reopen</li>
+ * <li>p4resolve</li>
+ * </ul>
+ *
+ * @param P4View the view one wants to use
*/
public void setView(String P4View) {
this.P4View = P4View;
@@ -152,6 +168,9 @@
/**
* Set extra command options; only used on some
* of the Perforce tasks.
+ *
+ * @param P4CmdOpts command line options going after the particular
+ * Perforce command
*/
public void setCmdopts(String P4CmdOpts) {
this.P4CmdOpts = P4CmdOpts;
@@ -160,11 +179,24 @@
/**
* whether to stop the build (true, default)
* or keep going if an error is returned from the p4 command
+ * @param fail indicates whether one wants to fail the build if an error
comes from the
+ * Perforce command
*/
public void setFailonerror(boolean fail) {
failOnError = fail;
}
-
+ /**
+ * sets attributes Port, Client, User from properties
+ * if these properties are defined.
+ * Called automatically by UnknownElement
+ * @see org.apache.tools.ant.UnknownElement
+ * <table>
+ * <tr><th>Property</th><th>Attribute</th></tr>
+ * <tr><td>p4.port</td><td>Port</td></tr>
+ * <tr><td>p4.client</td><td>Client</td></tr>
+ * <tr><td>p4.user</td><td>User</td></tr>
+ * </table>
+ */
public void init() {
util = new Perl5Util();
@@ -182,14 +214,23 @@
setUser(tmpprop);
}
}
-
+ /**
+ * no usages found for this method
+ * runs a Perforce command without a handler
+ * @param command the command that one wants to execute
+ * @throws BuildException if failonerror is set and the command fails
+ */
protected void execP4Command(String command) throws BuildException {
execP4Command(command, null);
}
- /** Execute P4 command assembled by subclasses.
- @param command The command to run
- @param handler A P4Handler to process any input and output
+ /**
+ * Execute P4 command assembled by subclasses.
+ *
+ * @param command The command to run
+ * @param handler A P4Handler to process any input and output
+ *
+ * @throws BuildException if failonerror has been set to true
*/
protected void execP4Command(String command, P4Handler handler) throws
BuildException {
try {
@@ -232,6 +273,7 @@
try {
handler.stop();
} catch (Exception e) {
+ log(e.toString(), Project.MSG_ERR);
}
}
1.12 +24 -2
ant/src/main/org/apache/tools/ant/taskdefs/optional/perforce/P4Counter.java
Index: P4Counter.java
===================================================================
RCS file:
/home/cvs/ant/src/main/org/apache/tools/ant/taskdefs/optional/perforce/P4Counter.java,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -r1.11 -r1.12
--- P4Counter.java 10 Feb 2003 14:14:18 -0000 1.11
+++ P4Counter.java 14 Jul 2003 22:13:18 -0000 1.12
@@ -86,14 +86,30 @@
*/
public class P4Counter extends P4Base {
+ /**
+ * name of the counter
+ */
public String counter = null;
+ /**
+ * name of an optional property
+ */
public String property = null;
+ /**
+ * flag telling whether the value of the counter should be set
+ */
public boolean shouldSetValue = false;
+ /**
+ * flag telling whether a property should be set
+ */
public boolean shouldSetProperty = false;
+ /**
+ * new value for the counter
+ */
public int value = 0;
/**
* The name of the counter; required
+ * @param counter name of the counter
*/
public void setName(String counter) {
this.counter = counter;
@@ -101,6 +117,7 @@
/**
* The new value for the counter; optional.
+ * @param value new value for the counter
*/
public void setValue(int value) {
this.value = value;
@@ -109,6 +126,8 @@
/**
* A property to be set with the value of the counter
+ * @param property the name of a property to set with the value
+ * of the counter
*/
public void setProperty(String property) {
this.property = property;
@@ -117,6 +136,7 @@
/**
* again, properties are mutable in this tsk
+ * @throws BuildException if the required parameters are not supplied.
*/
public void execute() throws BuildException {
@@ -125,7 +145,8 @@
}
if (shouldSetValue && shouldSetProperty) {
- throw new BuildException("Cannot both set the value of the
property and retrieve the value of the property.");
+ throw new BuildException("Cannot both set the value of the
property and retrieve the "
+ + "value of the property.");
}
String command = "counter " + P4CmdOpts + " " + counter;
@@ -150,7 +171,8 @@
value = Integer.parseInt(line);
myProj.setProperty(property, "" + value);
} catch (NumberFormatException nfe) {
- throw new BuildException("Perforce error. Could not
retrieve counter value.");
+ throw new BuildException("Perforce error. "
+ + "Could not retrieve counter value.");
}
}
};
1.17 +9 -5
ant/src/main/org/apache/tools/ant/taskdefs/optional/perforce/P4Label.java
Index: P4Label.java
===================================================================
RCS file:
/home/cvs/ant/src/main/org/apache/tools/ant/taskdefs/optional/perforce/P4Label.java,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -r1.16 -r1.17
--- P4Label.java 10 Feb 2003 14:14:19 -0000 1.16
+++ P4Label.java 14 Jul 2003 22:13:18 -0000 1.17
@@ -88,6 +88,7 @@
/**
* The name of the label; optional, default "AntLabel"
+ * @param name the name of the label
*/
public void setName(String name) {
this.name = name;
@@ -95,6 +96,7 @@
/**
*Label Description; optional
+ * @param desc description of the label
*/
public void setDesc(String desc) {
this.desc = desc;
@@ -102,13 +104,15 @@
/**
* when set to "locked", Perforce will lock the label once created;
optional.
+ * @param lock only admissible value "locked"
*/
public void setLock(String lock) {
this.lock = lock;
}
/**
- * do the work
+ * do the work
+ * @throws BuildException if failonerror has been set to true and
Perforce fails
*/
public void execute() throws BuildException {
log("P4Label exec:", Project.MSG_INFO);
@@ -142,10 +146,10 @@
//We have to create a unlocked label first
String newLabel =
- "Label: " + name +
- "\nDescription: " + desc +
- "\nOptions: unlocked" +
- "\nView: \n\t" + P4View;
+ "Label: " + name
+ + "\nDescription: " + desc
+ + "\nOptions: unlocked"
+ + "\nView: \n\t" + P4View;
P4Handler handler = new P4HandlerAdapter() {
public void process(String line) {
1.7 +12 -10
ant/src/main/org/apache/tools/ant/taskdefs/optional/perforce/P4Handler.java
Index: P4Handler.java
===================================================================
RCS file:
/home/cvs/ant/src/main/org/apache/tools/ant/taskdefs/optional/perforce/P4Handler.java,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- P4Handler.java 23 Jun 2003 09:07:30 -0000 1.6
+++ P4Handler.java 14 Jul 2003 22:13:18 -0000 1.7
@@ -64,15 +64,17 @@
*/
public interface P4Handler extends ExecuteStreamHandler {
- /**
- * processing of one line of stdout or of stderr
- * @param line
- */
- public void process(String line) throws BuildException;
+ /**
+ * processing of one line of stdout or of stderr
+ * @param line a line of stdout or stderr that the implementation will
process
+ * @throws BuildException at the discretion of the implementation.
+ */
+ void process(String line) throws BuildException;
- /**
- * set any data to be written to P4's stdin
- * @param line the text to write to P4's stdin
- */
- public void setOutput(String line) throws BuildException;
+ /**
+ * set any data to be written to P4's stdin
+ * @param line the text to write to P4's stdin
+ * @throws BuildException if the line cannot be processed.
+ */
+ void setOutput(String line) throws BuildException;
}
1.6 +23 -22
ant/src/main/org/apache/tools/ant/taskdefs/optional/perforce/P4Integrate.java
Index: P4Integrate.java
===================================================================
RCS file:
/home/cvs/ant/src/main/org/apache/tools/ant/taskdefs/optional/perforce/P4Integrate.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- P4Integrate.java 21 Apr 2003 14:21:16 -0000 1.5
+++ P4Integrate.java 14 Jul 2003 22:13:18 -0000 1.6
@@ -67,7 +67,8 @@
* although P4Integrate can open files to the default change,
* P4Submit cannot yet submit to it.
* Example Usage:<br>
- * <p4integrate change="${p4.change}"
fromfile="//depot/project/dev/foo.txt" tofile="//depot/project/main/foo.txt"
/>
+ * <p4integrate change="${p4.change}"
+ * fromfile="//depot/project/dev/foo.txt"
tofile="//depot/project/main/foo.txt" />
*
* @author <A HREF="mailto:[EMAIL PROTECTED]">Antoine Levy-Lambert</A>
*
@@ -279,15 +280,18 @@
/**
* sets flag indicating if one wants to propagate the source file type
*
- * @param propagatesourcefiletype set it to true if you want to change
the type of existing target files according to type of source file.
+ * @param propagatesourcefiletype
+ * set it to true if you want to change the type of existing target
files
+ * according to type of source file.
*/
public void setPropagatesourcefiletype(boolean propagatesourcefiletype) {
this.propagatesourcefiletype = propagatesourcefiletype;
}
/**
- * returns flag indicating if one wants to suppress the copying on the
local hard disk of new target files
+ * indicates intention to suppress the copying on the local hard disk
of new target files.
*
- * @return flag indicating if one wants to suppress the copying on the
local hard disk of new target files
+ * @return indicates intention to suppress the copying
+ * on the local hard disk of new target files.
*/
public boolean isNocopynewtargetfiles() {
return nocopynewtargetfiles;
@@ -296,7 +300,8 @@
/**
* sets nocopynewtargetfiles flag
*
- * @param nocopynewtargetfiles set it to true to gain speed in
integration by not copying on the local Perforce client new target files
+ * @param nocopynewtargetfiles set it to true to gain speed in
integration by not copying on
+ * the local Perforce client new target files
*/
public void setNocopynewtargetfiles(boolean nocopynewtargetfiles) {
this.nocopynewtargetfiles = nocopynewtargetfiles;
@@ -304,6 +309,7 @@
/**
* execute the p4 integrate
+ * @throws BuildException if there are missing parameters
*/
public void execute() throws BuildException {
if (change != null) {
@@ -315,39 +321,34 @@
if (this.restoredeletedrevisions) {
P4CmdOpts = P4CmdOpts + " -d";
}
- if ( this.leavetargetrevision) {
+ if (this.leavetargetrevision) {
P4CmdOpts = P4CmdOpts + " -h";
}
- if ( this.enablebaselessmerges ) {
+ if (this.enablebaselessmerges) {
P4CmdOpts = P4CmdOpts + " -i";
}
- if (this.simulationmode ) {
+ if (this.simulationmode) {
P4CmdOpts = P4CmdOpts + " -n";
}
- if ( this.reversebranchmappings ) {
+ if (this.reversebranchmappings) {
P4CmdOpts = P4CmdOpts + " -r";
}
- if ( this.propagatesourcefiletype ) {
+ if (this.propagatesourcefiletype) {
P4CmdOpts = P4CmdOpts + " -t";
}
- if ( this.nocopynewtargetfiles ) {
+ if (this.nocopynewtargetfiles) {
P4CmdOpts = P4CmdOpts + "-v";
}
String command;
if (branch == null && fromfile != null && tofile != null) {
command = P4CmdOpts + " " + fromfile + " " + tofile;
-
- }
- else if ( branch != null && fromfile == null && tofile != null )
- {
+ } else if (branch != null && fromfile == null && tofile != null) {
command = P4CmdOpts + " -b " + branch + " " + tofile;
- }
- else if ( branch != null && fromfile != null )
- {
- command = P4CmdOpts + " -b " + branch + " -s "+ fromfile + " " +
tofile;
- }
- else {
- throw new BuildException("you need to specify fromfile and
tofile, or branch and tofile, or branch and fromfile, or branch and fromfile
and tofile ");
+ } else if (branch != null && fromfile != null) {
+ command = P4CmdOpts + " -b " + branch + " -s " + fromfile + " "
+ tofile;
+ } else {
+ throw new BuildException("you need to specify fromfile and
tofile, "
+ + "or branch and tofile, or branch and fromfile, or branch and
fromfile and tofile ");
}
execP4Command("-s integrate " + command, new
SimpleP4OutputHandler(this));
}
1.4 +21 -12
ant/src/main/org/apache/tools/ant/taskdefs/optional/perforce/P4Labelsync.java
Index: P4Labelsync.java
===================================================================
RCS file:
/home/cvs/ant/src/main/org/apache/tools/ant/taskdefs/optional/perforce/P4Labelsync.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- P4Labelsync.java 4 Jul 2003 14:04:55 -0000 1.3
+++ P4Labelsync.java 14 Jul 2003 22:13:18 -0000 1.4
@@ -70,7 +70,8 @@
*
* Example Usage:
* <pre>
- * <p4labelsync name="MyLabel-${TSTAMP}-${DSTAMP}"
view="//depot/...#head;//depot2/file1#25" />
+ * <p4labelsync name="MyLabel-${TSTAMP}-${DSTAMP}"
+ * view="//depot/...#head;//depot2/file1#25" />
* </pre>
*
* @author <A HREF="mailto:[EMAIL PROTECTED]">Antoine Levy-Lambert</A>
@@ -84,7 +85,8 @@
private boolean delete; /* -n */
private boolean simulationmode; /* -n */
/**
- * -a flag of p4 labelsync - preserve files which exist in the label,
but not in the current view
+ * -a flag of p4 labelsync - preserve files which exist in the label,
+ * but not in the current view
* @return add attribute
* if set to true the task will not remove any files from the label
* only add files which were not there previously or update these where
the revision has changed
@@ -94,7 +96,8 @@
return add;
}
/**
- * -a flag of p4 labelsync - preserve files which exist in the label,
but not in the current view
+ * -a flag of p4 labelsync - preserve files which exist in the label,
+ * but not in the current view
* @param add if set to true the task will not remove any files from
the label
* only add files which were not there previously or update these where
the revision has changed
* the add attribute is the -a flag of p4 labelsync
@@ -103,7 +106,8 @@
this.add = add;
}
/**
- * -d flag of p4 labelsync; indicates an intention of deleting from the
label the files specified in the view
+ * -d flag of p4 labelsync; indicates an intention of deleting from the
label
+ * the files specified in the view
* @return delete attribute
*/
public boolean isDelete() {
@@ -111,8 +115,10 @@
}
/**
- * -d flag of p4 labelsync; indicates an intention of deleting from the
label the files specified in the view
- * @param delete
+ * -d flag of p4 labelsync; indicates an intention of deleting from the
label
+ * the files specified in the view
+ * @param delete indicates intention of deleting from the label
+ * the files specified in the view
*/
public void setDelete(boolean delete) {
this.delete = delete;
@@ -121,6 +127,7 @@
/**
* The name of the label; optional, default "AntLabel"
+ * @param name of the label
*/
public void setName(String name) {
this.name = name;
@@ -134,7 +141,7 @@
}
/**
* -n flag of p4 labelsync - display changes without actually doing them
- * @param simulationmode
+ * @param simulationmode display changes without actually doing them
*/
public void setSimulationmode(boolean simulationmode) {
this.simulationmode = simulationmode;
@@ -143,6 +150,7 @@
/**
* do the work
+ * @throws BuildException if the label name is not supplied
*/
public void execute() throws BuildException {
log("P4Labelsync exec:", Project.MSG_INFO);
@@ -152,24 +160,25 @@
P4View = StringUtils.replace(P4View, ";", "\n\t");
}
if (P4View == null) {
- P4View="";
+ P4View = "";
}
if (name == null || name.length() < 1) {
throw new BuildException("name attribute is compulsory for
labelsync");
}
- if ( this.isSimulationmode() ) {
+ if (this.isSimulationmode()) {
P4CmdOpts = P4CmdOpts + " -n";
}
- if ( this.isDelete() ) {
+ if (this.isDelete()) {
P4CmdOpts = P4CmdOpts + " -d";
}
- if ( this.isAdd() ) {
+ if (this.isAdd()) {
P4CmdOpts = P4CmdOpts + " -a";
}
- execP4Command("-s labelsync -l "+name +" "+ P4CmdOpts + " " +
P4View, new SimpleP4OutputHandler(this));
+ execP4Command("-s labelsync -l " + name + " " + P4CmdOpts + " " +
P4View,
+ new SimpleP4OutputHandler(this));
}
1.14 +16 -1
ant/src/main/org/apache/tools/ant/taskdefs/optional/perforce/SimpleP4OutputHandler.java
Index: SimpleP4OutputHandler.java
===================================================================
RCS file:
/home/cvs/ant/src/main/org/apache/tools/ant/taskdefs/optional/perforce/SimpleP4OutputHandler.java,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -r1.13 -r1.14
--- SimpleP4OutputHandler.java 24 May 2003 15:28:38 -0000 1.13
+++ SimpleP4OutputHandler.java 14 Jul 2003 22:13:18 -0000 1.14
@@ -62,14 +62,28 @@
import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.Project;
+/**
+ * simple implementation of P4HandlerAdapter used by tasks which are not
+ * actually processing the output from Perforce
+ * @author <A HREF="mailto:[EMAIL PROTECTED]">Les Hughes</A>
+ */
public class SimpleP4OutputHandler extends P4HandlerAdapter {
P4Base parent;
+ /**
+ * simple constructor
+ * @param parent a P4Base instance
+ */
public SimpleP4OutputHandler(P4Base parent) {
this.parent = parent;
}
+ /**
+ * process one line of stderr/stdout
+ * @param line line of output
+ * @throws BuildException if errror output is received
+ */
public void process(String line) throws BuildException {
if (parent.util.match("/^exit/", line)) {
return;
@@ -88,7 +102,8 @@
//looking like this one :
//error: //depot/file2 - label in sync.
- if (parent.util.match("/error:/", line) &&
!parent.util.match("/up-to-date/", line) && !parent.util.match("/label in
sync/", line)) {
+ if (parent.util.match("/error:/", line) &&
!parent.util.match("/up-to-date/", line)
+ && !parent.util.match("/label in sync/", line)) {
throw new BuildException(line);
}
1.10 +10 -1
ant/src/main/org/apache/tools/ant/taskdefs/optional/perforce/P4Delete.java
Index: P4Delete.java
===================================================================
RCS file:
/home/cvs/ant/src/main/org/apache/tools/ant/taskdefs/optional/perforce/P4Delete.java,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- P4Delete.java 10 Feb 2003 14:14:18 -0000 1.9
+++ P4Delete.java 14 Jul 2003 22:13:18 -0000 1.10
@@ -65,22 +65,31 @@
* @todo What to do if file is already open in one of our changelists perhaps
* (See also [EMAIL PROTECTED] P4Edit P4Edit})?<br>
*
- * @author <A HREF="mailto:[EMAIL PROTECTED]">Mike Roberts</A>, <A
HREF="mailto:[EMAIL PROTECTED]">Les Hughes</A>
+ * @author <A HREF="mailto:[EMAIL PROTECTED]">Mike Roberts</A>
+ * @author <A HREF="mailto:[EMAIL PROTECTED]">Les Hughes</A>
*
* @ant.task category="scm"
*/
public class P4Delete extends P4Base {
+ /**
+ * number of the change list to work on
+ */
public String change = null;
/**
* An existing changelist number for the deletion; optional
* but strongly recommended.
+ * @param change the number of a change list
*/
public void setChange(String change) {
this.change = change;
}
+ /**
+ * executes the p4 delete task
+ * @throws BuildException if there is no view specified
+ */
public void execute() throws BuildException {
if (change != null) {
P4CmdOpts = "-c " + change;
1.3 +7 -3
ant/src/main/org/apache/tools/ant/taskdefs/optional/perforce/P4OutputHandler.java
Index: P4OutputHandler.java
===================================================================
RCS file:
/home/cvs/ant/src/main/org/apache/tools/ant/taskdefs/optional/perforce/P4OutputHandler.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- P4OutputHandler.java 10 Feb 2003 14:14:19 -0000 1.2
+++ P4OutputHandler.java 14 Jul 2003 22:13:18 -0000 1.3
@@ -1,7 +1,7 @@
/*
* The Apache Software License, Version 1.1
*
- * Copyright (c) 2000 The Apache Software Foundation. All rights
+ * Copyright (c) 2000-2003 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -62,6 +62,10 @@
* @author <A HREF="mailto:[EMAIL PROTECTED]">Les Hughes</A>
*/
public interface P4OutputHandler {
-
- public void process(String line) throws BuildException;
+ /**
+ * implementations will be able to process lines of output from Perforce
+ * @param line a line of stdout or stderr coming from Perforce
+ * @throws BuildException implementations are allowed to throw
BuildException
+ */
+ void process(String line) throws BuildException;
}
1.13 +16 -3
ant/src/main/org/apache/tools/ant/taskdefs/optional/perforce/P4Sync.java
Index: P4Sync.java
===================================================================
RCS file:
/home/cvs/ant/src/main/org/apache/tools/ant/taskdefs/optional/perforce/P4Sync.java,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -r1.12 -r1.13
--- P4Sync.java 10 Feb 2003 14:14:19 -0000 1.12
+++ P4Sync.java 14 Jul 2003 22:13:18 -0000 1.13
@@ -70,9 +70,13 @@
* <b>Example Usage:</b>
* <table border="1">
* <th>Function</th><th>Command</th>
- * <tr><td>Sync to head using P4USER, P4PORT and P4CLIENT settings
specified</td><td><P4Sync <br>P4view="//projects/foo/main/source/..."
<br>P4User="fbloggs" <br>P4Port="km01:1666" <br>P4Client="fbloggsclient"
/></td></tr>
- * <tr><td>Sync to head using P4USER, P4PORT and P4CLIENT settings defined
in environment</td><td><P4Sync P4view="//projects/foo/main/source/..."
/></td></tr>
- * <tr><td>Force a re-sync to head, refreshing all files</td><td><P4Sync
force="yes" P4view="//projects/foo/main/source/..." /></td></tr>
+ * <tr><td>Sync to head using P4USER, P4PORT and P4CLIENT settings
specified</td>
+ * <td><P4Sync <br>P4view="//projects/foo/main/source/..." <br>
+ * P4User="fbloggs" <br>P4Port="km01:1666" <br>P4Client="fbloggsclient"
/></td></tr>
+ * <tr><td>Sync to head using P4USER, P4PORT and P4CLIENT settings defined
in environment</td>
+ * <td><P4Sync P4view="//projects/foo/main/source/..." /></td></tr>
+ * <tr><td>Force a re-sync to head, refreshing all files</td>
+ * <td><P4Sync force="yes" P4view="//projects/foo/main/source/..."
/></td></tr>
* <tr><td>Sync to a label</td><td><P4Sync label="myPerforceLabel"
/></td></tr>
* </table>
*
@@ -89,6 +93,8 @@
/**
* Label to sync client to; optional.
+ * @param label name of a label against which one want to sync
+ * @throws BuildException if label is null or empty string
*/
public void setLabel(String label) throws BuildException {
if (label == null && !label.equals("")) {
@@ -102,6 +108,8 @@
/**
* force a refresh of files, if this attribute is set; false by default.
+ * @param force sync all files, whether they are supposed to be already
uptodate or not.
+ * @throws BuildException if a label is set and force is null
*/
public void setForce(String force) throws BuildException {
if (force == null && !label.equals("")) {
@@ -110,6 +118,11 @@
P4CmdOpts = "-f";
}
+ /**
+ * do the work
+ * @throws BuildException if an error occurs during the execution of the
Perforce command
+ * and failOnError is set to true
+ */
public void execute() throws BuildException {
1.6 +60 -24
ant/src/main/org/apache/tools/ant/taskdefs/optional/perforce/P4Resolve.java
Index: P4Resolve.java
===================================================================
RCS file:
/home/cvs/ant/src/main/org/apache/tools/ant/taskdefs/optional/perforce/P4Resolve.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- P4Resolve.java 4 Jul 2003 14:04:55 -0000 1.5
+++ P4Resolve.java 14 Jul 2003 22:13:18 -0000 1.6
@@ -63,6 +63,7 @@
/**
* @ant.task category="scm"
+ * @author <a href="mailto:[EMAIL PROTECTED]">Antoine Levy-Lambert</a>
*/
public class P4Resolve extends P4Base {
private String resolvemode = null;
@@ -77,14 +78,17 @@
private static final String SAFE = "safe";
private static final String THEIRS = "theirs";
private static final String YOURS = "yours";
- private static final String[] resolvemodes = {
+ private static final String[] RESOLVE_MODES = {
AUTOMATIC,
FORCE,
SAFE,
THEIRS,
YOURS
};
-
+ /**
+ * returns the resolve mode
+ * @return returns the resolve mode
+ */
public String getResolvemode() {
return resolvemode;
}
@@ -97,90 +101,122 @@
* <li> theirs -at </li>
* <li> yours -ay </li>
* </ul>
+ * @param resolvemode one of automatic, force, safe, theirs, yours
*/
public void setResolvemode(String resolvemode) {
- boolean found=false;
- for (int counter=0; counter < resolvemodes.length; counter++)
- {
- if (resolvemode.equals(resolvemodes[counter])) {
- found=true;
+ boolean found = false;
+ for (int counter = 0; counter < RESOLVE_MODES.length; counter++) {
+ if (resolvemode.equals(RESOLVE_MODES[counter])) {
+ found = true;
break;
}
}
- if (found==false) {
+ if (found == false) {
throw new BuildException("Unacceptable value for resolve mode");
}
this.resolvemode = resolvemode;
}
+ /**
+ * allows previously resolved files to be resolved again
+ * @return flag indicating whether one wants to
+ * allow previously resolved files to be resolved again
+ */
public boolean isRedoall() {
return redoall;
}
+ /**
+ * set the redoall flag
+ * @param redoall flag indicating whether one want to
+ * allow previously resolved files to be resolved again
+ */
public void setRedoall(boolean redoall) {
this.redoall = redoall;
}
+ /**
+ * read the simulation mode flag
+ * @return flag indicating whether one wants just to simulate
+ * the p4 resolve operation whithout actually doing it
+ */
public boolean isSimulationmode() {
return simulationmode;
}
+ /**
+ * sets a flag
+ * @param simulationmode set to true, lists the integrations which would
be performed,
+ * without actually doing them.
+ */
public void setSimulationmode(boolean simulationmode) {
this.simulationmode = simulationmode;
}
+ /**
+ * If set to true, attempts a textual merge, even for binary files
+ * @return flag value
+ */
public boolean isForcetextmode() {
return forcetextmode;
}
+ /**
+ * If set to true, attempts a textual merge, even for binary files
+ * @param forcetextmode set the flag value
+ */
public void setForcetextmode(boolean forcetextmode) {
this.forcetextmode = forcetextmode;
}
+ /**
+ * If set to true, puts in markers for all changes, conflicting or not
+ * @return flag markersforall value
+ */
public boolean isMarkersforall() {
return markersforall;
}
+ /**
+ * If set to true, puts in markers for all changes, conflicting or not
+ * @param markersforall flag true or false
+ */
public void setMarkersforall(boolean markersforall) {
this.markersforall = markersforall;
}
/**
* execute the p4 resolve
+ * @throws BuildException if there is a wrong resolve mode specified
+ * or no view specified
*/
public void execute() throws BuildException {
if (this.resolvemode.equals(AUTOMATIC)) {
P4CmdOpts = P4CmdOpts + " -am";
- }
- else if (this.resolvemode.equals(FORCE)) {
+ } else if (this.resolvemode.equals(FORCE)) {
P4CmdOpts = P4CmdOpts + " -af";
- }
- else if (this.resolvemode.equals(SAFE)) {
+ } else if (this.resolvemode.equals(SAFE)) {
P4CmdOpts = P4CmdOpts + " -as";
- }
- else if (this.resolvemode.equals(THEIRS)) {
+ } else if (this.resolvemode.equals(THEIRS)) {
P4CmdOpts = P4CmdOpts + " -at";
- }
- else if (this.resolvemode.equals(YOURS)) {
+ } else if (this.resolvemode.equals(YOURS)) {
P4CmdOpts = P4CmdOpts + " -ay";
- }
- else
- {
+ } else {
throw new BuildException("unsupported or absent resolve mode");
}
- if (P4View==null) {
+ if (P4View == null) {
throw new BuildException("please specify a view");
}
- if ( this.isRedoall() ) {
+ if (this.isRedoall()) {
P4CmdOpts = P4CmdOpts + " -f";
}
- if ( this.isSimulationmode() ) {
+ if (this.isSimulationmode()) {
P4CmdOpts = P4CmdOpts + " -n";
}
- if ( this.isForcetextmode() ) {
+ if (this.isForcetextmode()) {
P4CmdOpts = P4CmdOpts + " -t";
}
- if ( this.isMarkersforall() ) {
+ if (this.isMarkersforall()) {
P4CmdOpts = P4CmdOpts + " -v";
}
execP4Command("-s resolve " + P4CmdOpts + " " + P4View, new
SimpleP4OutputHandler(this));
1.17 +16 -12
ant/src/main/org/apache/tools/ant/taskdefs/optional/perforce/P4Change.java
Index: P4Change.java
===================================================================
RCS file:
/home/cvs/ant/src/main/org/apache/tools/ant/taskdefs/optional/perforce/P4Change.java,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -r1.16 -r1.17
--- P4Change.java 10 Feb 2003 14:14:18 -0000 1.16
+++ P4Change.java 14 Jul 2003 22:13:18 -0000 1.17
@@ -81,7 +81,9 @@
protected String description = "AutoSubmit By Ant";
/**
- * throw all immutability rules to the wind
+ * creates a new Perforce change list
+ * sets the p4.change property to the number of the new change list
+ * @throws BuildException if the word error appears in the output coming
from Perforce
*/
public void execute() throws BuildException {
@@ -113,7 +115,12 @@
execP4Command("change -i", handler);
}
-
+ /**
+ * returns the text of an empty change list
+ * @return the text of an empty change list
+ * @throws BuildException if the text error is displayed
+ * in the Perforce output outside of a comment line
+ */
public String getEmptyChangeList() throws BuildException {
final StringBuffer stringbuf = new StringBuffer();
@@ -121,28 +128,23 @@
public void process(String line) {
if (!util.match("/^#/", line)) {
if (util.match("/error/", line)) {
-
log("Client Error", Project.MSG_VERBOSE);
- throw new BuildException("Perforce Error, check
client settings and/or server");
-
+ throw new BuildException("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);
-
+ 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 stringbuf.toString();
}
@@ -152,7 +154,8 @@
* always backslashes in a string unless they escape the delimiter.
* @param value the string to backslash for slashes
* @return the backslashed string
- * @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>
+ * @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>
*/
public static final String backslash(String value) {
final StringBuffer buf = new StringBuffer(value.length());
@@ -170,6 +173,7 @@
/**
* Description for ChangeList;optional.
* If none is specified, it will default to "AutoSubmit By Ant"
+ * @param desc description for the change list
*/
public void setDescription(String desc) {
this.description = desc;
1.12 +6 -0
ant/src/main/org/apache/tools/ant/taskdefs/optional/perforce/P4Reopen.java
Index: P4Reopen.java
===================================================================
RCS file:
/home/cvs/ant/src/main/org/apache/tools/ant/taskdefs/optional/perforce/P4Reopen.java,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -r1.11 -r1.12
--- P4Reopen.java 10 Feb 2003 14:14:19 -0000 1.11
+++ P4Reopen.java 14 Jul 2003 22:13:18 -0000 1.12
@@ -74,6 +74,8 @@
/**
* The changelist to move files to; required.
+ * @param toChange new change list number
+ * @throws BuildException if the change parameter is null or empty
*/
public void setToChange(String toChange) throws BuildException {
if (toChange == null && !toChange.equals("")) {
@@ -83,6 +85,10 @@
this.toChange = toChange;
}
+ /**
+ * do the work
+ * @throws BuildException if P4View is null
+ */
public void execute() throws BuildException {
if (P4View == null) {
throw new BuildException("No view specified to reopen");
1.6 +32 -6
ant/src/main/org/apache/tools/ant/taskdefs/optional/perforce/P4Fstat.java
Index: P4Fstat.java
===================================================================
RCS file:
/home/cvs/ant/src/main/org/apache/tools/ant/taskdefs/optional/perforce/P4Fstat.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- P4Fstat.java 4 Apr 2003 13:51:12 -0000 1.5
+++ P4Fstat.java 14 Jul 2003 22:13:18 -0000 1.6
@@ -74,7 +74,8 @@
*
* <br><b>Example Usage:</b><br>
* <pre>
- * <project name="p4fstat" default="p4fstat"
basedir="C:\dev\gnu">
+ * <project name="p4fstat" default="p4fstat"
+ * basedir="C:\dev\gnu">
* <target name="p4fstat" >
* <p4fstat showfilter="all">
* <fileset dir="depot"
includes="**\/*"/>
@@ -94,7 +95,8 @@
private int changelist;
private String addCmd = "";
private Vector filesets = new Vector();
- private int cmdLength = 300;
+ private static final int DEFAULT_CMD_LENGTH = 300;
+ private int cmdLength = DEFAULT_CMD_LENGTH;
private static final int SHOW_ALL = 0;
private static final int SHOW_EXISTING = 1;
private static final int SHOW_NON_EXISTING = 2;
@@ -110,7 +112,16 @@
private static final String NONEXISTING_HEADER
= "Following files do not exist in perforce";
-
+ /**
+ * sets the filter that one wants applied
+ * <table>
+ * <tr><th>Option</th><th>Meaning</th></tr>
+ * <tr><td>all</td><td>all files under Perforce control or not</td></tr>
+ * <tr><td>existing</td><td>only files under Perforce control</td></tr>
+ * <tr><td>non-existing</td><td>only files not under Perforce control or
not</td></tr>
+ * </table>
+ * @param filter should be one of all|existing|non-existing
+ */
public void setShowFilter(String filter) {
if (filter.equalsIgnoreCase("all")) {
show = SHOW_ALL;
@@ -124,7 +135,11 @@
}
}
-
+ /**
+ * sets optionally a change list number
+ * @param changelist change list that one wants information about
+ * @throws BuildException if the change list number is negative
+ */
public void setChangelist(int changelist) throws BuildException {
if (changelist <= 0) {
throw new BuildException("P4FStat: Changelist# should be a "
@@ -134,10 +149,18 @@
this.changelist = changelist;
}
+ /**
+ * adds a fileset to be examined by p4fstat
+ * @param set the fileset to add
+ */
public void addFileset(FileSet set) {
filesets.addElement(set);
}
+ /**
+ * executes the p4fstat task
+ * @throws BuildException if no files are specified
+ */
public void execute() throws BuildException {
handler = new FStatP4OutputHandler(this);
@@ -172,7 +195,7 @@
execP4Fstat(filelist);
}
} else {
- log("No files specified to add!", Project.MSG_WARN);
+ log("No files specified to query status on!",
Project.MSG_WARN);
}
}
@@ -186,7 +209,10 @@
}
-
+ /**
+ * return the number of files seen
+ * @return the number of files seen
+ */
public int getLengthOfTask() {
return fileNum;
}
1.14 +8 -0
ant/src/main/org/apache/tools/ant/taskdefs/optional/perforce/P4Edit.java
Index: P4Edit.java
===================================================================
RCS file:
/home/cvs/ant/src/main/org/apache/tools/ant/taskdefs/optional/perforce/P4Edit.java,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -r1.13 -r1.14
--- P4Edit.java 10 Feb 2003 14:14:18 -0000 1.13
+++ P4Edit.java 14 Jul 2003 22:13:18 -0000 1.14
@@ -78,16 +78,24 @@
public class P4Edit extends P4Base {
+ /**
+ * number of the change list to work on
+ */
public String change = null;
/**
* An existing changelist number to assign files to; optional
* but strongly recommended.
+ * @param change the change list number
*/
public void setChange(String change) {
this.change = change;
}
+ /**
+ * Run the p4 edit command
+ * @throws BuildException if there is no view specified
+ */
public void execute() throws BuildException {
if (change != null) {
P4CmdOpts = "-c " + change;
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]