Make resource retrieval more efficient when specifing resource type

This resolves ONOS-4666

Change-Id: I9d09b60531ca48b36fc20f43498cda62f1badb8b
diff --git a/core/store/dist/src/main/java/org/onosproject/store/resource/impl/EncodableDiscreteResources.java b/core/store/dist/src/main/java/org/onosproject/store/resource/impl/EncodableDiscreteResources.java
index 25ec5a7..512b233 100644
--- a/core/store/dist/src/main/java/org/onosproject/store/resource/impl/EncodableDiscreteResources.java
+++ b/core/store/dist/src/main/java/org/onosproject/store/resource/impl/EncodableDiscreteResources.java
@@ -16,6 +16,7 @@
 package org.onosproject.store.resource.impl;
 
 import com.google.common.base.MoreObjects;
+import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.Sets;
 import org.onosproject.net.resource.DiscreteResource;
 import org.onosproject.net.resource.DiscreteResourceCodec;
@@ -114,6 +115,13 @@
                 .collect(Collectors.toCollection(LinkedHashSet::new));
     }
 
+    @Override
+    public <T> Set<DiscreteResource> valuesOf(Class<T> cls) {
+        return Optional.ofNullable(values.get(cls))
+                .map(x -> x.values(parent.id()))
+                .orElse(ImmutableSet.of());
+    }
+
     DiscreteResource parent() {
         return parent;
     }