Fix for the ONOS-4836

Change-Id: Iedf597bb79f27ca7834e85fc445ebd5736c852a7
diff --git a/core/common/src/main/java/org/onosproject/codec/impl/FilteringObjectiveCodec.java b/core/common/src/main/java/org/onosproject/codec/impl/FilteringObjectiveCodec.java
index 673e4c8..c5b7462 100644
--- a/core/common/src/main/java/org/onosproject/codec/impl/FilteringObjectiveCodec.java
+++ b/core/common/src/main/java/org/onosproject/codec/impl/FilteringObjectiveCodec.java
@@ -53,10 +53,6 @@
             " member is required in FilteringObjective";
     private static final String NOT_NULL_MESSAGE =
             "FilteringObjective cannot be null";
-    private static final String INVALID_TYPE_MESSAGE =
-            "The requested type {} is not defined in FilteringObjective.";
-    private static final String INVALID_OP_MESSAGE =
-            "The requested operation {} is not defined for FilteringObjective.";
 
     public static final String REST_APP_ID = "org.onosproject.rest";
 
@@ -136,8 +132,8 @@
                 builder.deny();
                 break;
             default:
-                log.warn(INVALID_TYPE_MESSAGE, typeStr);
-                return null;
+                throw new IllegalArgumentException("The requested type " + typeStr +
+                " is not defined for FilteringObjective.");
         }
 
         // decode key
@@ -176,8 +172,8 @@
                 filteringObjective = builder.remove();
                 break;
             default:
-                log.warn(INVALID_OP_MESSAGE, opStr);
-                return null;
+                throw new IllegalArgumentException("The requested operation " + opStr +
+                " is not defined for FilteringObjective.");
         }
 
         return filteringObjective;
diff --git a/core/common/src/main/java/org/onosproject/codec/impl/ForwardingObjectiveCodec.java b/core/common/src/main/java/org/onosproject/codec/impl/ForwardingObjectiveCodec.java
index 864756a..ad198c9 100644
--- a/core/common/src/main/java/org/onosproject/codec/impl/ForwardingObjectiveCodec.java
+++ b/core/common/src/main/java/org/onosproject/codec/impl/ForwardingObjectiveCodec.java
@@ -50,10 +50,6 @@
             " member is required in ForwardingObjective";
     private static final String NOT_NULL_MESSAGE =
             "ForwardingObjective cannot be null";
-    private static final String INVALID_FLAG_MESSAGE =
-            "The requested flag {} is not defined in ForwardingObjective.";
-    private static final String INVALID_OP_MESSAGE =
-            "The requested operation {} is not defined for FilteringObjective.";
 
     public static final String REST_APP_ID = "org.onosproject.rest";
 
@@ -130,8 +126,8 @@
                 builder.withFlag(ForwardingObjective.Flag.VERSATILE);
                 break;
             default:
-                log.warn(INVALID_FLAG_MESSAGE, flagStr);
-                return null;
+                throw new IllegalArgumentException("The requested flag " + flagStr +
+                " is not defined for FilteringObjective.");
         }
 
         // decode selector
@@ -156,7 +152,7 @@
 
         // decode operation
         String opStr = nullIsIllegal(json.get(OPERATION), OPERATION + MISSING_MEMBER_MESSAGE).asText();
-        ForwardingObjective forwardingObjective;
+        ForwardingObjective forwardingObjective = null;
 
         switch (opStr) {
             case "ADD":
@@ -166,8 +162,8 @@
                 forwardingObjective = builder.remove();
                 break;
             default:
-                log.warn(INVALID_OP_MESSAGE, opStr);
-                return null;
+                throw new IllegalArgumentException("The requested operation " + opStr +
+                " is not defined for FilteringObjective.");
         }
 
         return forwardingObjective;
diff --git a/core/common/src/main/java/org/onosproject/codec/impl/NextObjectiveCodec.java b/core/common/src/main/java/org/onosproject/codec/impl/NextObjectiveCodec.java
index a58ad3f..6b2ad899 100644
--- a/core/common/src/main/java/org/onosproject/codec/impl/NextObjectiveCodec.java
+++ b/core/common/src/main/java/org/onosproject/codec/impl/NextObjectiveCodec.java
@@ -53,10 +53,6 @@
             " member is required in NextObjective";
     private static final String NOT_NULL_MESSAGE =
             "NextObjective cannot be null";
-    private static final String INVALID_TYPE_MESSAGE =
-            "The requested flag {} is not defined in NextObjective.";
-    private static final String INVALID_OP_MESSAGE =
-            "The requested operation {} is not defined for NextObjective.";
 
     public static final String REST_APP_ID = "org.onosproject.rest";
 
@@ -142,8 +138,8 @@
                 builder.withType(NextObjective.Type.SIMPLE);
                 break;
             default:
-                log.warn(INVALID_TYPE_MESSAGE, typeStr);
-                return null;
+                throw new IllegalArgumentException("The requested type " + typeStr +
+                " is not defined for FilteringObjective.");
         }
 
         // decode treatments
@@ -175,8 +171,8 @@
                 nextObjective = builder.remove();
                 break;
             default:
-                log.warn(INVALID_OP_MESSAGE, opStr);
-                return null;
+                throw new IllegalArgumentException("The requested operation " + opStr +
+                " is not defined for FilteringObjective.");
         }
 
         return nextObjective;
diff --git a/web/api/src/main/resources/definitions/NextObjective.json b/web/api/src/main/resources/definitions/NextObjective.json
index adbcfc7..d5ab7d7 100644
--- a/web/api/src/main/resources/definitions/NextObjective.json
+++ b/web/api/src/main/resources/definitions/NextObjective.json
@@ -3,6 +3,7 @@
   "title": "nextObjective",
   "required": [
     "type",
+    "id",
     "priority",
     "timeout",
     "isPermanent",
@@ -16,6 +17,11 @@
       "type": "string",
       "example": "HASHED"
     },
+    "id": {
+      "type": "integer",
+      "format": "int64",
+      "example": 1
+    },
     "priority": {
       "type": "integer",
       "format": "int64",
@@ -308,4 +314,4 @@
       }
     }
   }
-}
\ No newline at end of file
+}