bodewig     2004/06/23 05:32:04

  Modified:    .        Tag: ANT_16_BRANCH WHATSNEW
               src/main/org/apache/tools/ant/taskdefs/optional/net Tag:
                        ANT_16_BRANCH RExecTask.java
  Log:
  merge
  
  Revision  Changes    Path
  No                   revision
  No                   revision
  1.503.2.112 +1 -1      ant/WHATSNEW
  
  Index: WHATSNEW
  ===================================================================
  RCS file: /home/cvs/ant/WHATSNEW,v
  retrieving revision 1.503.2.111
  retrieving revision 1.503.2.112
  diff -u -r1.503.2.111 -r1.503.2.112
  --- WHATSNEW  23 Jun 2004 12:26:34 -0000      1.503.2.111
  +++ WHATSNEW  23 Jun 2004 12:32:03 -0000      1.503.2.112
  @@ -116,7 +116,7 @@
   * <scp> now has (local|remote)tofile attributes to rename files on the
     fly.  Bugzilla Report 26758.
   
  -* <telnet> didn't close the session.  Bugzilla Report 25935.
  +* <telnet> and <rexec> didn't close the session.  Bugzilla Report 25935.
   
   Other changes:
   --------------
  
  
  
  No                   revision
  No                   revision
  1.4.2.4   +32 -25    
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.4.2.3
  retrieving revision 1.4.2.4
  diff -u -r1.4.2.3 -r1.4.2.4
  --- RExecTask.java    9 Feb 2004 22:12:35 -0000       1.4.2.3
  +++ RExecTask.java    23 Jun 2004 12:32:03 -0000      1.4.2.4
  @@ -62,11 +62,6 @@
       private int port = RExecClient.DEFAULT_PORT;
   
       /**
  -     *  The Object which handles the rexec session.
  -     */
  -    private AntRExecClient rexec = null;
  -
  -    /**
        *  The list of read/write commands for this session
        */
       private Vector rexecTasks = new Vector();
  @@ -322,34 +317,46 @@
           }
   
           /**  Create the telnet client object */
  -        rexec = new AntRExecClient();
  +        AntRExecClient rexec = null;
           try {
  -            rexec.connect(server, port);
  -        } catch (IOException e) {
  -            throw new BuildException("Can't connect to " + server);
  -        }
  -        /**  Login if userid and password were specified */
  -        if (userid != null && password != null) {
  -            login();
  -        }
  -        /**  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);
  +            rexec = new AntRExecClient();
  +            try {
  +                rexec.connect(server, port);
  +            } 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);
               }
  -            task.execute(rexec);
  -        }
   
  -        /** Keep reading input stream until end of it or time-out */
  -        rexec.waitForEOF(defaultTimeout);
  +            /** Keep reading input stream until end of it or time-out */
  +            rexec.waitForEOF(defaultTimeout);
  +       } finally {
  +           if (rexec != null) {
  +               try {
  +                   rexec.disconnect();
  +               } catch (IOException e) {
  +                   throw new BuildException("Error disconnecting from " 
  +                                            + server);
  +               }
  +           }
  +       }
       }
       /**
        *  Process a 'typical' login.  If it differs, use the read
        *  and write tasks explicitely
        */
  -    private void login() {
  +    private void login(AntRExecClient rexec) {
           if (addCarriageReturn) {
               rexec.sendString("\n", true);
           }
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to