Changing Intent Ids to use explicit id assignment

Change-Id: I5a4bff87842c37a869e7691b353529eaefc929db
diff --git a/core/net/src/main/java/org/onlab/onos/core/impl/CoreManager.java b/core/net/src/main/java/org/onlab/onos/core/impl/CoreManager.java
index ebc4ed6..a2611ed 100644
--- a/core/net/src/main/java/org/onlab/onos/core/impl/CoreManager.java
+++ b/core/net/src/main/java/org/onlab/onos/core/impl/CoreManager.java
@@ -23,6 +23,8 @@
 import org.onlab.onos.core.ApplicationId;
 import org.onlab.onos.core.ApplicationIdStore;
 import org.onlab.onos.core.CoreService;
+import org.onlab.onos.core.IdBlockStore;
+import org.onlab.onos.core.IdGenerator;
 import org.onlab.onos.core.Version;
 import org.onlab.util.Tools;
 
@@ -35,7 +37,7 @@
 /**
  * Core service implementation.
  */
-@Component
+@Component(immediate = true)
 @Service
 public class CoreManager implements CoreService {
 
@@ -45,6 +47,9 @@
     @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
     protected ApplicationIdStore applicationIdStore;
 
+    @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
+    protected IdBlockStore idBlockStore;
+
     @Activate
     public void activate() {
         List<String> versionLines = Tools.slurp(VERSION_FILE);
@@ -74,4 +79,11 @@
         return applicationIdStore.registerApplication(name);
     }
 
+    @Override
+    public IdGenerator getIdGenerator(String topic) {
+        // FIXME this should be created lazily (once per topic)
+        IdBlockAllocator allocator = new StoreBasedIdBlockAllocator(topic, idBlockStore);
+        return new BlockAllocatorBasedIdGenerator(allocator);
+    }
+
 }