Migrate to using blueprints for unimgr initialisation.
[unimgr.git] / impl / src / main / java / org / opendaylight / unimgr / mef / nrp / impl / ActivationDriverRepoServiceImpl.java
similarity index 54%
rename from impl/src/main/java/org/mef/nrp/impl/ActivationDriverRepoServiceImpl.java
rename to impl/src/main/java/org/opendaylight/unimgr/mef/nrp/impl/ActivationDriverRepoServiceImpl.java
index 4aec03f779334fe8f63b1eafd38b02ea805f1924..8b132b0c6b35f4a135ceed280b8143a857f157ee 100644 (file)
@@ -6,50 +6,42 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.mef.nrp.impl;
+package org.opendaylight.unimgr.mef.nrp.impl;
 
 import java.util.Collection;
+import java.util.Collections;
 import java.util.List;
 import java.util.Optional;
-import java.util.concurrent.ConcurrentHashMap;
 import java.util.function.Function;
 import java.util.stream.Collectors;
 
+import org.opendaylight.unimgr.mef.nrp.api.ActivationDriver;
+import org.opendaylight.unimgr.mef.nrp.api.ActivationDriverAmbiguousException;
+import org.opendaylight.unimgr.mef.nrp.api.ActivationDriverBuilder;
+import org.opendaylight.unimgr.mef.nrp.api.ActivationDriverNotFoundException;
+import org.opendaylight.unimgr.mef.nrp.api.ActivationDriverRepoService;
 import org.opendaylight.yang.gen.v1.uri.onf.coremodel.corenetworkmodule.objectclasses.rev160413.GFcPort;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 /**
+ * Default application repo that is populated with the application driver builders registered as OSGi services.
+ *
  * @author alex.feigin@hpe.com
+ * @author bartosz.michalik@amartus.com [modifications]
  */
 public class ActivationDriverRepoServiceImpl implements ActivationDriverRepoService {
     private static final Logger LOG = LoggerFactory.getLogger(ActivationDriverRepoServiceImpl.class);
 
-    private Collection<ActivationDriverBuilder> builders = ConcurrentHashMap.newKeySet();
-
+    private final Collection<ActivationDriverBuilder> builders;
 
-    /* (non-Javadoc)
-     * @see org.mef.nrp.impl.ActivationDriverRepoService#bindBuilder(org.mef.nrp.impl.ActivationDriverBuilder)
-     */
-    @Override
-    public void bindBuilder(ActivationDriverBuilder builder) {
-        if (builder == null) {
-            return;
-        }
-        LOG.info("ActivationDriverRepoService.bindBuilder got [{}] instance", builder.getClass().getSimpleName());
-        builders.add(builder);
+    public ActivationDriverRepoServiceImpl() {
+        this.builders = Collections.emptyList();
     }
 
-    /* (non-Javadoc)
-     * @see org.mef.nrp.impl.ActivationDriverRepoService#unbindBuilder(org.mef.nrp.impl.ActivationDriverBuilder)
-     */
-    @Override
-    public void unbindBuilder(ActivationDriverBuilder builder) {
-        if (builder == null) {
-            return;
-        }
-        LOG.info("ActivationDriverRepoService.unbindBuilder got [{}] instance", builder.getClass().getSimpleName());
-        builders.remove(builder);
+    public ActivationDriverRepoServiceImpl(List<ActivationDriverBuilder> builders) {
+        LOG.debug("Activation drivers initialized");
+        this.builders = builders;
     }
 
     protected ActivationDriver getDriver(Function<ActivationDriverBuilder, Optional<ActivationDriver>> driver) {
@@ -67,11 +59,19 @@ public class ActivationDriverRepoServiceImpl implements ActivationDriverRepoServ
         return drivers.get(0);
     }
 
-    public ActivationDriver getDriver(GFcPort aPort, GFcPort zPort, ActivationDriverBuilder.BuilderContext context) {
-        return getDriver(x -> x.driverFor(aPort, zPort, context));
+    public ActivationDriver getDriver(GFcPort portA, GFcPort portZ, ActivationDriverBuilder.BuilderContext context) {
+        return getDriver(x -> x.driverFor(portA, portZ, context));
     }
 
     public ActivationDriver getDriver(GFcPort port, ActivationDriverBuilder.BuilderContext context) {
         return getDriver(x -> x.driverFor(port, context));
     }
+
+    public void bind(ActivationDriverBuilder builder) {
+        LOG.debug("builder {} bound", builder);
+    }
+
+    public void unbind(ActivationDriverBuilder builder) {
+        LOG.debug("builder {} unbound", builder);
+    }
 }