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-ffa450edef68
master
| @@ -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"; | |||
| } | |||