Performance improvement in deserialization of EncodableDiscreteResources

Over 1500x faster. This is for ONOS-4698

Before this patch
Benchmark                                   Mode  Cnt     Score   Error  Units
VlanSetSerialize.deserialize_compact_vlans  avgt  200  1681.625 ± 8.937  us/op
VlanSetSerialize.serialize_compact_vlans    avgt  200     1.532 ± 0.017  us/op

After this patch
Benchmark                                   Mode  Cnt  Score   Error  Units
VlanSetSerialize.deserialize_compact_vlans  avgt  200  1.070 ± 0.012  us/op
VlanSetSerialize.serialize_compact_vlans    avgt  200  1.613 ± 0.014  us/op

Change-Id: I2f00f7fbf25ee36555751e0bcff95d06b701f8c8
diff --git a/core/store/dist/src/main/java/org/onosproject/store/resource/impl/EncodableDiscreteResourcesSerializer.java b/core/store/dist/src/main/java/org/onosproject/store/resource/impl/EncodableDiscreteResourcesSerializer.java
index 8c39e31..83bc342 100644
--- a/core/store/dist/src/main/java/org/onosproject/store/resource/impl/EncodableDiscreteResourcesSerializer.java
+++ b/core/store/dist/src/main/java/org/onosproject/store/resource/impl/EncodableDiscreteResourcesSerializer.java
@@ -21,8 +21,10 @@
 import com.esotericsoftware.kryo.io.Output;
 import org.onosproject.net.resource.DiscreteResource;
 
+import java.util.LinkedHashMap;
 import java.util.LinkedHashSet;
 import java.util.Set;
+import java.util.function.Function;
 import java.util.stream.Collectors;
 
 /**
@@ -41,9 +43,11 @@
         @SuppressWarnings("unchecked")
         Set<EncodedDiscreteResources> resources = kryo.readObject(input, LinkedHashSet.class);
 
-        return EncodableDiscreteResources.of(parent,
-                resources.stream()
-                        .flatMap(x -> x.values(parent.id()).stream())
-                        .collect(Collectors.toCollection(LinkedHashSet::new)));
+        return new EncodableDiscreteResources(parent, resources.stream()
+                .collect(Collectors.toMap(
+                        EncodedDiscreteResources::encodedClass,
+                        Function.identity(),
+                        (v1, v2) -> v1,
+                        LinkedHashMap::new)));
     }
 }