From 49587b4efe9d7669148b9c8978ac4ebfc2de92c5 Mon Sep 17 00:00:00 2001
From: kenneth_suter <kenneth_suter@localhost>
Date: Tue, 02 Oct 2007 19:28:38 +0000
Subject: [PATCH] Addresses issue 2370 in which the non-interactive option issued a success message to a request to cancel an uninterruptable task while executing.  This code also causes the command to return a non-zero error code if a non-interactive cancel or info operation is unsuccessful.

---
 opends/src/server/org/opends/server/tools/ManageTasks.java |   21 ++++++++++++++++-----
 1 files changed, 16 insertions(+), 5 deletions(-)

diff --git a/opends/src/server/org/opends/server/tools/ManageTasks.java b/opends/src/server/org/opends/server/tools/ManageTasks.java
index e230034..f9cf76c 100644
--- a/opends/src/server/org/opends/server/tools/ManageTasks.java
+++ b/opends/src/server/org/opends/server/tools/ManageTasks.java
@@ -252,12 +252,16 @@
 
         } else if (task.isPresent()) {
           println();
-          new PrintTaskInfo(task.getValue()).invoke(this);
+          MenuResult<TaskEntry> r =
+                  new PrintTaskInfo(task.getValue()).invoke(this);
+          if (r.isAgain()) return 1;
         } else if (summary.isPresent()) {
           println();
           printSummaryTable();
         } else if (cancel.isPresent()) {
-          new CancelTask(cancel.getValue()).invoke(this);
+          MenuResult<TaskEntry> r =
+                  new CancelTask(cancel.getValue()).invoke(this);
+          if (r.isAgain()) return 1;
         }
 
       } catch (LDAPConnectionException lce) {
@@ -713,6 +717,7 @@
       } catch (Exception e) {
         app.println(ERR_TASKINFO_RETRIEVING_TASK_ENTRY.get(
                     taskId, e.getMessage()));
+        return MenuResult.again();
       }
       return MenuResult.success(taskEntry);
     }
@@ -911,9 +916,15 @@
             throws CLIException
     {
       try {
-        TaskEntry entry = app.getTaskClient().cancelTask(taskId);
-        app.println(INFO_TASKINFO_CMD_CANCEL_SUCCESS.get(taskId));
-        return MenuResult.success(entry);
+        TaskEntry entry = app.getTaskClient().getTaskEntry(taskId);
+        if (entry.isCancelable()) {
+          app.getTaskClient().cancelTask(taskId);
+          app.println(INFO_TASKINFO_CMD_CANCEL_SUCCESS.get(taskId));
+          return MenuResult.success(entry);
+        } else {
+          app.println(ERR_TASKINFO_TASK_NOT_CANCELABLE_TASK.get(taskId));
+          return MenuResult.again();
+        }
       } catch (Exception e) {
         app.println(ERR_TASKINFO_CANCELING_TASK.get(
                 taskId, e.getMessage()));

--
Gitblit v1.10.0