You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ant.apache.org by bo...@apache.org on 2005/03/14 09:56:48 UTC

cvs commit: ant/src/main/org/apache/tools/ant/taskdefs/optional/net RExecTask.java

bodewig     2005/03/14 00:56:48

  Modified:    .        WHATSNEW
               docs/manual/OptionalTasks rexec.html
               src/main/org/apache/tools/ant/taskdefs/optional/net
                        RExecTask.java
  Log:
  Make <rexec> use the protocol directly, when possible.  Also, did the command attribute actually work?  PR: 26632
  
  Revision  Changes    Path
  1.772     +3 -0      ant/WHATSNEW
  
  Index: WHATSNEW
  ===================================================================
  RCS file: /home/cvs/ant/WHATSNEW,v
  retrieving revision 1.771
  retrieving revision 1.772
  diff -u -r1.771 -r1.772
  --- WHATSNEW	11 Mar 2005 08:41:41 -0000	1.771
  +++ WHATSNEW	14 Mar 2005 08:56:48 -0000	1.772
  @@ -257,6 +257,9 @@
   * Ant generated jar files should now be detected as jar files by
     Solaris.  Bugzilla Report 32649.
     
  +* <rexec> with a single command should now work with unusal login
  +  dialogs without special read/write pairs.  Bugzilla Report 26632.
  +
   Fixed bugs:
   -----------
   
  
  
  
  1.6       +8 -3      ant/docs/manual/OptionalTasks/rexec.html
  
  Index: rexec.html
  ===================================================================
  RCS file: /home/cvs/ant/docs/manual/OptionalTasks/rexec.html,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- rexec.html	7 Mar 2005 18:11:14 -0000	1.5
  +++ rexec.html	14 Mar 2005 08:56:48 -0000	1.6
  @@ -17,6 +17,11 @@
   <p><b>Note:</b> This task depends on external libraries not included in the Ant distribution.
   See <a href="../install.html#librarydependencies">Library Dependencies</a> for more information.</p>
   
  +<p>You can specify the commands you want to execute as nested elements
  +or via the command attribute, we recommend you use the command
  +attribute.  If you use the command attribute, you must use the
  +username and password attributes as well.</p>
  +
   <h3>Parameters</h3>
   <table border="1" cellpadding="2" cellspacing="0">
     <tr>
  @@ -27,12 +32,12 @@
     <tr>
        <td>userid</td>
        <td>the login id to use on the remote server.</td>
  -     <td>Yes</td>
  +     <td>No</td>
     </tr>
     <tr>
        <td>password</td>
        <td>the login password to use on the remote server.</td>
  -     <td>Yes</td>
  +     <td>No</td>
     </tr>
     <tr>
        <td>server</td>
  @@ -42,7 +47,7 @@
     <tr>
        <td>command</td>
        <td>the command to execute on the remote server.</td>
  -     <td>Yes</td>
  +     <td>No</td>
     </tr>
     <tr>
        <td>port</td>
  
  
  
  1.12      +32 -13    ant/src/main/org/apache/tools/ant/taskdefs/optional/net/RExecTask.java
  
  Index: RExecTask.java
  ===================================================================
  RCS file: /home/cvs/ant/src/main/org/apache/tools/ant/taskdefs/optional/net/RExecTask.java,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- RExecTask.java	11 Mar 2005 15:27:40 -0000	1.11
  +++ RExecTask.java	14 Mar 2005 08:56:48 -0000	1.12
  @@ -350,23 +350,20 @@
               } catch (IOException e) {
                   throw new BuildException("Can't connect to " + server);
               }
  -            /**  Login if userid and password were specified */
  -            if (userid != null && password != null) {
  -                login(rexec);
  -            }
  -            /**  Process each sub command */
  -            Enumeration tasksToRun = rexecTasks.elements();
  -            while (tasksToRun != null && tasksToRun.hasMoreElements()) {
  -                RExecSubTask task = (RExecSubTask) tasksToRun.nextElement();
  -                if (task instanceof RExecRead && defaultTimeout != null) {
  -                    ((RExecRead) task).setDefaultTimeout(defaultTimeout);
  -                }
  -                task.execute(rexec);
  +            if (userid != null && password != null && command != null
  +                && rexecTasks.size() == 0) {
  +                // simple one-shot execution
  +                rexec.rexec(userid, password, command);
  +            } else {
  +                // need nested read/write elements
  +                handleMultipleTasks(rexec);
               }
   
               /** Keep reading input stream until end of it or time-out */
               rexec.waitForEOF(defaultTimeout);
  -       } finally {
  +        } catch (IOException e) {
  +            throw new BuildException("Error r-executing command", e);
  +        } finally {
               if (rexec != null && rexec.isConnected()) {
                   try {
                       rexec.disconnect();
  @@ -446,4 +443,26 @@
       public void setUserid(String u) {
           this.userid = u;
       }
  +
  +    /**
  +     * Deals with multiple read/write calls.
  +     *
  +     * @since Ant 1.6.3
  +     */
  +    private void handleMultipleTasks(AntRExecClient rexec) {
  +
  +        /**  Login if userid and password were specified */
  +        if (userid != null && password != null) {
  +            login(rexec);
  +        }
  +        /**  Process each sub command */
  +        Enumeration tasksToRun = rexecTasks.elements();
  +        while (tasksToRun != null && tasksToRun.hasMoreElements()) {
  +            RExecSubTask task = (RExecSubTask) tasksToRun.nextElement();
  +            if (task instanceof RExecRead && defaultTimeout != null) {
  +                ((RExecRead) task).setDefaultTimeout(defaultTimeout);
  +            }
  +            task.execute(rexec);
  +        }
  +    }
   }
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@ant.apache.org
For additional commands, e-mail: dev-help@ant.apache.org