Refactoring of IntentId based APIs

- getIntent
- getIntentState
- getInstallableIntents

Change-Id: I6d2073dfa165e0e5adcef46fe5908b563b481a43
diff --git a/core/api/src/main/java/org/onosproject/net/intent/IntentService.java b/core/api/src/main/java/org/onosproject/net/intent/IntentService.java
index 20a06fa..2db280f 100644
--- a/core/api/src/main/java/org/onosproject/net/intent/IntentService.java
+++ b/core/api/src/main/java/org/onosproject/net/intent/IntentService.java
@@ -43,6 +43,14 @@
     void withdraw(Intent intent);
 
     /**
+     * Fetches an intent based on its key.
+     *
+     * @param key key of the intent
+     * @return intent object if the key is found, null otherwise
+     */
+    public Intent getIntent(Key key);
+
+    /**
      * Returns an iterable of intents currently in the system.
      *
      * @return set of intents
@@ -57,30 +65,22 @@
     long getIntentCount();
 
     /**
-     * Retrieves the intent specified by its identifier.
-     *
-     * @param id intent identifier
-     * @return the intent or null if one with the given identifier is not found
-     */
-    Intent getIntent(IntentId id);
-
-    /**
      * Retrieves the state of an intent by its identifier.
      *
-     * @param id intent identifier
+     * @param intentKey intent identifier
      * @return the intent state or null if one with the given identifier is not
      * found
      */
-    IntentState getIntentState(IntentId id);
+    IntentState getIntentState(Key intentKey);
 
     /**
      * Returns the list of the installable events associated with the specified
      * top-level intent.
      *
-     * @param intentId top-level intent identifier
+     * @param intentKey top-level intent identifier
      * @return compiled installable intents
      */
-    List<Intent> getInstallableIntents(IntentId intentId);
+    List<Intent> getInstallableIntents(Key intentKey);
 
     /**
      * Adds the specified listener for intent events.
diff --git a/core/api/src/main/java/org/onosproject/net/intent/IntentStore.java b/core/api/src/main/java/org/onosproject/net/intent/IntentStore.java
index e5942f1..ceb5493 100644
--- a/core/api/src/main/java/org/onosproject/net/intent/IntentStore.java
+++ b/core/api/src/main/java/org/onosproject/net/intent/IntentStore.java
@@ -40,37 +40,24 @@
     Iterable<Intent> getIntents();
 
     /**
-     * Returns the intent with the specified identifier.
-     *
-     * @param intentId intent identification
-     * @return intent or null if not found
-     */
-    @Deprecated
-    default Intent getIntent(IntentId intentId) {
-        throw new UnsupportedOperationException("deprecated");
-    }
-
-    /**
      * Returns the state of the specified intent.
      *
-     * @param intentId intent identification
+     * @param intentKey intent identification
      * @return current intent state
      */
