Enhance the behaviour of ProtectionConfigBehaviour

Change-Id: I5e2505cc1db3b97c78703a6c138d04abc232d65b
diff --git a/core/api/src/main/java/org/onosproject/net/behaviour/protection/ProtectionConfigBehaviour.java b/core/api/src/main/java/org/onosproject/net/behaviour/protection/ProtectionConfigBehaviour.java
index d56a969..5464201 100644
--- a/core/api/src/main/java/org/onosproject/net/behaviour/protection/ProtectionConfigBehaviour.java
+++ b/core/api/src/main/java/org/onosproject/net/behaviour/protection/ProtectionConfigBehaviour.java
@@ -161,7 +161,48 @@
      * @return Completes if request was accepted, fails exceptionally on error.
      *         Note: completion does not always assure working path has switched.
      */
+    @Deprecated
     CompletableFuture<Void> switchWorkingPath(ConnectPoint identifier, int index);
 
+    /**
+     * Attempts to forcibly switch to the one specified path by {@code index}.
+     *
+     * @param identifier {@link ConnectPoint} for the virtual Port representing
+     *                     protected path endpoint
+     * @param index path index to switch to
+     * @return Completes if request was accepted, fails exceptionally on error.
+     *         Note: completion does not always assure working path has switched.
+     */
+    default CompletableFuture<Void> switchToForce(ConnectPoint identifier, int index) {
+        return CompletableFuture.completedFuture(null);
+    }
+
+    /**
+     * Attempts to manually switch to the one specified path by {@code index}.
+     * This operation would be rejected if the specified path is a fault path.
+     *
+     * @param identifier {@link ConnectPoint} for the virtual Port representing
+     *                     protected path endpoint
+     * @param index path index to switch to
+     * @return Completes if request was accepted, fails exceptionally on error.
+     *         Note: completion does not always assure working path has switched.
+     */
+    default CompletableFuture<Void> switchToManual(ConnectPoint identifier, int index) {
+        return switchWorkingPath(identifier, index);
+    }
+
+    /**
+     * Attempts to set the device to automatic protection mode.
+     *
+     * @param identifier {@link ConnectPoint} for the virtual Port representing
+     *                     protected path endpoint
+     * @return Completes if request was accepted, fails exceptionally on error.
+     */
+    default CompletableFuture<Void> switchToAutomatic(ConnectPoint identifier) {
+        CompletableFuture<Void> future = new CompletableFuture<>();
+        future.completeExceptionally(new UnsupportedOperationException());
+        return future;
+    }
+
     // TODO How to let one listen to async events? e.g., working path changed event
 }