summaryrefslogtreecommitdiff
path: root/java/com/android/dialer/commandline/Command.java
diff options
context:
space:
mode:
authortwyen <twyen@google.com>2018-01-22 11:52:16 -0800
committerCopybara-Service <copybara-piper@google.com>2018-01-22 16:09:10 -0800
commit2ccd4a1f40d371100b94c676c4c39c97829e153b (patch)
treeee28671edd68e76221e220fa5fb5ae3f00fe73e6 /java/com/android/dialer/commandline/Command.java
parente5a20898faa4c66758a30d12e9245f15d6685a37 (diff)
Implement blocking commands
Test: Unit tests PiperOrigin-RevId: 182813080 Change-Id: I952f49352fb57c02c4efb9cc4ede84dc7c32c893
Diffstat (limited to 'java/com/android/dialer/commandline/Command.java')
-rw-r--r--java/com/android/dialer/commandline/Command.java20
1 files changed, 18 insertions, 2 deletions
diff --git a/java/com/android/dialer/commandline/Command.java b/java/com/android/dialer/commandline/Command.java
index 5a35d4002..83618a255 100644
--- a/java/com/android/dialer/commandline/Command.java
+++ b/java/com/android/dialer/commandline/Command.java
@@ -17,15 +17,31 @@
package com.android.dialer.commandline;
import android.support.annotation.NonNull;
-import com.google.common.collect.ImmutableList;
import com.google.common.util.concurrent.ListenableFuture;
/** Handles a Command from {@link CommandLineReceiver}. */
public interface Command {
- ListenableFuture<String> run(ImmutableList<String> args);
+ /**
+ * Thrown when {@code args} in {@link #run(Arguments)} does not match the expected format. The
+ * commandline will print {@code message} and {@link #getUsage()}.
+ */
+ class IllegalCommandLineArgumentException extends Exception {
+ public IllegalCommandLineArgumentException(String message) {
+ super(message);
+ }
+ }
/** Describe the command when "help" is listing available commands. */
@NonNull
String getShortDescription();
+
+ /**
+ * Call when 'command --help' is called or when {@link IllegalCommandLineArgumentException} is
+ * thrown to inform the user how should the command be used.
+ */
+ @NonNull
+ String getUsage();
+
+ ListenableFuture<String> run(Arguments args) throws IllegalCommandLineArgumentException;
}