-    @Deprecated
-    default IntentState getIntentState(IntentId intentId) {
-        throw new UnsupportedOperationException("deprecated");
+    default IntentState getIntentState(Key intentKey) {
+        return null;
     }
 
     /**
      * Returns the list of the installable events associated with the specified
      * original intent.
      *
-     * @param intentId original intent identifier
+     * @param intentKey original intent identifier
      * @return compiled installable intents
      */
-    @Deprecated
-    default List<Intent> getInstallableIntents(IntentId intentId) {
-        throw new UnsupportedOperationException("deprecated");
+    default List<Intent> getInstallableIntents(Key intentKey) {
+        throw new UnsupportedOperationException("getInstallableIntents()");
     }
 
     /**
@@ -92,7 +79,8 @@
      * @param key key
      * @return intent or null if not found
      */
-    default Intent getIntent(Key key) { //FIXME remove when impl.
+    default Intent getIntent(Key key) {
+        // FIXME remove this default implementation when all stores have implemented it
         return null;
     }
 
diff --git a/core/api/src/test/java/org/onosproject/net/intent/FakeIntentManager.java b/core/api/src/test/java/org/onosproject/net/intent/FakeIntentManager.java
index 4cdb674..c1b7886 100644
--- a/core/api/src/test/java/org/onosproject/net/intent/FakeIntentManager.java
+++ b/core/api/src/test/java/org/onosproject/net/intent/FakeIntentManager.java
@@ -196,18 +196,18 @@
     }
 
     @Override
-    public Intent getIntent(IntentId id) {
-        return intents.get(id);
+    public Intent getIntent(Key intentKey) {
+        return intents.get(intentKey);
     }
 
     @Override
-    public IntentState getIntentState(IntentId id) {
-        return intentStates.get(id);
+    public IntentState getIntentState(Key intentKey) {
+        return intentStates.get(intentKey);
     }
 
     @Override
-    public List<Intent> getInstallableIntents(IntentId intentId) {
-        return installables.get(intentId);
+    public List<Intent> getInstallableIntents(Key intentKey) {
+        return installables.get(intentKey);
     }
 
     @Override
diff --git a/core/api/src/test/java/org/onosproject/net/intent/IntentServiceAdapter.java b/core/api/src/test/java/org/onosproject/net/intent/IntentServiceAdapter.java
index 9441fa4..d600dde 100644
--- a/core/api/src/test/java/org/onosproject/net/intent/IntentServiceAdapter.java
+++ b/core/api/src/test/java/org/onosproject/net/intent/IntentServiceAdapter.java
@@ -43,17 +43,17 @@
     }
 
     @Override
-    public Intent getIntent(IntentId id) {
+    public Intent getIntent(Key intentKey) {
         return null;
     }
 
     @Override
-    public IntentState getIntentState(IntentId id) {
+    public IntentState getIntentState(Key intentKey) {
         return null;
     }
 
     @Override
-    public List<Intent> getInstallableIntents(IntentId intentId) {
+    public List<Intent> getInstallableIntents(Key intentKey) {
         return null;
     }
 
diff --git a/core/api/src/test/java/org/onosproject/net/intent/IntentServiceTest.java b/core/api/src/test/java/org/onosproject/net/intent/IntentServiceTest.java
index 9dce4f1..7ae00aa 100644
--- a/core/api/src/test/java/org/onosproject/net/intent/IntentServiceTest.java
+++ b/core/api/src/test/java/org/onosproject/net/intent/IntentServiceTest.java
@@ -91,7 +91,7 @@
             @Override
             public void run() {
                 assertEquals("incorrect intent state", IntentState.INSTALLED,
-                             service.getIntentState(intent.id()));
+                             service.getIntentState(intent.key()));
             }
         });
 
@@ -112,7 +112,7 @@
             @Override
             public void run() {
                 assertEquals("incorrect intent state", IntentState.WITHDRAWN,
-                             service.getIntentState(intent.id()));
+                             service.getIntentState(intent.key()));
             }
         });
 
@@ -140,7 +140,7 @@
             @Override
             public void run() {
                 assertEquals("incorrect intent state", IntentState.FAILED,
-                             service.getIntentState(intent.id()));
+                             service.getIntentState(intent.key()));
             }
         });
 
@@ -163,7 +163,7 @@
             @Override
             public void run() {
                 assertEquals("incorrect intent state", IntentState.FAILED,
-                             service.getIntentState(intent.id()));
+                             service.getIntentState(intent.key()));
             }
         });
 
@@ -255,7 +255,7 @@
             @Override
             public void run() {
                 assertEquals("incorrect intent state", IntentState.INSTALLED,
-                             service.getIntentState(intent.id()));
+                             service.getIntentState(intent.key()));
             }
         });
 
diff --git a/core/net/src/main/java/org/onosproject/net/intent/impl/IntentManager.java b/core/net/src/main/java/org/onosproject/net/intent/impl/IntentManager.java
index 3603a50..a0cc741 100644
--- a/core/net/src/main/java/org/onosproject/net/intent/impl/IntentManager.java
+++ b/core/net/src/main/java/org/onosproject/net/intent/impl/IntentManager.java
@@ -40,13 +40,13 @@
 import org.onosproject.net.intent.IntentEvent;
 import org.onosproject.net.intent.IntentException;
 import org.onosproject.net.intent.IntentExtensionService;
-import org.onosproject.net.intent.IntentId;
 import org.onosproject.net.intent.IntentInstaller;
 import org.onosproject.net.intent.IntentListener;
 import org.onosproject.net.intent.IntentService;
 import org.onosproject.net.intent.IntentState;
 import org.onosproject.net.intent.IntentStore;
 import org.onosproject.net.intent.IntentStoreDelegate;
