Fix NullPointerException with -s flag; add -s message

Change-Id: I6bc1e2326d0d260a0469e64b8d0ec2937694534c
diff --git a/cli/src/main/java/org/onosproject/cli/net/IntentRemoveCommand.java b/cli/src/main/java/org/onosproject/cli/net/IntentRemoveCommand.java
index 4181dd4..e7097f2 100644
--- a/cli/src/main/java/org/onosproject/cli/net/IntentRemoveCommand.java
+++ b/cli/src/main/java/org/onosproject/cli/net/IntentRemoveCommand.java
@@ -22,13 +22,14 @@
 import org.onosproject.core.ApplicationId;
 import org.onosproject.core.CoreService;
 import org.onosproject.net.intent.Intent;
-import org.onosproject.net.intent.IntentEvent;
-import org.onosproject.net.intent.IntentListener;
-import org.onosproject.net.intent.IntentService;
 import org.onosproject.net.intent.IntentState;
+import org.onosproject.net.intent.IntentService;
+import org.onosproject.net.intent.IntentListener;
+import org.onosproject.net.intent.IntentEvent;
 import org.onosproject.net.intent.Key;
 
 import java.math.BigInteger;
+import java.util.EnumSet;
 import java.util.Objects;
 import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.TimeUnit;
@@ -64,11 +65,18 @@
             required = false, multiValued = false)
     private boolean sync = false;
 
+    private static final EnumSet<IntentState> CAN_PURGE = EnumSet.of(WITHDRAWN, FAILED);
+
     @Override
     protected void execute() {
         IntentService intentService = get(IntentService.class);
         CoreService coreService = get(CoreService.class);
 
+        if (sync) {
+            print("Use Sync to remove intents - this may take a while...");
+            print("Check \"summary\" to see remove progress.");
+        }
+
         ApplicationId appId = appId();
         if (!isNullOrEmpty(applicationIdString)) {
             appId = coreService.getAppId(applicationIdString);
@@ -137,21 +145,19 @@
             } catch (InterruptedException e) {
                 print("Timed out waiting for intent {} withdraw", key);
             }
-            // double check the state
-            IntentState state = intentService.getIntentState(key);
-            if (purgeAfterRemove && (state == WITHDRAWN || state == FAILED)) {
+            if (purgeAfterRemove && CAN_PURGE.contains(intentService.getIntentState(key))) {
                 intentService.purge(intent);
-            }
-            if (sync) { // wait for purge event
+                if (sync) { // wait for purge event
                     /* TODO
                        Technically, the event comes before map.remove() is called.
                        If we depend on sync and purge working together, we will
                        need to address this.
                     */
-                try {
-                    purgeLatch.await(5, TimeUnit.SECONDS);
-                } catch (InterruptedException e) {
-                    print("Timed out waiting for intent {} purge", key);
+                    try {
+                        purgeLatch.await(5, TimeUnit.SECONDS);
+                    } catch (InterruptedException e) {
+                        print("Timed out waiting for intent {} purge", key);
+                    }
                 }
             }
         }