Modify DiscreteResourceCodec interface

This is for ONOS-4281

Change-Id: Idaa4e3666946ebf1a76abfeb54c626dfb50082c4
(cherry picked from commit 81b75a9e00061d655b2cfbdb8c734753b2bb8c09)
diff --git a/core/api/src/main/java/org/onosproject/net/resource/MplsCodec.java b/core/api/src/main/java/org/onosproject/net/resource/MplsCodec.java
index 8187d94..4e651b5 100644
--- a/core/api/src/main/java/org/onosproject/net/resource/MplsCodec.java
+++ b/core/api/src/main/java/org/onosproject/net/resource/MplsCodec.java
@@ -18,25 +18,19 @@
 import com.google.common.annotations.Beta;
 import org.onlab.packet.MplsLabel;
 
-import java.util.Optional;
-
-import static com.google.common.base.Preconditions.checkArgument;
-
 /**
  * Codec for MplsLabel.
  */
 @Beta
-public final class MplsCodec implements DiscreteResourceCodec {
+public final class MplsCodec implements DiscreteResourceCodec<MplsLabel> {
     @Override
-    public int encode(DiscreteResource resource) {
-        Optional<MplsLabel> mpls = resource.valueAs(MplsLabel.class);
-        checkArgument(mpls.isPresent());
-        return mpls.map(MplsLabel::toInt).get();
+    public int encode(MplsLabel resource) {
+        return resource.toInt();
     }
 
     @Override
-    public DiscreteResource decode(DiscreteResourceId parent, int value) {
-        return Resources.discrete(parent, MplsLabel.mplsLabel(value)).resource();
+    public MplsLabel decode(int value) {
+        return MplsLabel.mplsLabel(value);
     }
 
     @Override