+import org.onosproject.net.intent.Key;
 import org.slf4j.Logger;
 
 import java.util.ArrayList;
@@ -81,7 +81,7 @@
     private static final Logger log = getLogger(IntentManager.class);
 
     public static final String INTENT_NULL = "Intent cannot be null";
-    public static final String INTENT_ID_NULL = "Intent ID cannot be null";
+    public static final String INTENT_ID_NULL = "Intent key cannot be null";
 
     private static final int NUM_THREADS = 12;
 
@@ -163,6 +163,11 @@
     }
 
     @Override
+    public Intent getIntent(Key key) {
+        return store.getIntent(key);
+    }
+
+    @Override
     public Iterable<Intent> getIntents() {
         return store.getIntents();
     }
@@ -173,21 +178,15 @@
     }
 
     @Override
-    public Intent getIntent(IntentId id) {
-        checkNotNull(id, INTENT_ID_NULL);
-        return store.getIntent(id);
+    public IntentState getIntentState(Key intentKey) {
+        checkNotNull(intentKey, INTENT_ID_NULL);
+        return store.getIntentState(intentKey);
     }
 
     @Override
-    public IntentState getIntentState(IntentId id) {
-        checkNotNull(id, INTENT_ID_NULL);
-        return store.getIntentState(id);
-    }
-
-    @Override
-    public List<Intent> getInstallableIntents(IntentId intentId) {
-        checkNotNull(intentId, INTENT_ID_NULL);
-        return store.getInstallableIntents(intentId);
+    public List<Intent> getInstallableIntents(Key intentKey) {
+        checkNotNull(intentKey, INTENT_ID_NULL);
+        return store.getInstallableIntents(intentKey);
     }
 
     @Override
@@ -446,11 +445,11 @@
         }
     }
 
