Submitted by: Beno�t Moussaud <benoit.moussaud@criltelecom.com> Note that I don't use Continuus, so this patch has not been tested for functionality (it compiles and looks OK, that's all I can check). Note 2: I'm not sure whether my assumption <cccheckin>=CCMCheckin <ccmcheckintask>=ccm.CCMCheckinDefault is correct. git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@269399 13f79535-47bb-0310-9956-ffa450edef68master
@@ -39,7 +39,7 @@ Other changes: | |||
-------------- | |||
* New tasks: ear, p4counter, record, cvspass, vsscheckin, vsscheckout, | |||
typedef, sleep, mimemail | |||
typedef, sleep, mimemail, set of tasks for Continuus/Synergy | |||
* Ant now uses JAXP 1.1 | |||
@@ -0,0 +1,235 @@ | |||
<html> | |||
<head> | |||
<meta http-equiv="Content-Language" content="en-us"> | |||
<title>Ant</title> | |||
</head> | |||
<body> | |||
<h1>Continuus Support</h1> | |||
<ul> | |||
<li><a href="#cccheckin">CCMCheckin</a></li> | |||
<li><a href="#cccheckout">CCMCheckout</a></li> | |||
<li><a href="#ccmcheckintask">CCMCheckinTask</a></li> | |||
<li><a href="#ccmreconfigure">CCMReconfigure</a></li> | |||
<li><a href="#ccmcreatetask">CCMCreateTask</a></li> | |||
</ul> | |||
<p>These ant tasks are wrapper around Continnus Source Manager. It have been tested | |||
under version 5.1 on Windows 2000.</p> | |||
<hr> | |||
<h2><a name="cccheckin">CCMCheckin</a></h2> | |||
<h3>Description</h3> | |||
Task to perform a Checkin command to Continnus | |||
<h3>Parameters</h3> | |||
<table border="1" cellpadding="2" cellspacing="0" width="598"> | |||
<tr> | |||
<th>Attribute</th> | |||
<th>Values</th> | |||
<th>Required</th> | |||
</tr> | |||
<tr> | |||
<td>file</td> | |||
<td>Path to the file that the command will operate on</td> | |||
<td>Yes</td> | |||
</tr> | |||
<tr> | |||
<td>comment</td> | |||
<td>Specify a comment.</td> | |||
<td>No</td> | |||
</tr> | |||
<tr> | |||
<td>task</td> | |||
<td>Specify the task number used to checkin the file (may use 'default')</td> | |||
<td>No</td> | |||
</tr> | |||
<tr> | |||
<td>ccmcommand</td> | |||
<td>path to the ccm excutable file. default serach into the PATH</td> | |||
<td>No</td> | |||
</tr> | |||
</table> | |||
<h3>Examples</h3> | |||
<blockquote> | |||
<pre><ccmcheckin file="c:/wa/com/foo/MyFile.java" | |||
comment="mycomment" /> | |||
</pre> | |||
</blockquote> | |||
<p>Does a Continnuus <i>checkin</i> on the file <i>c:/wa/com/foo/MyFile.java</i>. | |||
Comment attribute <i>mycomment</i> is added as a task comment. The task | |||
used is the one set as the fault.</p> | |||
<hr> | |||
<h2><a name="cccheckout">CCMCheckout</a></h2> | |||
<h3>Description</h3> | |||
Task to perform a Checkout command to Continuus | |||
<h3>Parameters</h3> | |||
<table border="1" cellpadding="2" cellspacing="0" width="614"> | |||
<tr> | |||
<th width="84">Attribute</th> | |||
<th width="396">Values</th> | |||
<th width="24">Required</th> | |||
</tr> | |||
<tr> | |||
<td width="84">file</td> | |||
<td width="396">Path to the file that the command will operate on</td> | |||
<td width="24">Yes</td> | |||
</tr> | |||
<tr> | |||
<td width="84">comment</td> | |||
<td width="396">Specify a comment.</td> | |||
<td width="24">No</td> | |||
</tr> | |||
<tr> | |||
<td width="84">task</td> | |||
<td width="396">Specify the task number used to checkin the file (may use | |||
'default')</td> | |||
<td width="24">No</td> | |||
</tr> | |||
<tr> | |||
<td width="84">ccmcommand</td> | |||
<td width="396">path to the ccm excutable file. default serach into the PATH</td> | |||
<td width="24">No</td> | |||
</tr> | |||
</table> | |||
<h3>Examples</h3> | |||
<blockquote> | |||
<pre><ccmcheckin file="c:/wa/com/foo/MyFile.java" | |||
comment="mycomment"/> | |||
</pre> | |||
</blockquote> | |||
<p>Does a Continnuus <i>checkout</i> on the file <i>c:/wa/com/foo/MyFile.java</i>. | |||
Comment attribute <i>mycomment</i> is added as a task comment | |||
The used task is the one set as the fault.</p> | |||
<hr> | |||
<h2><a name="ccmcheckintask">CCMCheckinTask</a></h2> | |||
<h3>Description</h3> | |||
Task to perform a check in default task command to Continnuus | |||
<h3>Parameters</h3> | |||
<table border="1" cellpadding="2" cellspacing="0"> | |||
<tr> | |||
<th>Attribute</th> | |||
<th>Values</th> | |||
<th>Required</th> | |||
</tr> | |||
<tr> | |||
<td>comment</td> | |||
<td>Specify a comment.</td> | |||
<td>No</td> | |||
</tr> | |||
<tr> | |||
<td>task</td> | |||
<td>Specify the task number used to checkin the file (may use 'default')</td> | |||
<td>No</td> | |||
</tr> | |||
<tr> | |||
<td>ccmcommand</td> | |||
<td>path to the ccm excutable file. default serach into the PATH</td> | |||
<td>No</td> | |||
</tr> | |||
</table> | |||
<h3>Examples </h3> | |||
<blockquote> | |||
<pre><ccmcheckintask comment="blahblah/> | |||
</pre> | |||
</blockquote> | |||
<p>Does a Checkin default task on all the checkou-ed filed in the current task.</p> | |||
<hr> | |||
<h2><a name="ccmreconfigure">CCMReconfigure</a></h2> | |||
<h3>Description</h3> | |||
Task to perform an reconfigure command to Continuus. | |||
<h3>Parameters</h3> | |||
<table border="1" cellpadding="2" cellspacing="0"> | |||
<tr> | |||
<th>Attribute</th> | |||
<th>Values</th> | |||
<th>Required</th> | |||
</tr> | |||
<tr> | |||
<td>recurse</td> | |||
<td>recurse on subproject (default false)</td> | |||
<td>No</td> | |||
</tr> | |||
<tr> | |||
<td>verbose</td> | |||
<td>do a verbose reconfigure operation (default false)</td> | |||
<td>No</td> | |||
</tr> | |||
<tr> | |||
<td>ccmproject</td> | |||
<td>Specifies the ccm project on which the operation is applied.</td> | |||
<td>Yes</td> | |||
</tr> | |||
<tr> | |||
<td>ccmcommand</td> | |||
<td>path to the ccm excutable file. default serach into the PATH</td> | |||
<td>No</td> | |||
</tr> | |||
</table> | |||
<h3>Examples</h3> | |||
<blockquote> | |||
<pre><ccmreconfigure ccmproject="ANTCCM_TEST#BMO_1" verbose="true" /> | |||
</pre> | |||
</blockquote> | |||
<p>Does a Continuus <i>reconfiguree</i> on the project <i>ANTCCM_TEST#BMO_1</i>. | |||
</p> | |||
<hr> | |||
<h2><a name="ccmcreatetask">CCMCreateTask</a></h2> | |||
<h3>Description</h3> | |||
Task to perform an create task command to Continuus. | |||
<h3>Parameters</h3> | |||
<table border="1" cellpadding="2" cellspacing="0"> | |||
<tr> | |||
<th>Attribute</th> | |||
<th>Values</th> | |||
<th>Required</th> | |||
</tr> | |||
<tr> | |||
<td>comment</td> | |||
<td>Specify a comment.</td> | |||
<td>No</td> | |||
</tr> | |||
<tr> | |||
<td>platform</td> | |||
<td>Specify the target platform</td> | |||
<td>No</td> | |||
</tr> | |||
<tr> | |||
<td>ccmcommand</td> | |||
<td>path to the ccm excutable file. default serach into the PATH</td> | |||
<td>No</td> | |||
</tr> | |||
<tr> | |||
<td>resolver</td> | |||
<td>Specify the resolver</td> | |||
<td>No</td> | |||
</tr> | |||
<tr> | |||
<td>release</td> | |||
<td>Specify the CCM release</td> | |||
<td>No</td> | |||
</tr> | |||
<tr> | |||
<td>subsystem</td> | |||
<td>Specify the subsystem</td> | |||
<td>No</td> | |||
</tr> | |||
<tr> | |||
<td>task</td> | |||
<td>Specify the task number used to checkin the file (may use 'default')</td> | |||
<td>No</td> | |||
</tr> | |||
</table> | |||
<h3>Examples</h3> | |||
<blockquote> | |||
<pre><ccmcreatetask resolver="{user.name}" release="ANTCCM_TEST" comment="blahblah" /> | |||
</pre> | |||
</blockquote> | |||
<p>Does a Continuus <i>create task</i> for the release <i>ANTCCM_TEST</i> to the | |||
current logged person as the resolver for this task.</p> | |||
<p> </p> | |||
</body> | |||
</html> |
@@ -15,6 +15,7 @@ | |||
<a href="OptionalTasks/antlr.html">ANTLR</a><br> | |||
<a href="OptionalTasks/cab.html">Cab</a><br> | |||
<a href="OptionalTasks/clearcase.html">Clearcase Tasks</a><br> | |||
<a href="OptionalTasks/ccm.html">Continuus/Synergy Tasks</a><br> | |||
<a href="OptionalTasks/depend.html">Depend</a><br> | |||
<a href="OptionalTasks/ejb.html">EJB Tasks</a><br> | |||
<a href="OptionalTasks/ftp.html">FTP</a><br> | |||
@@ -109,6 +109,11 @@ vsscheckout=org.apache.tools.ant.taskdefs.optional.vss.MSVSSCHECKOUT | |||
iplanet-ejbc=org.apache.tools.ant.taskdefs.optional.ejb.IPlanetEjbcTask | |||
jdepend=org.apache.tools.ant.taskdefs.optional.jdepend.JDependTask | |||
mimemail=org.apache.tools.ant.taskdefs.optional.net.MimeMail | |||
cccheckin=org.apache.tools.ant.taskdefs.optional.ccm.CCMCheckin | |||
cccheckout=org.apache.tools.ant.taskdefs.optional.ccm.CCMCheckout | |||
ccmcheckintask=org.apache.tools.ant.taskdefs.optional.ccm.CCMCheckinDefault | |||
ccmreconfigure=org.apache.tools.ant.taskdefs.optional.ccm.CCMReconfigure | |||
ccmcreatetask=org.apache.tools.ant.taskdefs.optional.ccm.CCMCreateTask | |||
# deprecated ant tasks (kept for back compatibility) | |||
javadoc2=org.apache.tools.ant.taskdefs.Javadoc | |||
@@ -0,0 +1,184 @@ | |||
/* | |||
* 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 | |||
* <http://www.apache.org/>. | |||
*/ | |||
package org.apache.tools.ant.taskdefs.optional.ccm; | |||
import org.apache.tools.ant.*; | |||
import org.apache.tools.ant.types.Commandline; | |||
import org.apache.tools.ant.types.Path; | |||
import java.io.File; | |||
/** | |||
* Class common to all check commands (checkout, checkin,checkin default task); | |||
* @author Benoit Moussaud benoit.moussaud@criltelecom.com | |||
*/ | |||
public class CCMCheck extends Continuus { | |||
private File _file = null; | |||
private String _comment = null; | |||
private String _task = null; | |||
public CCMCheck() { | |||
super(); | |||
} | |||
/** | |||
* Get the value of file. | |||
* @return value of file. | |||
*/ | |||
public File getFile() { | |||
return _file; | |||
} | |||
/** | |||
* Set the value of file. | |||
* @param v Value to assign to file. | |||
*/ | |||
public void setFile(File v) { | |||
this._file = v; | |||
} | |||
/** | |||
* Get the value of comment. | |||
* @return value of comment. | |||
*/ | |||
public String getComment() { | |||
return _comment; | |||
} | |||
/** | |||
* Set the value of comment. | |||
* @param v Value to assign to comment. | |||
*/ | |||
public void setComment(String v) { | |||
this._comment = v; | |||
} | |||
/** | |||
* Get the value of task. | |||
* @return value of task. | |||
*/ | |||
public String getTask() { | |||
return _task; | |||
} | |||
/** | |||
* Set the value of task. | |||
* @param v Value to assign to task. | |||
*/ | |||
public void setTask(String v) { | |||
this._task = v; | |||
} | |||
/** | |||
* Executes the task. | |||
* <p> | |||
* Builds a command line to execute ccm and then calls Exec's run method | |||
* to execute the command line. | |||
* </p> | |||
*/ | |||
public void execute() throws BuildException { | |||
Commandline commandLine = new Commandline(); | |||
Project aProj = getProject(); | |||
int result = 0; | |||
// build the command line from what we got the format is | |||
// ccm co /t .. files | |||
// as specified in the CLEARTOOL.EXE help | |||
commandLine.setExecutable(getCcmCommand()); | |||
commandLine.createArgument().setValue(getCcmAction()); | |||
checkOptions(commandLine); | |||
result = run(commandLine); | |||
if ( result != 0 ) { | |||
String msg = "Failed executing: " + commandLine.toString(); | |||
throw new BuildException(msg, location); | |||
} | |||
} | |||
/** | |||
* Check the command line options. | |||
*/ | |||
private void checkOptions(Commandline cmd) { | |||
if (getComment() != null) { | |||
cmd.createArgument().setValue(FLAG_COMMENT); | |||
cmd.createArgument().setValue(getComment()); | |||
} | |||
if ( getTask() != null) { | |||
cmd.createArgument().setValue(FLAG_TASK); | |||
cmd.createArgument().setValue(getTask()); | |||
} // end of if () | |||
if ( getFile() != null ) { | |||
cmd.createArgument().setValue(_file.getAbsolutePath()); | |||
} // end of if () | |||
} | |||
/** | |||
* -comment flag -- comment to attach to the file | |||
*/ | |||
public static final String FLAG_COMMENT = "/comment"; | |||
/** | |||
* -task flag -- associate checckout task with task | |||
*/ | |||
public static final String FLAG_TASK = "/task"; | |||
} | |||
@@ -0,0 +1,72 @@ | |||
/* | |||
* 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 | |||
* <http://www.apache.org/>. | |||
*/ | |||
package org.apache.tools.ant.taskdefs.optional.ccm; | |||
import java.util.Date; | |||
/** | |||
* Task to perform Checkin command to Continuus | |||
* @author Benoit Moussaud benoit.moussaud@criltelecom.com | |||
*/ | |||
public class CCMCheckin extends CCMCheck { | |||
public CCMCheckin() { | |||
super(); | |||
setCcmAction(COMMAND_CHECKIN); | |||
setComment("Checkin "+ new Date()); | |||
} | |||
} | |||
@@ -0,0 +1,71 @@ | |||
/* | |||
* 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 | |||
* <http://www.apache.org/>. | |||
*/ | |||
package org.apache.tools.ant.taskdefs.optional.ccm; | |||
/** | |||
* Task to perform Checkin Default task command to Continuus | |||
* @author Benoit Moussaud benoit.moussaud@criltelecom.com | |||
*/ | |||
public class CCMCheckinDefault extends CCMCheck { | |||
public CCMCheckinDefault(){ | |||
super(); | |||
setCcmAction(COMMAND_CHECKIN); | |||
setTask(DEFAULT_TASK); | |||
} | |||
public static final String DEFAULT_TASK = "default"; | |||
} | |||
@@ -0,0 +1,68 @@ | |||
/* | |||
* 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 | |||
* <http://www.apache.org/>. | |||
*/ | |||
package org.apache.tools.ant.taskdefs.optional.ccm; | |||
/** | |||
* Task to perform Checkout command to Continuus | |||
* @author Benoit Moussaud benoit.moussaud@criltelecom.com | |||
*/ | |||
public class CCMCheckout extends CCMCheck { | |||
public CCMCheckout(){ | |||
super(); | |||
setCcmAction(COMMAND_CHECKOUT); | |||
} | |||
} | |||
@@ -0,0 +1,366 @@ | |||
/* | |||
* 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 | |||
* <http://www.apache.org/>. | |||
*/ | |||
package org.apache.tools.ant.taskdefs.optional.ccm; | |||
import java.io.BufferedReader; | |||
import java.io.File; | |||
import java.io.IOException; | |||
import java.io.InputStream; | |||
import java.io.InputStreamReader; | |||
import java.io.OutputStream; | |||
import java.lang.NullPointerException; | |||
import org.apache.tools.ant.*; | |||
import org.apache.tools.ant.taskdefs.ExecuteStreamHandler; | |||
import org.apache.tools.ant.types.Commandline; | |||
import org.apache.tools.ant.types.Path; | |||
/** | |||
* Task allows to create new ccm task and set it as the default | |||
* @author Benoit Moussaud benoit.moussaud@criltelecom.com | |||
*/ | |||
public class CCMCreateTask extends Continuus implements ExecuteStreamHandler { | |||
private String comment = null; | |||
private String platform = null; | |||
private String resolver = null; | |||
private String release = null; | |||
private String subSystem = null; | |||
private String task = null; | |||
public CCMCreateTask() { | |||
super(); | |||
setCcmAction(COMMAND_CREATE_TASK); | |||
} | |||
/** | |||
* Executes the task. | |||
* <p> | |||
* Builds a command line to execute ccm and then calls Exec's run method | |||
* to execute the command line. | |||
* </p> | |||
*/ | |||
public void execute() throws BuildException { | |||
Commandline commandLine = new Commandline(); | |||
Project aProj = getProject(); | |||
int result = 0; | |||
// build the command line from what we got the format | |||
// as specified in the CCM.EXE help | |||
commandLine.setExecutable(getCcmCommand()); | |||
commandLine.createArgument().setValue(getCcmAction()); | |||
checkOptions(commandLine); | |||
result = run(commandLine,this); | |||
if ( result != 0 ) { | |||
String msg = "Failed executing: " + commandLine.toString(); | |||
throw new BuildException(msg, location); | |||
} | |||
//create task ok, set this task as the default one | |||
Commandline commandLine2 = new Commandline(); | |||
commandLine2.setExecutable(getCcmCommand()); | |||
commandLine2.createArgument().setValue(COMMAND_DEFAULT_TASK); | |||
commandLine2.createArgument().setValue(getTask()); | |||
log(commandLine.toString(),Project.MSG_DEBUG); | |||
result = run(commandLine2); | |||
if ( result != 0 ) { | |||
String msg = "Failed executing: " + commandLine2.toString(); | |||
throw new BuildException(msg, location); | |||
} | |||
} | |||
/** | |||
* Check the command line options. | |||
*/ | |||
private void checkOptions(Commandline cmd) { | |||
if (getComment() != null) { | |||
cmd.createArgument().setValue(FLAG_COMMENT); | |||
cmd.createArgument().setValue("\""+getComment()+"\""); | |||
} | |||
if ( getPlatform() != null) { | |||
cmd.createArgument().setValue(FLAG_PLATFORM); | |||
cmd.createArgument().setValue(getPlatform()); | |||
} // end of if () | |||
if ( getResolver() != null) { | |||
cmd.createArgument().setValue(FLAG_RESOLVER); | |||
cmd.createArgument().setValue(getResolver()); | |||
} // end of if () | |||
if ( getSubSystem() != null) { | |||
cmd.createArgument().setValue(FLAG_SUBSYSTEM); | |||
cmd.createArgument().setValue("\""+getSubSystem()+"\""); | |||
} // end of if () | |||
if ( getRelease() != null ) { | |||
cmd.createArgument().setValue(FLAG_RELEASE); | |||
cmd.createArgument().setValue(getRelease()); | |||
} // end of if () | |||
} | |||
/** | |||
* Get the value of comment. | |||
* @return value of comment. | |||
*/ | |||
public String getComment() { | |||
return comment; | |||
} | |||
/** | |||
* Set the value of comment. | |||
* @param v Value to assign to comment. | |||
*/ | |||
public void setComment(String v) { | |||
this.comment = v; | |||
} | |||
/** | |||
* Get the value of platform. | |||
* @return value of platform. | |||
*/ | |||
public String getPlatform() { | |||
return platform; | |||
} | |||
/** | |||
* Set the value of platform. | |||
* @param v Value to assign to platform. | |||
*/ | |||
public void setPlatform(String v) { | |||
this.platform = v; | |||
} | |||
/** | |||
* Get the value of resolver. | |||
* @return value of resolver. | |||
*/ | |||
public String getResolver() { | |||
return resolver; | |||
} | |||
/** | |||
* Set the value of resolver. | |||
* @param v Value to assign to resolver. | |||
*/ | |||
public void setResolver(String v) { | |||
this.resolver = v; | |||
} | |||
/** | |||
* Get the value of release. | |||
* @return value of release. | |||
*/ | |||
public String getRelease() { | |||
return release; | |||
} | |||
/** | |||
* Set the value of release. | |||
* @param v Value to assign to release. | |||
*/ | |||
public void setRelease(String v) { | |||
this.release = v; | |||
} | |||
/** | |||
* Get the value of subSystem. | |||
* @return value of subSystem. | |||
*/ | |||
public String getSubSystem() { | |||
return subSystem; | |||
} | |||
/** | |||
* Set the value of subSystem. | |||
* @param v Value to assign to subSystem. | |||
*/ | |||
public void setSubSystem(String v) { | |||
this.subSystem = v; | |||
} | |||
/** | |||
* Get the value of task. | |||
* @return value of task. | |||
*/ | |||
public String getTask() { | |||
return task; | |||
} | |||
/** | |||
* Set the value of task. | |||
* @param v Value to assign to task. | |||
*/ | |||
public void setTask(String v) { | |||
this.task = v; | |||
} | |||
/** | |||
* /comment -- comments associated to the task | |||
*/ | |||
public static final String FLAG_COMMENT = "/synopsis"; | |||
/** | |||
* /platform flag -- target platform | |||
*/ | |||
public static final String FLAG_PLATFORM = "/plat"; | |||
/** | |||
* /resolver flag | |||
*/ | |||
public static final String FLAG_RESOLVER = "/resolver"; | |||
/** | |||
* /release flag | |||
*/ | |||
public static final String FLAG_RELEASE = "/release"; | |||
/** | |||
* /release flag | |||
*/ | |||
public static final String FLAG_SUBSYSTEM = "/subsystem"; | |||
/** | |||
* -task flag -- associate checckout task with task | |||
*/ | |||
public static final String FLAG_TASK = "/task"; | |||
// implementation of org.apache.tools.ant.taskdefs.ExecuteStreamHandler interface | |||
/** | |||
* | |||
* @exception java.io.IOException <description> | |||
*/ | |||
public void start() throws IOException { | |||
} | |||
/** | |||
* | |||
*/ | |||
public void stop(){ | |||
} | |||
/** | |||
* | |||
* @param param1 <description> | |||
* @exception java.io.IOException <description> | |||
*/ | |||
public void setProcessInputStream(OutputStream param1) throws IOException { | |||
} | |||
/** | |||
* | |||
* @param param1 <description> | |||
* @exception java.io.IOException <description> | |||
*/ | |||
public void setProcessErrorStream(InputStream is) throws IOException { | |||
BufferedReader reader = new BufferedReader(new InputStreamReader(is)); | |||
String s = reader.readLine(); | |||
if ( s != null) | |||
{ | |||
log("err "+s,Project.MSG_DEBUG); | |||
} // end of if () | |||
} | |||
/** | |||
* read the output stream to retrieve the new task number. | |||
* @param is InputStream | |||
* @exception java.io.IOException | |||
*/ | |||
public void setProcessOutputStream(InputStream is) throws IOException { | |||
String buffer = ""; | |||
try | |||
{ | |||
BufferedReader reader = new BufferedReader(new InputStreamReader(is)); | |||
buffer = reader.readLine(); | |||
if ( buffer != null) | |||
{ | |||
log("buffer:" +buffer,Project.MSG_DEBUG); | |||
String taskstring = buffer.substring(buffer.indexOf(' ')).trim(); | |||
taskstring = taskstring.substring(0,taskstring.lastIndexOf(' ')).trim(); | |||
setTask(taskstring); | |||
log("task is "+getTask(),Project.MSG_DEBUG); | |||
} // end of if () | |||
} | |||
catch ( NullPointerException npe) | |||
{ | |||
log("error procession stream , null pointer exception",Project.MSG_ERR); | |||
npe.printStackTrace(); | |||
throw new BuildException(npe.getClass().getName()); | |||
} // end of catch | |||
catch (Exception e) | |||
{ | |||
log("error procession stream "+e.getMessage(),Project.MSG_ERR); | |||
throw new BuildException(e.getMessage()); | |||
} // end of try-catch | |||
} | |||
} | |||
@@ -0,0 +1,202 @@ | |||
/* | |||
* 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 | |||
* <http://www.apache.org/>. | |||
*/ | |||
package org.apache.tools.ant.taskdefs.optional.ccm; | |||
import java.io.BufferedReader; | |||
import java.io.File; | |||
import java.io.IOException; | |||
import java.io.InputStream; | |||
import java.io.InputStreamReader; | |||
import java.io.OutputStream; | |||
import org.apache.tools.ant.*; | |||
import org.apache.tools.ant.types.Commandline; | |||
import org.apache.tools.ant.types.Path; | |||
/** | |||
* Task allows to reconfigure a project, recurcively or not | |||
* @author Benoit Moussaud benoit.moussaud@criltelecom.com | |||
*/ | |||
public class CCMReconfigure extends Continuus { | |||
private String project = null; | |||
private boolean recurse = false; | |||
private boolean verbose = false; | |||
public CCMReconfigure() { | |||
super(); | |||
setCcmAction(COMMAND_RECONFIGURE); | |||
} | |||
/** | |||
* Executes the task. | |||
* <p> | |||
* Builds a command line to execute ccm and then calls Exec's run method | |||
* to execute the command line. | |||
* </p> | |||
*/ | |||
public void execute() throws BuildException { | |||
Commandline commandLine = new Commandline(); | |||
Project aProj = getProject(); | |||
int result = 0; | |||
// build the command line from what we got the format | |||
// as specified in the CCM.EXE help | |||
commandLine.setExecutable(getCcmCommand()); | |||
commandLine.createArgument().setValue(getCcmAction()); | |||
checkOptions(commandLine); | |||
result = run(commandLine); | |||
if ( result != 0 ) { | |||
String msg = "Failed executing: " + commandLine.toString(); | |||
throw new BuildException(msg, location); | |||
} | |||
} | |||
/** | |||
* Check the command line options. | |||
*/ | |||
private void checkOptions(Commandline cmd) { | |||
if ( isRecurse() == true) { | |||
cmd.createArgument().setValue(FLAG_RECURSE); | |||
} // end of if () | |||
if ( isVerbose() == true) { | |||
cmd.createArgument().setValue(FLAG_VERBOSE); | |||
} // end of if () | |||
if (getCcmProject() != null) { | |||
cmd.createArgument().setValue(FLAG_PROJECT); | |||
cmd.createArgument().setValue(getCcmProject()); | |||
} | |||
} | |||
/** | |||
* Get the value of project. | |||
* @return value of project. | |||
*/ | |||
public String getCcmProject() { | |||
return project; | |||
} | |||
/** | |||
* Set the value of project. | |||
* @param v Value to assign to project. | |||
*/ | |||
public void setCcmProject(String v) { | |||
this.project = v; | |||
} | |||
/** | |||
* Get the value of recurse. | |||
* @return value of recurse. | |||
*/ | |||
public boolean isRecurse() { | |||
return recurse; | |||
} | |||
/** | |||
* Set the value of recurse. | |||
* @param v Value to assign to recurse. | |||
*/ | |||
public void setRecurse(boolean v) { | |||
this.recurse = v; | |||
} | |||
/** | |||
* Get the value of verbose. | |||
* @return value of verbose. | |||
*/ | |||
public boolean isVerbose() | |||
{ | |||
return verbose; | |||
} | |||
/** | |||
* Set the value of verbose. | |||
* @param v Value to assign to verbose. | |||
*/ | |||
public void setVerbose(boolean v) | |||
{ | |||
this.verbose = v; | |||
} | |||
/** | |||
* /recurse -- | |||
*/ | |||
public static final String FLAG_RECURSE = "/recurse"; | |||
/** | |||
* /recurse -- | |||
*/ | |||
public static final String FLAG_VERBOSE = "/verbose"; | |||
/** | |||
* /project flag -- target project | |||
*/ | |||
public static final String FLAG_PROJECT = "/project"; | |||
} | |||
@@ -0,0 +1,167 @@ | |||
/* | |||
* 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 | |||
* <http://www.apache.org/>. | |||
*/ | |||
package org.apache.tools.ant.taskdefs.optional.ccm; | |||
import org.apache.tools.ant.*; | |||
import org.apache.tools.ant.taskdefs.Execute; | |||
import org.apache.tools.ant.taskdefs.LogStreamHandler; | |||
import org.apache.tools.ant.taskdefs.ExecuteStreamHandler; | |||
import org.apache.tools.ant.types.Commandline; | |||
import java.io.File; | |||
/** | |||
* A base class for creating tasks for executing commands on Continuus 5.1 | |||
* <p> | |||
* The class extends the task as it operates by executing the ccm.exe program | |||
* supplied with Continuus/Synergy. By default the task expects the ccm executable to be | |||
* in the path, | |||
* you can override this be specifying the ccmdir attribute. | |||
* </p> | |||
* | |||
* @author Benoit Moussaud benoit.moussaud@criltelecom.com | |||
*/ | |||
public abstract class Continuus extends Task { | |||
private String _ccmDir = ""; | |||
private String _ccmAction = ""; | |||
/** | |||
* Get the value of ccmAction. | |||
* @return value of ccmAction. | |||
*/ | |||
public String getCcmAction() { | |||
return _ccmAction; | |||
} | |||
/** | |||
* Set the value of ccmAction. | |||
* @param v Value to assign to ccmAction. | |||
*/ | |||
public void setCcmAction(String v) { | |||
this._ccmAction = v; | |||
} | |||
/** | |||
* Set the directory where the ccm executable is located | |||
* @param dir the directory containing the ccm executable | |||
*/ | |||
public final void setCcmDir(String dir) { | |||
_ccmDir = project.translatePath(dir); | |||
} | |||
/** | |||
* Builds and returns the command string to execute ccm | |||
* @return String containing path to the executable | |||
*/ | |||
protected final String getCcmCommand() { | |||
String toReturn = _ccmDir; | |||
if ( !toReturn.equals("") && !toReturn.endsWith("/") ) { | |||
toReturn += "/"; | |||
} | |||
toReturn += CCM_EXE; | |||
return toReturn; | |||
} | |||
protected int run(Commandline cmd, ExecuteStreamHandler handler) { | |||
try { | |||
Execute exe = new Execute(handler); | |||
exe.setAntRun(getProject()); | |||
exe.setWorkingDirectory(getProject().getBaseDir()); | |||
exe.setCommandline(cmd.getCommandline()); | |||
return exe.execute(); | |||
} | |||
catch (java.io.IOException e) { | |||
throw new BuildException(e, location); | |||
} | |||
} | |||
protected int run(Commandline cmd) { | |||
return run(cmd,new LogStreamHandler(this, Project.MSG_VERBOSE, Project.MSG_WARN)); | |||
} | |||
/** | |||
* Constant for the thing to execute | |||
*/ | |||
private static final String CCM_EXE = "ccm"; | |||
/** | |||
* The 'CreateTask' command | |||
*/ | |||
public static final String COMMAND_CREATE_TASK = "create_task"; | |||
/** | |||
* The 'Checkout' command | |||
*/ | |||
public static final String COMMAND_CHECKOUT = "co"; | |||
/** | |||
* The 'Checkin' command | |||
*/ | |||
public static final String COMMAND_CHECKIN = "ci"; | |||
/** | |||
* The 'Reconfigure' command | |||
*/ | |||
public static final String COMMAND_RECONFIGURE = "reconfigure"; | |||
/** | |||
* The 'Reconfigure' command | |||
*/ | |||
public static final String COMMAND_DEFAULT_TASK = "default_task"; | |||
} |