(TWILL-238) restart instances with Set of Integers

This closes #56 on Github.

Signed-off-by: Terence Yim <chtyim@apache.org>
diff --git a/twill-api/src/main/java/org/apache/twill/api/TwillController.java b/twill-api/src/main/java/org/apache/twill/api/TwillController.java
index f5004ae..10b2b97 100644
--- a/twill-api/src/main/java/org/apache/twill/api/TwillController.java
+++ b/twill-api/src/main/java/org/apache/twill/api/TwillController.java
@@ -92,6 +92,15 @@
   Future<String> restartInstances(String runnable, int instanceId, int... moreInstanceIds);
 
   /**
+   * Restart instances of some {@link TwillRunnable}.
+   *
+   * @param runnable    The name of the runnable to restart.
+   * @param instanceIds Instances to be restarted
+   * @return A {@link Future} that will be completed when the restart operation has been done.
+   */
+  Future<String> restartInstances(String runnable, Set<Integer> instanceIds);
+
+  /**
    * Update the log levels for requested logger names for Twill applications running in a container.
    * The log level for a logger name can be {@code null} except for the root logger, which will reset the log level for
    * the specified logger.
@@ -104,7 +113,8 @@
 
   /**
    * Update the log levels for requested logger names for a {@link TwillRunnable}.
-   * The log level for a logger name can be {@code null} except for the root logger, which will reset the log level for
+   * The log level for a logger name can be {@code null} except for the root logger,
+   * which will reset the log level for
    * the specified logger.
    *
    * @param runnableName The name of the runnable to update the log level.
diff --git a/twill-core/src/main/java/org/apache/twill/internal/AbstractTwillController.java b/twill-core/src/main/java/org/apache/twill/internal/AbstractTwillController.java
index e49a2ad..fd8a939 100644
--- a/twill-core/src/main/java/org/apache/twill/internal/AbstractTwillController.java
+++ b/twill-core/src/main/java/org/apache/twill/internal/AbstractTwillController.java
@@ -188,12 +188,17 @@
       instanceIds.add(id);
     }
 
+    return restartInstances(runnable, instanceIds);
+  }
+
+  @Override
+  public ListenableFuture<String> restartInstances(final String runnable, Set<Integer> instanceIds) {
     return Futures.transform(restartInstances(ImmutableMap.of(runnable, instanceIds)),
                              new Function<Set<String>, String>() {
-      public String apply(Set<String> input) {
-        return runnable;
-      }
-    });
+                               public String apply(Set<String> input) {
+                                 return runnable;
+                               }
+                             });
   }
 
   @Override