-    private void buildAndSubmitBatches(Iterable<IntentId> intentIds,
+    private void buildAndSubmitBatches(Iterable<Key> intentKeys,
                                        boolean compileAllFailed) {
         // Attempt recompilation of the specified intents first.
-        for (IntentId id : intentIds) {
-            Intent intent = store.getIntent(id);
+        for (Key key : intentKeys) {
+            Intent intent = store.getIntent(key);
             if (intent == null) {
                 continue;
             }
@@ -460,7 +459,7 @@
         if (compileAllFailed) {
             // If required, compile all currently failed intents.
             for (Intent intent : getIntents()) {
-                IntentState state = getIntentState(intent.id());
+                IntentState state = getIntentState(intent.key());
                 if (RECOMPILE.contains(state)) {
                     if (state == WITHDRAW_REQ) {
                         withdraw(intent);
@@ -482,9 +481,9 @@
     // Topology change delegate
     private class InternalTopoChangeDelegate implements TopologyChangeDelegate {
         @Override
-        public void triggerCompile(Iterable<IntentId> intentIds,
+        public void triggerCompile(Iterable<Key> intentKeys,
                                    boolean compileAllFailed) {
-            buildAndSubmitBatches(intentIds, compileAllFailed);
+            buildAndSubmitBatches(intentKeys, compileAllFailed);
         }
     }
 
diff --git a/core/net/src/main/java/org/onosproject/net/intent/impl/ObjectiveTracker.java b/core/net/src/main/java/org/onosproject/net/intent/impl/ObjectiveTracker.java
index aabcc28..3c7b733 100644
--- a/core/net/src/main/java/org/onosproject/net/intent/impl/ObjectiveTracker.java
+++ b/core/net/src/main/java/org/onosproject/net/intent/impl/ObjectiveTracker.java
@@ -29,8 +29,8 @@
 import org.onosproject.net.Link;
 import org.onosproject.net.LinkKey;
 import org.onosproject.net.NetworkResource;
-import org.onosproject.net.intent.IntentId;
 import org.onosproject.net.intent.IntentService;
+import org.onosproject.net.intent.Key;
 import org.onosproject.net.link.LinkEvent;
 import org.onosproject.net.resource.LinkResourceEvent;
 import org.onosproject.net.resource.LinkResourceListener;
@@ -65,8 +65,8 @@
 
     private final Logger log = getLogger(getClass());
 
-    private final SetMultimap<LinkKey, IntentId> intentsByLink =
-            synchronizedSetMultimap(HashMultimap.<LinkKey, IntentId>create());
+    private final SetMultimap<LinkKey, Key> intentsByLink =
+            synchronizedSetMultimap(HashMultimap.<LinkKey, Key>create());
 
     @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
     protected TopologyService topologyService;
@@ -126,21 +126,21 @@
     }
 
     @Override
-    public void addTrackedResources(IntentId intentId,
+    public void addTrackedResources(Key intentKey,
                                     Collection<NetworkResource> resources) {
         for (NetworkResource resource : resources) {
             if (resource instanceof Link) {
-                intentsByLink.put(linkKey((Link) resource), intentId);
+                intentsByLink.put(linkKey((Link) resource), intentKey);
             }
         }
     }
 
     @Override
-    public void removeTrackedResources(IntentId intentId,
+    public void removeTrackedResources(Key intentKey,
                                        Collection<NetworkResource> resources) {
         for (NetworkResource resource : resources) {
             if (resource instanceof Link) {
-                intentsByLink.remove(linkKey((Link) resource), intentId);
+                intentsByLink.remove(linkKey((Link) resource), intentKey);
             }
         }
     }
@@ -170,10 +170,10 @@
             }
 
             if (event.reasons() == null || event.reasons().isEmpty()) {
-                delegate.triggerCompile(new HashSet<IntentId>(), true);
+                delegate.triggerCompile(new HashSet<Key>(), true);
 
             } else {
-                Set<IntentId> toBeRecompiled = new HashSet<>();
+                Set<Key> toBeRecompiled = new HashSet<>();
                 boolean recompileOnly = true;
 
                 // Scan through the list of reasons and keep accruing all
@@ -186,9 +186,9 @@
                                         linkEvent.subject().isDurable())) {
                             final LinkKey linkKey = linkKey(linkEvent.subject());
                             synchronized (intentsByLink) {
-                                Set<IntentId> intentIds = intentsByLink.get(linkKey);
-                                log.debug("recompile triggered by LinkDown {} {}", linkKey, intentIds);
-                                toBeRecompiled.addAll(intentIds);
+                                Set<Key> intentKeys = intentsByLink.get(linkKey);
+                                log.debug("recompile triggered by LinkDown {} {}", linkKey, intentKeys);
+                                toBeRecompiled.addAll(intentKeys);
                             }
                         }
                         recompileOnly = recompileOnly &&
@@ -243,15 +243,15 @@
         }
         intentService.getIntents().forEach(intent -> {
             if (intent.appId().equals(appId)) {
-                IntentId id = intent.id();
+                Key key = intent.key();
                 Collection<NetworkResource> resources = Lists.newArrayList();
-                intentService.getInstallableIntents(id).stream()
+                intentService.getInstallableIntents(key).stream()
                         .map(installable -> installable.resources())
                         .forEach(resources::addAll);
                 if (track) {
-                    addTrackedResources(id, resources);
+                    addTrackedResources(key, resources);
                 } else {
-                    removeTrackedResources(id, resources);
+                    removeTrackedResources(key, resources);
                 }
             }
         });
diff --git a/core/net/src/main/java/org/onosproject/net/intent/impl/ObjectiveTrackerService.java b/core/net/src/main/java/org/onosproject/net/intent/impl/ObjectiveTrackerService.java
index 404af9b..f1dfb94 100644
--- a/core/net/src/main/java/org/onosproject/net/intent/impl/ObjectiveTrackerService.java
+++ b/core/net/src/main/java/org/onosproject/net/intent/impl/ObjectiveTrackerService.java
@@ -15,11 +15,11 @@
  */
 package org.onosproject.net.intent.impl;
 
-import org.onosproject.net.NetworkResource;
-import org.onosproject.net.intent.IntentId;
-
 import java.util.Collection;
 
+import org.onosproject.net.NetworkResource;
+import org.onosproject.net.intent.Key;
+
 /**
  * Auxiliary service for tracking intent path flows and for notifying the
  * intent service of environment changes via topology change delegate.
@@ -43,19 +43,20 @@
     /**
      * Adds a path flow to be tracked.
      *
-     * @param intentId  intent identity on whose behalf the path is being tracked
+     * @param intentKey  intent identity on whose behalf the path is being tracked
      * @param resources resources to track
      */
-    public void addTrackedResources(IntentId intentId,
+    // TODO consider using the IntentData here rather than just the key
+    public void addTrackedResources(Key intentKey,
                                     Collection<NetworkResource> resources);
 
     /**
      * Removes a path flow to be tracked.
      *
-     * @param intentId  intent identity on whose behalf the path is being tracked
+     * @param intentKey  intent identity on whose behalf the path is being tracked
      * @param resources resources to stop tracking
      */
-    public void removeTrackedResources(IntentId intentId,
+    public void removeTrackedResources(Key intentKey,
                                        Collection<NetworkResource> resources);
 
 }
diff --git a/core/net/src/main/java/org/onosproject/net/intent/impl/TopologyChangeDelegate.java b/core/net/src/main/java/org/onosproject/net/intent/impl/TopologyChangeDelegate.java
index 5eeb7c2..3cc0f2a 100644
--- a/core/net/src/main/java/org/onosproject/net/intent/impl/TopologyChangeDelegate.java
+++ b/core/net/src/main/java/org/onosproject/net/intent/impl/TopologyChangeDelegate.java
@@ -15,7 +15,7 @@
  */
 package org.onosproject.net.intent.impl;
 
-import org.onosproject.net.intent.IntentId;
+import org.onosproject.net.intent.Key;
 
 /**
  * Auxiliary delegate for integration of intent manager and flow trackerService.
@@ -32,6 +32,6 @@
      * @param compileAllFailed true implies full compile of all failed intents
      *                         is required; false for selective recompile only
      */
-    void triggerCompile(Iterable<IntentId> intentIds, boolean compileAllFailed);
+    void triggerCompile(Iterable<Key> intentIds, boolean compileAllFailed);
 
 }
diff --git a/core/net/src/test/java/org/onosproject/net/intent/impl/IntentManagerTest.java b/core/net/src/test/java/org/onosproject/net/intent/impl/IntentManagerTest.java
index c55c3e8..5ff9c99 100644
--- a/core/net/src/test/java/org/onosproject/net/intent/impl/IntentManagerTest.java
+++ b/core/net/src/test/java/org/onosproject/net/intent/impl/IntentManagerTest.java
@@ -45,6 +45,7 @@
 import org.onosproject.net.intent.IntentService;
 import org.onosproject.net.intent.IntentState;
 import org.onosproject.net.intent.IntentTestsMocks;
+import org.onosproject.net.intent.Key;
 import org.onosproject.net.resource.LinkResourceAllocations;
 import org.onosproject.store.trivial.impl.SimpleIntentStore;
 
@@ -133,12 +134,12 @@
         }
 
         @Override
-        public void addTrackedResources(IntentId intentId, Collection<NetworkResource> resources) {
+        public void addTrackedResources(Key key, Collection<NetworkResource> resources) {
             //TODO
         }
 
         @Override
-        public void removeTrackedResources(IntentId intentId, Collection<NetworkResource> resources) {
+        public void removeTrackedResources(Key key, Collection<NetworkResource> resources) {
             //TODO
         }
     }
@@ -294,7 +295,7 @@
         // verify that all intents are parked and the batch operation is unblocked
         Set<IntentState> parked = Sets.newHashSet(INSTALLED, WITHDRAWN, FAILED);
         for (Intent i : service.getIntents()) {
-            IntentState state = service.getIntentState(i.id());
+            IntentState state = service.getIntentState(i.key());
             assertTrue("Intent " + i.id() + " is in invalid state " + state,
                        parked.contains(state));
         }
diff --git a/core/net/src/test/java/org/onosproject/net/intent/impl/ObjectiveTrackerTest.java b/core/net/src/test/java/org/onosproject/net/intent/impl/ObjectiveTrackerTest.java
index 02d206a..b324ae8 100644
--- a/core/net/src/test/java/org/onosproject/net/intent/impl/ObjectiveTrackerTest.java
+++ b/core/net/src/test/java/org/onosproject/net/intent/impl/ObjectiveTrackerTest.java
@@ -32,7 +32,7 @@
 import org.onosproject.net.Link;
 import org.onosproject.net.NetworkResource;
 import org.onosproject.net.intent.Intent;
-import org.onosproject.net.intent.IntentId;
+import org.onosproject.net.intent.Key;
 import org.onosproject.net.intent.MockIdGenerator;
 import org.onosproject.net.link.LinkEvent;
 import org.onosproject.net.resource.LinkResourceEvent;
@@ -49,6 +49,7 @@
 import static org.hamcrest.Matchers.equalTo;
 import static org.hamcrest.Matchers.hasSize;
 import static org.hamcrest.Matchers.is;
+import static org.onosproject.net.NetTestTools.APP_ID;
 import static org.onosproject.net.NetTestTools.link;
 
 /**
@@ -99,13 +100,13 @@
     static class TestTopologyChangeDelegate implements TopologyChangeDelegate {
 
         CountDownLatch latch = new CountDownLatch(1);
-        List<IntentId> intentIdsFromEvent;
+        List<Key> intentIdsFromEvent;
         boolean compileAllFailedFromEvent;
 
         @Override
-        public void triggerCompile(Iterable<IntentId> intentIds,
+        public void triggerCompile(Iterable<Key> intentKeys,
                                    boolean compileAllFailed) {
-            intentIdsFromEvent = Lists.newArrayList(intentIds);
+            intentIdsFromEvent = Lists.newArrayList(intentKeys);
             compileAllFailedFromEvent = compileAllFailed;
             latch.countDown();
         }
@@ -199,9 +200,9 @@
                 topology,
                 reasons);
 
-        final IntentId intentId = IntentId.valueOf(0x333L);
+        final Key key = Key.of(0x333L, APP_ID);
         Collection<NetworkResource> resources = ImmutableSet.of(link);
-        tracker.addTrackedResources(intentId, resources);
+        tracker.addTrackedResources(key, resources);
 
         listener.event(event);
         assertThat(
diff --git a/core/store/dist/src/main/java/org/onosproject/store/intent/impl/DistributedIntentStore.java b/core/store/dist/src/main/java/org/onosproject/store/intent/impl/DistributedIntentStore.java
index ef3b803..0d8c02a 100644
--- a/core/store/dist/src/main/java/org/onosproject/store/intent/impl/DistributedIntentStore.java
+++ b/core/store/dist/src/main/java/org/onosproject/store/intent/impl/DistributedIntentStore.java
@@ -40,6 +40,7 @@
 import org.onosproject.net.intent.IntentState;
 import org.onosproject.net.intent.IntentStore;
 import org.onosproject.net.intent.IntentStoreDelegate;
+import org.onosproject.net.intent.Key;
 import org.onosproject.store.AbstractStore;
 import org.onosproject.store.serializers.KryoNamespaces;
 import org.onosproject.store.serializers.KryoSerializer;
@@ -202,6 +203,10 @@
     }
 
     @Override
+    public Intent getIntent(Key intentKey) {
+        return null;
+    }
+
     public Intent getIntent(IntentId intentId) {
         Context timer = startTimer(getIntentTimer);
         try {
@@ -212,7 +217,10 @@
     }
 
     @Override
-    public IntentState getIntentState(IntentId id) {
+    public IntentState getIntentState(Key key) {
+        // TODO: either implement this or remove the class
+        return IntentState.FAILED;
+        /*
         Context timer = startTimer(getIntentStateTimer);
         try {
             final IntentState localState = transientStates.get(id);
@@ -223,6 +231,7 @@
         } finally {
             stopTimer(timer);
         }
+        */
     }
 
     private void verify(boolean expression, String errorMessageTemplate, Object... errorMessageArgs) {
@@ -236,13 +245,17 @@
     }
 
     @Override
-    public List<Intent> getInstallableIntents(IntentId intentId) {
+    public List<Intent> getInstallableIntents(Key intentKey) {
+        // TODO: implement this or delete class
+        return null;
+        /*
         Context timer = startTimer(getInstallableIntentsTimer);
         try {
             return installable.get(intentId);
         } finally {
             stopTimer(timer);
         }
+        */
     }
 
     protected String strIntentId(IntentId key) {
diff --git a/core/store/dist/src/main/java/org/onosproject/store/intent/impl/GossipIntentStore.java b/core/store/dist/src/main/java/org/onosproject/store/intent/impl/GossipIntentStore.java
index f3917c9..051a01c 100644
--- a/core/store/dist/src/main/java/org/onosproject/store/intent/impl/GossipIntentStore.java
+++ b/core/store/dist/src/main/java/org/onosproject/store/intent/impl/GossipIntentStore.java
@@ -137,18 +137,29 @@
     }
 
     @Override
+    public Intent getIntent(Key intentKey) {
+        // TODO: Implement this
+        return null;
+    }
+
+
     public Intent getIntent(IntentId intentId) {
         return intents.get(intentId);
     }
 
     @Override
-    public IntentState getIntentState(IntentId intentId) {
-        return intentStates.get(intentId);
+    public IntentState getIntentState(Key intentKey) {
+        // TODO: implement this
+        return IntentState.FAILED;
     }
 
     @Override
-    public List<Intent> getInstallableIntents(IntentId intentId) {
+    public List<Intent> getInstallableIntents(Key intentKey) {
+        // TODO: implement this or delete class
+        return null;
+        /*
         return installables.get(intentId);
+        */
     }
 
     @Override
@@ -225,11 +236,6 @@
     }
 
     @Override
-    public Intent getIntent(Key key) {
-        return null; // TODO
-    }
-
-    @Override
     public IntentData getIntentData(Key key) {
         return null; // TODO
     }
diff --git a/core/store/dist/src/main/java/org/onosproject/store/intent/impl/HazelcastIntentStore.java b/core/store/dist/src/main/java/org/onosproject/store/intent/impl/HazelcastIntentStore.java
index 2e82e5c..8e91d61 100644
--- a/core/store/dist/src/main/java/org/onosproject/store/intent/impl/HazelcastIntentStore.java
+++ b/core/store/dist/src/main/java/org/onosproject/store/intent/impl/HazelcastIntentStore.java
@@ -46,6 +46,7 @@
 import org.onosproject.net.intent.IntentState;
 import org.onosproject.net.intent.IntentStore;
 import org.onosproject.net.intent.IntentStoreDelegate;
+import org.onosproject.net.intent.Key;
 import org.onosproject.store.hz.AbstractHazelcastStore;
 import org.onosproject.store.hz.SMap;
 import org.onosproject.store.serializers.KryoNamespaces;
@@ -209,6 +210,11 @@
     }
 
     @Override
+    public Intent getIntent(Key intentKey) {
+        return null;
+    }
+
+
     public Intent getIntent(IntentId intentId) {
         Context timer = startTimer(getIntentTimer);
         try {
@@ -227,7 +233,10 @@
     }
 
     @Override
-    public IntentState getIntentState(IntentId id) {
+    public IntentState getIntentState(Key key) {
+        // TODO: either implement this or remove this class
+        return IntentState.FAILED;
+        /*
         Context timer = startTimer(getIntentStateTimer);
         try {
             final IntentState localState = transientStates.get(id);
@@ -238,6 +247,7 @@
         } finally {
             stopTimer(timer);
         }
+        */
     }
 
     private void verify(boolean expression, String errorMessageTemplate, Object... errorMessageArgs) {
@@ -251,13 +261,18 @@
     }
 
     @Override
-    public List<Intent> getInstallableIntents(IntentId intentId) {
+    public List<Intent> getInstallableIntents(Key intentKey) {
+        // TODO: implement this or delete class
+        return null;
+
+        /*
         Context timer = startTimer(getInstallableIntentsTimer);
         try {
             return installable.get(intentId);
         } finally {
             stopTimer(timer);
         }
+        */
     }
 
     @Override
diff --git a/core/store/dist/src/main/java/org/onosproject/store/intent/impl/SimpleIntentStore.java b/core/store/dist/src/main/java/org/onosproject/store/intent/impl/SimpleIntentStore.java
index f3ecb48..0d9f26e 100644
--- a/core/store/dist/src/main/java/org/onosproject/store/intent/impl/SimpleIntentStore.java
+++ b/core/store/dist/src/main/java/org/onosproject/store/intent/impl/SimpleIntentStore.java
@@ -25,7 +25,6 @@
 import org.onosproject.net.intent.Intent;
 import org.onosproject.net.intent.IntentData;
 import org.onosproject.net.intent.IntentEvent;
-import org.onosproject.net.intent.IntentId;
 import org.onosproject.net.intent.IntentState;
 import org.onosproject.net.intent.IntentStore;
 import org.onosproject.net.intent.IntentStoreDelegate;
@@ -35,7 +34,6 @@
 
 import java.util.List;
 import java.util.Map;
-import java.util.Objects;
 import java.util.stream.Collectors;
 
 import static com.google.common.base.Preconditions.checkNotNull;
@@ -77,38 +75,23 @@
     }
 
     @Override
-    public Intent getIntent(IntentId intentId) {
-        for (IntentData data : current.values()) {
-            if (Objects.equals(data.intent().id(), intentId)) {
-                return data.intent();
-            }
-        }
-        return null;
+    public IntentState getIntentState(Key intentKey) {
+        IntentData data = current.get(intentKey);
+        return (data != null) ? data.state() : null;
     }
 
     @Override
-    public IntentState getIntentState(IntentId intentId) {
-        for (IntentData data : current.values()) {
-            if (Objects.equals(data.intent().id(), intentId)) {
-                return data.state();
-            }
-        }
+    public List<Intent> getInstallableIntents(Key intentKey) {
+        // TODO: implement this or delete class
         return null;
-    }
-
-    @Override
-    public List<Intent> getInstallableIntents(IntentId intentId) {
+        /*
         for (IntentData data : current.values()) {
             if (Objects.equals(data.intent().id(), intentId)) {
                 return data.installables();
             }
         }
         return null;
-    }
-
-    @Override
-    public IntentData getIntentData(Key key) {
-        return current.get(key);
+        */
     }
 
     /*
diff --git a/core/store/trivial/src/main/java/org/onosproject/store/trivial/impl/SimpleIntentStore.java b/core/store/trivial/src/main/java/org/onosproject/store/trivial/impl/SimpleIntentStore.java
index 988d02a..2831951 100644
--- a/core/store/trivial/src/main/java/org/onosproject/store/trivial/impl/SimpleIntentStore.java
+++ b/core/store/trivial/src/main/java/org/onosproject/store/trivial/impl/SimpleIntentStore.java
@@ -25,7 +25,6 @@
 import org.onosproject.net.intent.Intent;
 import org.onosproject.net.intent.IntentData;
 import org.onosproject.net.intent.IntentEvent;
-import org.onosproject.net.intent.IntentId;
 import org.onosproject.net.intent.IntentState;
 import org.onosproject.net.intent.IntentStore;
 import org.onosproject.net.intent.IntentStoreDelegate;
@@ -35,7 +34,6 @@
 
 import java.util.List;
 import java.util.Map;
-import java.util.Objects;
 import java.util.stream.Collectors;
 
 import static com.google.common.base.Preconditions.checkNotNull;
@@ -76,38 +74,15 @@
     }
 
     @Override
-    public Intent getIntent(IntentId intentId) {
-        for (IntentData data : current.values()) {
-            if (Objects.equals(data.intent().id(), intentId)) {
-                return data.intent();
-            }
-        }
-        return null;
+    public IntentState getIntentState(Key intentKey) {
+        IntentData data = current.get(intentKey);
+        return (data != null) ? data.state() : null;
     }
 
     @Override
-    public IntentState getIntentState(IntentId intentId) {
-        for (IntentData data : current.values()) {
-            if (Objects.equals(data.intent().id(), intentId)) {
-                return data.state();
-            }
-        }
-        return null;
-    }
-
-    @Override
-    public List<Intent> getInstallableIntents(IntentId intentId) {
-        for (IntentData data : current.values()) {
-            if (Objects.equals(data.intent().id(), intentId)) {
-                return data.installables();
-            }
-        }
-        return null;
-    }
-
-    @Override
-    public IntentData getIntentData(Key key) {
-        return current.get(key);
+    public List<Intent> getInstallableIntents(Key intentKey) {
+        IntentData data = current.get(intentKey);
+        return (data != null) ? data.installables() : null;
     }
 
     /*