Compaction of discrete resources with range based representation

This resolves ONOS-4281

Change-Id: I0739ba94cc0b3ce617e2db44307fef396dcfb942
(cherry picked from commit 34e2c1c223ec62c85c2613c0d899a0cc06b63f33)
diff --git a/core/store/dist/src/main/java/org/onosproject/store/resource/impl/NonEncodableDiscreteResources.java b/core/store/dist/src/main/java/org/onosproject/store/resource/impl/NonEncodableDiscreteResources.java
index 7b991b4..333a40b 100644
--- a/core/store/dist/src/main/java/org/onosproject/store/resource/impl/NonEncodableDiscreteResources.java
+++ b/core/store/dist/src/main/java/org/onosproject/store/resource/impl/NonEncodableDiscreteResources.java
@@ -30,26 +30,23 @@
 final class NonEncodableDiscreteResources implements DiscreteResources {
     private final Set<DiscreteResource> values;
 
-    static NonEncodableDiscreteResources empty() {
-        return new NonEncodableDiscreteResources();
-    }
+    static DiscreteResources of(Set<DiscreteResource> resources) {
+        if (resources.isEmpty()) {
+            return DiscreteResources.empty();
+        }
 
-    static NonEncodableDiscreteResources of(List<DiscreteResource> resources) {
         return new NonEncodableDiscreteResources(resources);
     }
 
-    private NonEncodableDiscreteResources() {
-        this.values = new LinkedHashSet<>();
-    }
-
-    private NonEncodableDiscreteResources(List<DiscreteResource> values) {
-        this.values = new LinkedHashSet<>(values);
-    }
-
     private NonEncodableDiscreteResources(Set<DiscreteResource> values) {
         this.values = values;
     }
 
+    // for serializer
+    private NonEncodableDiscreteResources() {
+        this.values = null;
+    }
+
     @Override
     public Optional<DiscreteResource> lookup(DiscreteResourceId id) {
         DiscreteResource resource = Resources.discrete(id).resource();