diff --git a/WHATSNEW b/WHATSNEW
index bd604343a..a26e0d129 100644
--- a/WHATSNEW
+++ b/WHATSNEW
@@ -13,6 +13,8 @@ Changes that could break older environments:
Other changes:
--------------
+* New tasks: ear, p4counter
+
* Ant now uses JAXP 1.1
* rmic now supports Kaffe's and Weblogic's version of rmic.
diff --git a/docs/manual/OptionalTasks/perforce.html b/docs/manual/OptionalTasks/perforce.html
index a1ce83f97..1a8c73d6e 100644
--- a/docs/manual/OptionalTasks/perforce.html
+++ b/docs/manual/OptionalTasks/perforce.html
@@ -59,6 +59,10 @@ You will also need the perforce client executable (p4 or p4.exe but not p4win.ex
P4Label |
Create a label reflecting files in the current workspace |
+
+ P4Counter |
+ Obtain or set the value of a counter |
+
General P4 Properties
@@ -142,6 +146,7 @@ available from the Perforce web
<taskdef name="p4submit" classname="org.apache.tools.ant.taskdefs.optional.perforce.P4Submit" />
<taskdef name="p4have" classname="org.apache.tools.ant.taskdefs.optional.perforce.P4Have" />
<taskdef name="p4label" classname="org.apache.tools.ant.taskdefs.optional.perforce.P4Label" />
+ <taskdef name="p4counter" classname="org.apache.tools.ant.taskdefs.optional.perforce.P4Counter" />
@@ -322,7 +327,6 @@ although P4Edit can open files to the default change, P4Submit cannot yet submi
-
Examples
<p4label
@@ -333,6 +337,37 @@ although P4Edit can open files to the default change, P4Submit cannot yet submi
+
+Description:
+Obtain or set the value of a counter
+
+Parameters
+
+
+ Attribute |
+ Description |
+ Required |
+
+
+ name |
+ The name of the counter |
+ Yes |
+
+
+ value |
+ The new value for the counter |
+ No |
+
+
+
+Examples
+
+<p4counter name="last-clean-build" />
+<p4counter name="last-clean-build" value="${TSTAMP}" />
+
+
+
+
diff --git a/src/main/org/apache/tools/ant/taskdefs/defaults.properties b/src/main/org/apache/tools/ant/taskdefs/defaults.properties
index a19c74cb1..66ea759aa 100644
--- a/src/main/org/apache/tools/ant/taskdefs/defaults.properties
+++ b/src/main/org/apache/tools/ant/taskdefs/defaults.properties
@@ -83,6 +83,7 @@ p4have=org.apache.tools.ant.taskdefs.optional.perforce.P4Have
p4sync=org.apache.tools.ant.taskdefs.optional.perforce.P4Sync
p4edit=org.apache.tools.ant.taskdefs.optional.perforce.P4Edit
p4submit=org.apache.tools.ant.taskdefs.optional.perforce.P4Submit
+p4counter=org.apache.tools.ant.taskdefs.optional.perforce.P4Counter
javah=org.apache.tools.ant.taskdefs.optional.Javah
ccupdate=org.apache.tools.ant.taskdefs.optional.clearcase.CCUpdate
cccheckout=org.apache.tools.ant.taskdefs.optional.clearcase.CCCheckout
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/perforce/P4Counter.java b/src/main/org/apache/tools/ant/taskdefs/optional/perforce/P4Counter.java
new file mode 100644
index 000000000..f92189be9
--- /dev/null
+++ b/src/main/org/apache/tools/ant/taskdefs/optional/perforce/P4Counter.java
@@ -0,0 +1,102 @@
+/*
+ * The Apache Software License, Version 1.1
+ *
+ * Copyright (c) 2001 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 "The Jakarta Project", "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 apache@apache.org.
+ *
+ * 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
+ * .
+ *
+ * Portions of this software are based upon public domain software
+ * originally written at the National Center for Supercomputing Applications,
+ * University of Illinois, Urbana-Champaign.
+ */
+
+package org.apache.tools.ant.taskdefs.optional.perforce;
+
+import org.apache.tools.ant.*;
+
+/** P4Counter - Obtain the value of a counter.
+ *
+ * Example Usage:
+ * <p4counter name="${p4.change}"/>
+ * @author Kirk Wylie
+ *
+ * ToDo: Should be able to write the counter value to a property.
+ * I've left that out of the first version here because it involves
+ * changing the P4OutputHandler fairly substantially, and thus
+ * shouldn't be the second thing that I do here.
+ */
+
+public class P4Counter extends P4Base {
+ public String counter = null;
+ public boolean shouldSetValue = false;
+ public int value = 0;
+
+ public void setName(String counter) {
+ this.counter = counter;
+ }
+
+ public void setValue(int value) {
+ this.value = value;
+ shouldSetValue = true;
+ }
+
+ public void execute() throws BuildException {
+
+ if((counter == null) || counter.length() == 0) {
+ throw new BuildException("No counter specified to retrieve");
+ }
+
+ String command = "-s counter " + P4CmdOpts + " " + counter;
+ if(shouldSetValue) {
+ command += " " + value;
+ }
+
+ execP4Command(command, new SimpleP4OutputHandler(this));
+ }
+}
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/perforce/package.html b/src/main/org/apache/tools/ant/taskdefs/optional/perforce/package.html
index 99e31835e..125fc2aaf 100644
--- a/src/main/org/apache/tools/ant/taskdefs/optional/perforce/package.html
+++ b/src/main/org/apache/tools/ant/taskdefs/optional/perforce/package.html
@@ -16,6 +16,7 @@ These tasks also require you to have the p4 (or p4.exe) client in your path.
@see org.apache.tools.ant.taskdefs.optional.perforce.P4Change
@see org.apache.tools.ant.taskdefs.optional.perforce.P4Edit
@see org.apache.tools.ant.taskdefs.optional.perforce.P4Submit
+@see org.apache.tools.ant.taskdefs.optional.perforce.P4Counter