[WIP] Upgrade ONOS to karaf version 4.2.1

Change-Id: I7cd40c995bdf1c80f94b1895fb3344e32404c7fa
diff --git a/drivers/arista/src/main/java/org/onosproject/drivers/arista/AristaDriversLoader.java b/drivers/arista/src/main/java/org/onosproject/drivers/arista/AristaDriversLoader.java
index 2d15e66..4a8b0be 100644
--- a/drivers/arista/src/main/java/org/onosproject/drivers/arista/AristaDriversLoader.java
+++ b/drivers/arista/src/main/java/org/onosproject/drivers/arista/AristaDriversLoader.java
@@ -16,7 +16,7 @@
 
 package org.onosproject.drivers.arista;
 
-import org.apache.felix.scr.annotations.Component;
+import org.osgi.service.component.annotations.Component;
 import org.onosproject.net.driver.AbstractDriverLoader;
 
 /**
diff --git a/drivers/barefoot/src/main/java/org/onosproject/drivers/barefoot/BarefootDriversLoader.java b/drivers/barefoot/src/main/java/org/onosproject/drivers/barefoot/BarefootDriversLoader.java
index 41ab063..1118453 100644
--- a/drivers/barefoot/src/main/java/org/onosproject/drivers/barefoot/BarefootDriversLoader.java
+++ b/drivers/barefoot/src/main/java/org/onosproject/drivers/barefoot/BarefootDriversLoader.java
@@ -16,7 +16,7 @@
 
 package org.onosproject.drivers.barefoot;
 
-import org.apache.felix.scr.annotations.Component;
+import org.osgi.service.component.annotations.Component;
 import org.onosproject.net.driver.AbstractDriverLoader;
 
 /**
diff --git a/drivers/bmv2/src/main/java/org/onosproject/drivers/bmv2/Bmv2DriversLoader.java b/drivers/bmv2/src/main/java/org/onosproject/drivers/bmv2/Bmv2DriversLoader.java
index 51a5432..fc196d9 100644
--- a/drivers/bmv2/src/main/java/org/onosproject/drivers/bmv2/Bmv2DriversLoader.java
+++ b/drivers/bmv2/src/main/java/org/onosproject/drivers/bmv2/Bmv2DriversLoader.java
@@ -16,7 +16,7 @@
 
 package org.onosproject.drivers.bmv2;
 
-import org.apache.felix.scr.annotations.Component;
+import org.osgi.service.component.annotations.Component;
 import org.onosproject.net.driver.AbstractDriverLoader;
 
 /**
diff --git a/drivers/bmv2/src/main/java/org/onosproject/drivers/bmv2/ctl/Bmv2PreControllerImpl.java b/drivers/bmv2/src/main/java/org/onosproject/drivers/bmv2/ctl/Bmv2PreControllerImpl.java
index 4c80e79..1616734 100644
--- a/drivers/bmv2/src/main/java/org/onosproject/drivers/bmv2/ctl/Bmv2PreControllerImpl.java
+++ b/drivers/bmv2/src/main/java/org/onosproject/drivers/bmv2/ctl/Bmv2PreControllerImpl.java
@@ -22,14 +22,6 @@
 import com.google.common.cache.LoadingCache;
 import com.google.common.collect.Maps;
 import org.apache.commons.lang3.tuple.Pair;
-import org.apache.felix.scr.annotations.Activate;
-import org.apache.felix.scr.annotations.Component;
-import org.apache.felix.scr.annotations.Deactivate;
-import org.apache.felix.scr.annotations.Modified;
-import org.apache.felix.scr.annotations.Property;
-import org.apache.felix.scr.annotations.Reference;
-import org.apache.felix.scr.annotations.ReferenceCardinality;
-import org.apache.felix.scr.annotations.Service;
 import org.apache.thrift.protocol.TBinaryProtocol;
 import org.apache.thrift.protocol.TMultiplexedProtocol;
 import org.apache.thrift.protocol.TProtocol;
@@ -42,6 +34,12 @@
 import org.onosproject.drivers.bmv2.api.Bmv2PreController;
 import org.onosproject.net.DeviceId;
 import org.osgi.service.component.ComponentContext;
+import org.osgi.service.component.annotations.Activate;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Deactivate;
+import org.osgi.service.component.annotations.Modified;
+import org.osgi.service.component.annotations.Reference;
+import org.osgi.service.component.annotations.ReferenceCardinality;
 import org.slf4j.Logger;
 
 import java.util.Dictionary;
@@ -57,8 +55,7 @@
 /**
  * BMv2 PRE controller implementation.
  */
-@Component(immediate = true)
-@Service
+@Component(immediate = true, service = Bmv2PreController.class)
 public class Bmv2PreControllerImpl implements Bmv2PreController {
 
     private static final int DEVICE_LOCK_CACHE_EXPIRE_TIME_IN_MIN = 10;
@@ -77,16 +74,16 @@
                     return new ReentrantReadWriteLock();
                 }
             });
-    @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
+    @Reference(cardinality = ReferenceCardinality.MANDATORY)
     protected ComponentConfigService cfgService;
-    @Property(name = "numConnectionRetries", intValue = DEFAULT_NUM_CONNECTION_RETRIES,
-            label = "Number of connection retries after a network error")
+    //@Property(name = "numConnectionRetries", intValue = DEFAULT_NUM_CONNECTION_RETRIES,
+    //        label = "Number of connection retries after a network error")
     private int numConnectionRetries = DEFAULT_NUM_CONNECTION_RETRIES;
-    @Property(name = "timeBetweenRetries", intValue = DEFAULT_TIME_BETWEEN_RETRIES,
-            label = "Time between retries in milliseconds")
+    //@Property(name = "timeBetweenRetries", intValue = DEFAULT_TIME_BETWEEN_RETRIES,
+    //        label = "Time between retries in milliseconds")
     private int timeBetweenRetries = DEFAULT_TIME_BETWEEN_RETRIES;
-    @Property(name = "deviceLockWaitingTime", intValue = DEVICE_LOCK_WAITING_TIME_IN_SEC,
-            label = "Waiting time for a read/write lock in seconds")
+    //@Property(name = "deviceLockWaitingTime", intValue = DEVICE_LOCK_WAITING_TIME_IN_SEC,
+    //        label = "Waiting time for a read/write lock in seconds")
     private int deviceLockWaitingTime = DEVICE_LOCK_WAITING_TIME_IN_SEC;
 
     @Activate
diff --git a/drivers/bmv2/src/main/java/org/onosproject/drivers/bmv2/mirror/AbstractDistributedBmv2Mirror.java b/drivers/bmv2/src/main/java/org/onosproject/drivers/bmv2/mirror/AbstractDistributedBmv2Mirror.java
index d75be38..6d46e0f 100644
--- a/drivers/bmv2/src/main/java/org/onosproject/drivers/bmv2/mirror/AbstractDistributedBmv2Mirror.java
+++ b/drivers/bmv2/src/main/java/org/onosproject/drivers/bmv2/mirror/AbstractDistributedBmv2Mirror.java
@@ -17,11 +17,11 @@
 
 package org.onosproject.drivers.bmv2.mirror;
 
-import org.apache.felix.scr.annotations.Activate;
-import org.apache.felix.scr.annotations.Component;
-import org.apache.felix.scr.annotations.Deactivate;
-import org.apache.felix.scr.annotations.Reference;
-import org.apache.felix.scr.annotations.ReferenceCardinality;
+import org.osgi.service.component.annotations.Activate;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Deactivate;
+import org.osgi.service.component.annotations.Reference;
+import org.osgi.service.component.annotations.ReferenceCardinality;
 import org.onlab.util.KryoNamespace;
 import org.onosproject.drivers.bmv2.api.runtime.Bmv2Entity;
 import org.onosproject.drivers.bmv2.api.runtime.Bmv2Handle;
@@ -53,7 +53,7 @@
 
     private final Logger log = getLogger(getClass());
 
-    @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
+    @Reference(cardinality = ReferenceCardinality.MANDATORY)
     private StorageService storageService;
 
     private EventuallyConsistentMap<H, E> mirrorMap;
diff --git a/drivers/bmv2/src/main/java/org/onosproject/drivers/bmv2/mirror/DistributedBmv2PreGroupMirror.java b/drivers/bmv2/src/main/java/org/onosproject/drivers/bmv2/mirror/DistributedBmv2PreGroupMirror.java
index 1725676..fd6231f 100644
--- a/drivers/bmv2/src/main/java/org/onosproject/drivers/bmv2/mirror/DistributedBmv2PreGroupMirror.java
+++ b/drivers/bmv2/src/main/java/org/onosproject/drivers/bmv2/mirror/DistributedBmv2PreGroupMirror.java
@@ -17,8 +17,6 @@
 
 package org.onosproject.drivers.bmv2.mirror;
 
-import org.apache.felix.scr.annotations.Component;
-import org.apache.felix.scr.annotations.Service;
 import org.onlab.util.KryoNamespace;
 import org.onosproject.drivers.bmv2.api.runtime.Bmv2EntityType;
 import org.onosproject.drivers.bmv2.api.runtime.Bmv2PreGroup;
@@ -26,6 +24,7 @@
 import org.onosproject.drivers.bmv2.api.runtime.Bmv2PreNode;
 import org.onosproject.drivers.bmv2.api.runtime.Bmv2PreNodes;
 import org.onosproject.store.serializers.KryoNamespaces;
+import org.osgi.service.component.annotations.Component;
 
 
 /**
@@ -33,8 +32,7 @@
  * We need this mirror to preserve BMv2-specific identifiers of group
  * and nodes for further operations on them after creation.
  */
-@Component(immediate = true)
-@Service
+@Component(immediate = true, service = Bmv2PreGroupMirror.class)
 public class DistributedBmv2PreGroupMirror
         extends AbstractDistributedBmv2Mirror<Bmv2PreGroupHandle, Bmv2PreGroup>
         implements Bmv2PreGroupMirror {
diff --git a/drivers/ciena/c5162/src/main/java/org/onosproject/drivers/ciena/c5162/Ciena5162DriversLoader.java b/drivers/ciena/c5162/src/main/java/org/onosproject/drivers/ciena/c5162/Ciena5162DriversLoader.java
index 338c2f1..5b911eb 100644
--- a/drivers/ciena/c5162/src/main/java/org/onosproject/drivers/ciena/c5162/Ciena5162DriversLoader.java
+++ b/drivers/ciena/c5162/src/main/java/org/onosproject/drivers/ciena/c5162/Ciena5162DriversLoader.java
@@ -15,7 +15,7 @@
  */
 package org.onosproject.drivers.ciena.c5162;
 
-import org.apache.felix.scr.annotations.Component;
+import org.osgi.service.component.annotations.Component;
 import org.onosproject.net.driver.AbstractDriverLoader;
 
 /**
diff --git a/drivers/ciena/c5170/src/main/java/org/onosproject/drivers/ciena/c5170/Ciena5170DriversLoader.java b/drivers/ciena/c5170/src/main/java/org/onosproject/drivers/ciena/c5170/Ciena5170DriversLoader.java
index 759d24d..25de88c 100644
--- a/drivers/ciena/c5170/src/main/java/org/onosproject/drivers/ciena/c5170/Ciena5170DriversLoader.java
+++ b/drivers/ciena/c5170/src/main/java/org/onosproject/drivers/ciena/c5170/Ciena5170DriversLoader.java
@@ -15,7 +15,7 @@
  */
 package org.onosproject.drivers.ciena.c5170;
 
-import org.apache.felix.scr.annotations.Component;
+import org.osgi.service.component.annotations.Component;
 import org.onosproject.net.driver.AbstractDriverLoader;
 
 /**
diff --git a/drivers/ciena/waveserver/src/main/java/org/onosproject/drivers/ciena/waveserver/CienaDriversLoader.java b/drivers/ciena/waveserver/src/main/java/org/onosproject/drivers/ciena/waveserver/CienaDriversLoader.java
index 0752c4f..db69d21 100644
--- a/drivers/ciena/waveserver/src/main/java/org/onosproject/drivers/ciena/waveserver/CienaDriversLoader.java
+++ b/drivers/ciena/waveserver/src/main/java/org/onosproject/drivers/ciena/waveserver/CienaDriversLoader.java
@@ -16,7 +16,7 @@
 
 package org.onosproject.drivers.ciena.waveserver;
 
-import org.apache.felix.scr.annotations.Component;
+import org.osgi.service.component.annotations.Component;
 import org.onosproject.net.driver.AbstractDriverLoader;
 import org.onosproject.net.optical.OpticalDevice;
 
diff --git a/drivers/ciena/waveserverai/src/main/java/org/onosproject/drivers/ciena/waveserverai/CienaDriversLoader.java b/drivers/ciena/waveserverai/src/main/java/org/onosproject/drivers/ciena/waveserverai/CienaDriversLoader.java
index 0511337..18e21e9 100644
--- a/drivers/ciena/waveserverai/src/main/java/org/onosproject/drivers/ciena/waveserverai/CienaDriversLoader.java
+++ b/drivers/ciena/waveserverai/src/main/java/org/onosproject/drivers/ciena/waveserverai/CienaDriversLoader.java
@@ -16,7 +16,7 @@
 
 package org.onosproject.drivers.ciena.waveserverai;
 
-import org.apache.felix.scr.annotations.Component;
+import org.osgi.service.component.annotations.Component;
 import org.onosproject.net.driver.AbstractDriverLoader;
 import org.onosproject.net.optical.OpticalDevice;
 
diff --git a/drivers/cisco/netconf/src/main/java/org/onosproject/drivers/cisco/CiscoDriversLoader.java b/drivers/cisco/netconf/src/main/java/org/onosproject/drivers/cisco/CiscoDriversLoader.java
index 2758a1c..908f147 100644
--- a/drivers/cisco/netconf/src/main/java/org/onosproject/drivers/cisco/CiscoDriversLoader.java
+++ b/drivers/cisco/netconf/src/main/java/org/onosproject/drivers/cisco/CiscoDriversLoader.java
@@ -16,7 +16,7 @@
 
 package org.onosproject.drivers.cisco;
 
-import org.apache.felix.scr.annotations.Component;
+import org.osgi.service.component.annotations.Component;
 import org.onosproject.net.driver.AbstractDriverLoader;
 
 /**
diff --git a/drivers/cisco/rest/src/main/java/org/onosproject/drivers/cisco/rest/CiscoRestDriversLoader.java b/drivers/cisco/rest/src/main/java/org/onosproject/drivers/cisco/rest/CiscoRestDriversLoader.java
index 1a55902..ea3b04c 100644
--- a/drivers/cisco/rest/src/main/java/org/onosproject/drivers/cisco/rest/CiscoRestDriversLoader.java
+++ b/drivers/cisco/rest/src/main/java/org/onosproject/drivers/cisco/rest/CiscoRestDriversLoader.java
@@ -16,7 +16,7 @@
 
 package org.onosproject.drivers.cisco.rest;
 
-import org.apache.felix.scr.annotations.Component;
+import org.osgi.service.component.annotations.Component;
 import org.onosproject.net.driver.AbstractDriverLoader;
 
 /**
diff --git a/drivers/corsa/src/main/java/org/onosproject/drivers/corsa/CorsaDriversLoader.java b/drivers/corsa/src/main/java/org/onosproject/drivers/corsa/CorsaDriversLoader.java
index f039bcf..fa3aaf9 100644
--- a/drivers/corsa/src/main/java/org/onosproject/drivers/corsa/CorsaDriversLoader.java
+++ b/drivers/corsa/src/main/java/org/onosproject/drivers/corsa/CorsaDriversLoader.java
@@ -16,7 +16,7 @@
 
 package org.onosproject.drivers.corsa;
 
-import org.apache.felix.scr.annotations.Component;
+import org.osgi.service.component.annotations.Component;
 import org.onosproject.net.driver.AbstractDriverLoader;
 
 /**
diff --git a/drivers/default/src/main/java/org/onosproject/driver/DefaultCodecRegister.java b/drivers/default/src/main/java/org/onosproject/driver/DefaultCodecRegister.java
index 97f4c6a..9b643ef 100644
--- a/drivers/default/src/main/java/org/onosproject/driver/DefaultCodecRegister.java
+++ b/drivers/default/src/main/java/org/onosproject/driver/DefaultCodecRegister.java
@@ -15,11 +15,11 @@
  */
 package org.onosproject.driver;
 
-import org.apache.felix.scr.annotations.Activate;
-import org.apache.felix.scr.annotations.Component;
-import org.apache.felix.scr.annotations.Deactivate;
-import org.apache.felix.scr.annotations.Reference;
-import org.apache.felix.scr.annotations.ReferenceCardinality;
+import org.osgi.service.component.annotations.Activate;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Deactivate;
+import org.osgi.service.component.annotations.Reference;
+import org.osgi.service.component.annotations.ReferenceCardinality;
 import org.onosproject.codec.CodecService;
 import org.onosproject.driver.extensions.MoveExtensionTreatment;
 import org.onosproject.driver.extensions.NiciraMatchNshSi;
@@ -75,7 +75,7 @@
 
     private final Logger log = getLogger(getClass());
 
-    @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
+    @Reference(cardinality = ReferenceCardinality.MANDATORY)
     protected CodecService codecService;
 
     @Activate
diff --git a/drivers/default/src/main/java/org/onosproject/driver/DefaultDriversLoader.java b/drivers/default/src/main/java/org/onosproject/driver/DefaultDriversLoader.java
index 261054b..d292aa6 100644
--- a/drivers/default/src/main/java/org/onosproject/driver/DefaultDriversLoader.java
+++ b/drivers/default/src/main/java/org/onosproject/driver/DefaultDriversLoader.java
@@ -16,16 +16,14 @@
 
 package org.onosproject.driver;
 
-import org.apache.felix.scr.annotations.Component;
-import org.apache.felix.scr.annotations.Service;
 import org.onosproject.net.driver.AbstractIndependentDriverLoader;
 import org.onosproject.net.driver.DefaultDriverProviderService;
+import org.osgi.service.component.annotations.Component;
 
 /**
  * Loader for default device drivers.
  */
-@Service
-@Component(immediate = true)
+@Component(immediate = true, service = DefaultDriversLoader.class)
 public class DefaultDriversLoader extends AbstractIndependentDriverLoader
         implements DefaultDriverProviderService {
     public DefaultDriversLoader() {
diff --git a/drivers/flowspec/src/main/java/org/onosproject/drivers/flowspec/FlowSpecDriversLoader.java b/drivers/flowspec/src/main/java/org/onosproject/drivers/flowspec/FlowSpecDriversLoader.java
index dfa3c0b..93a0295 100644
--- a/drivers/flowspec/src/main/java/org/onosproject/drivers/flowspec/FlowSpecDriversLoader.java
+++ b/drivers/flowspec/src/main/java/org/onosproject/drivers/flowspec/FlowSpecDriversLoader.java
@@ -15,7 +15,7 @@
  */
 package org.onosproject.drivers.flowspec;
 
-import org.apache.felix.scr.annotations.Component;
+import org.osgi.service.component.annotations.Component;
 import org.onosproject.net.driver.AbstractDriverLoader;
 
 /**
diff --git a/drivers/fujitsu/src/main/java/org/onosproject/drivers/fujitsu/FujitsuDriversLoader.java b/drivers/fujitsu/src/main/java/org/onosproject/drivers/fujitsu/FujitsuDriversLoader.java
index 770ed73..c531ddf 100644
--- a/drivers/fujitsu/src/main/java/org/onosproject/drivers/fujitsu/FujitsuDriversLoader.java
+++ b/drivers/fujitsu/src/main/java/org/onosproject/drivers/fujitsu/FujitsuDriversLoader.java
@@ -16,7 +16,7 @@
 
 package org.onosproject.drivers.fujitsu;
 
-import org.apache.felix.scr.annotations.Component;
+import org.osgi.service.component.annotations.Component;
 import org.onosproject.cli.net.DeviceIdCompleter;
 import org.onosproject.net.driver.AbstractDriverLoader;
 import org.onosproject.net.optical.OpticalDevice;
diff --git a/drivers/gnmi/src/main/java/org/onosproject/drivers/gnmi/GnmiDriversLoader.java b/drivers/gnmi/src/main/java/org/onosproject/drivers/gnmi/GnmiDriversLoader.java
index 689a53b..62a5e9f 100644
--- a/drivers/gnmi/src/main/java/org/onosproject/drivers/gnmi/GnmiDriversLoader.java
+++ b/drivers/gnmi/src/main/java/org/onosproject/drivers/gnmi/GnmiDriversLoader.java
@@ -16,7 +16,7 @@
 
 package org.onosproject.drivers.gnmi;
 
-import org.apache.felix.scr.annotations.Component;
+import org.osgi.service.component.annotations.Component;
 import org.onosproject.net.driver.AbstractDriverLoader;
 
 /**
diff --git a/drivers/hp/src/main/java/org/onosproject/drivers/hp/HPDriverLoader.java b/drivers/hp/src/main/java/org/onosproject/drivers/hp/HPDriverLoader.java
index a70c2d7..97343d2 100644
--- a/drivers/hp/src/main/java/org/onosproject/drivers/hp/HPDriverLoader.java
+++ b/drivers/hp/src/main/java/org/onosproject/drivers/hp/HPDriverLoader.java
@@ -16,7 +16,7 @@
 
 package org.onosproject.drivers.hp;
 
-import org.apache.felix.scr.annotations.Component;
+import org.osgi.service.component.annotations.Component;
 import org.onosproject.net.driver.AbstractDriverLoader;
 
 /**
diff --git a/drivers/huawei/src/main/java/org/onosproject/drivers/huawei/HuaweiDriversLoader.java b/drivers/huawei/src/main/java/org/onosproject/drivers/huawei/HuaweiDriversLoader.java
index db96787..79f1b9e 100644
--- a/drivers/huawei/src/main/java/org/onosproject/drivers/huawei/HuaweiDriversLoader.java
+++ b/drivers/huawei/src/main/java/org/onosproject/drivers/huawei/HuaweiDriversLoader.java
@@ -16,7 +16,7 @@
 
 package org.onosproject.drivers.huawei;
 
-import org.apache.felix.scr.annotations.Component;
+import org.osgi.service.component.annotations.Component;
 import org.onosproject.net.driver.AbstractDriverLoader;
 
 /**
diff --git a/drivers/juniper/src/main/java/org/onosproject/drivers/juniper/JuniperDriversLoader.java b/drivers/juniper/src/main/java/org/onosproject/drivers/juniper/JuniperDriversLoader.java
index 83dc4e1..68f8e77 100644
--- a/drivers/juniper/src/main/java/org/onosproject/drivers/juniper/JuniperDriversLoader.java
+++ b/drivers/juniper/src/main/java/org/onosproject/drivers/juniper/JuniperDriversLoader.java
@@ -16,7 +16,7 @@
 
 package org.onosproject.drivers.juniper;
 
-import org.apache.felix.scr.annotations.Component;
+import org.osgi.service.component.annotations.Component;
 import org.onosproject.net.driver.AbstractDriverLoader;
 
 @Component(immediate = true)
diff --git a/drivers/lisp/src/main/java/org/onosproject/drivers/lisp/LispDriversLoader.java b/drivers/lisp/src/main/java/org/onosproject/drivers/lisp/LispDriversLoader.java
index faf24d0..33fa28f 100644
--- a/drivers/lisp/src/main/java/org/onosproject/drivers/lisp/LispDriversLoader.java
+++ b/drivers/lisp/src/main/java/org/onosproject/drivers/lisp/LispDriversLoader.java
@@ -16,7 +16,7 @@
 
 package org.onosproject.drivers.lisp;
 
-import org.apache.felix.scr.annotations.Component;
+import org.osgi.service.component.annotations.Component;
 import org.onosproject.net.driver.AbstractDriverLoader;
 
 /**
diff --git a/drivers/lisp/src/main/java/org/onosproject/drivers/lisp/extensions/LispMappingExtensionCodecRegistrator.java b/drivers/lisp/src/main/java/org/onosproject/drivers/lisp/extensions/LispMappingExtensionCodecRegistrator.java
index 569b846..20e2da3 100644
--- a/drivers/lisp/src/main/java/org/onosproject/drivers/lisp/extensions/LispMappingExtensionCodecRegistrator.java
+++ b/drivers/lisp/src/main/java/org/onosproject/drivers/lisp/extensions/LispMappingExtensionCodecRegistrator.java
@@ -15,11 +15,11 @@
  */
 package org.onosproject.drivers.lisp.extensions;
 
-import org.apache.felix.scr.annotations.Activate;
-import org.apache.felix.scr.annotations.Component;
-import org.apache.felix.scr.annotations.Deactivate;
-import org.apache.felix.scr.annotations.Reference;
-import org.apache.felix.scr.annotations.ReferenceCardinality;
+import org.osgi.service.component.annotations.Activate;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Deactivate;
+import org.osgi.service.component.annotations.Reference;
+import org.osgi.service.component.annotations.ReferenceCardinality;
 import org.onosproject.codec.CodecService;
 import org.onosproject.drivers.lisp.extensions.codec.LispAppDataAddressCodec;
 import org.onosproject.drivers.lisp.extensions.codec.LispAsAddressCodec;
@@ -47,7 +47,7 @@
     private final Logger log = getLogger(getClass());
     private MappingCodecRegistrator registrator;
 
-    @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
+    @Reference(cardinality = ReferenceCardinality.MANDATORY)
     public CodecService codecService;
 
     @Activate
diff --git a/drivers/lumentum/src/main/java/org/onosproject/drivers/lumentum/LumentumDriversLoader.java b/drivers/lumentum/src/main/java/org/onosproject/drivers/lumentum/LumentumDriversLoader.java
index bd08367..9b68b62 100644
--- a/drivers/lumentum/src/main/java/org/onosproject/drivers/lumentum/LumentumDriversLoader.java
+++ b/drivers/lumentum/src/main/java/org/onosproject/drivers/lumentum/LumentumDriversLoader.java
@@ -16,7 +16,7 @@
 
 package org.onosproject.drivers.lumentum;
 
-import org.apache.felix.scr.annotations.Component;
+import org.osgi.service.component.annotations.Component;
 import org.onosproject.net.driver.AbstractDriverLoader;
 import org.onosproject.net.optical.OpticalDevice;
 
diff --git a/drivers/mellanox/src/main/java/org/onosproject/drivers/mellanox/MellanoxDriversLoader.java b/drivers/mellanox/src/main/java/org/onosproject/drivers/mellanox/MellanoxDriversLoader.java
index 2b6ee26..52d9652 100644
--- a/drivers/mellanox/src/main/java/org/onosproject/drivers/mellanox/MellanoxDriversLoader.java
+++ b/drivers/mellanox/src/main/java/org/onosproject/drivers/mellanox/MellanoxDriversLoader.java
@@ -16,7 +16,7 @@
 
 package org.onosproject.drivers.mellanox;
 
-import org.apache.felix.scr.annotations.Component;
+import org.osgi.service.component.annotations.Component;
 import org.onosproject.net.driver.AbstractDriverLoader;
 
 /**
diff --git a/drivers/microsemi/ea1000/src/main/java/org/onosproject/drivers/microsemi/EA1000MeterProvider.java b/drivers/microsemi/ea1000/src/main/java/org/onosproject/drivers/microsemi/EA1000MeterProvider.java
index 03405d7..b524345 100644
--- a/drivers/microsemi/ea1000/src/main/java/org/onosproject/drivers/microsemi/EA1000MeterProvider.java
+++ b/drivers/microsemi/ea1000/src/main/java/org/onosproject/drivers/microsemi/EA1000MeterProvider.java
@@ -21,11 +21,11 @@
 
 import java.util.concurrent.atomic.AtomicInteger;
 
-import org.apache.felix.scr.annotations.Activate;
-import org.apache.felix.scr.annotations.Component;
-import org.apache.felix.scr.annotations.Deactivate;
-import org.apache.felix.scr.annotations.Reference;
-import org.apache.felix.scr.annotations.ReferenceCardinality;
+import org.osgi.service.component.annotations.Activate;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Deactivate;
+import org.osgi.service.component.annotations.Reference;
+import org.osgi.service.component.annotations.ReferenceCardinality;
 import org.onosproject.core.CoreService;
 import org.onosproject.drivers.microsemi.yang.MseaUniEvcServiceNetconfService;
 import org.onosproject.net.DeviceId;
@@ -73,16 +73,16 @@
 
     private final Logger log = getLogger(getClass());
 
-    @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
+    @Reference(cardinality = ReferenceCardinality.MANDATORY)
     protected NetconfController controller;
 
-    @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
+    @Reference(cardinality = ReferenceCardinality.MANDATORY)
     protected MeterProviderRegistry providerRegistry;
 
-    @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
+    @Reference(cardinality = ReferenceCardinality.MANDATORY)
     protected CoreService coreService;
 
-    @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
+    @Reference(cardinality = ReferenceCardinality.MANDATORY)
     protected MseaUniEvcServiceNetconfService mseaUniEvcServiceSvc;
 
     private MeterProviderService providerService;
diff --git a/drivers/microsemi/ea1000/src/main/java/org/onosproject/drivers/microsemi/MicrosemiDriversLoader.java b/drivers/microsemi/ea1000/src/main/java/org/onosproject/drivers/microsemi/MicrosemiDriversLoader.java
index a556765..7499a6d 100644
--- a/drivers/microsemi/ea1000/src/main/java/org/onosproject/drivers/microsemi/MicrosemiDriversLoader.java
+++ b/drivers/microsemi/ea1000/src/main/java/org/onosproject/drivers/microsemi/MicrosemiDriversLoader.java
@@ -15,7 +15,7 @@
  */
 package org.onosproject.drivers.microsemi;
 
-import org.apache.felix.scr.annotations.Component;
+import org.osgi.service.component.annotations.Component;
 import org.onosproject.net.driver.AbstractDriverLoader;
 
 /**
diff --git a/drivers/microsemi/ea1000/src/main/java/org/onosproject/drivers/microsemi/NetconfConfigGetter.java b/drivers/microsemi/ea1000/src/main/java/org/onosproject/drivers/microsemi/NetconfConfigGetter.java
index 039b760..7d937d0 100644
--- a/drivers/microsemi/ea1000/src/main/java/org/onosproject/drivers/microsemi/NetconfConfigGetter.java
+++ b/drivers/microsemi/ea1000/src/main/java/org/onosproject/drivers/microsemi/NetconfConfigGetter.java
@@ -19,8 +19,8 @@
 import static org.onosproject.netconf.DatastoreId.datastore;
 import static org.slf4j.LoggerFactory.getLogger;
 
-import org.apache.felix.scr.annotations.Reference;
-import org.apache.felix.scr.annotations.ReferenceCardinality;
+import org.osgi.service.component.annotations.Reference;
+import org.osgi.service.component.annotations.ReferenceCardinality;
 import org.onosproject.net.DeviceId;
 import org.onosproject.net.behaviour.ConfigGetter;
 import org.onosproject.net.driver.AbstractHandlerBehaviour;
@@ -42,7 +42,7 @@
 
     private final Logger log = getLogger(getClass());
 
-    @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
+    @Reference(cardinality = ReferenceCardinality.MANDATORY)
     protected PacketService packetService;
 
     private PacketProcessor testProcessor;
diff --git a/drivers/microsemi/ea1000/src/main/java/org/onosproject/drivers/microsemi/yang/impl/AbstractYangServiceImpl.java b/drivers/microsemi/ea1000/src/main/java/org/onosproject/drivers/microsemi/yang/impl/AbstractYangServiceImpl.java
index 074aad4..e61d5e5 100644
--- a/drivers/microsemi/ea1000/src/main/java/org/onosproject/drivers/microsemi/yang/impl/AbstractYangServiceImpl.java
+++ b/drivers/microsemi/ea1000/src/main/java/org/onosproject/drivers/microsemi/yang/impl/AbstractYangServiceImpl.java
@@ -15,21 +15,8 @@
  */
 package org.onosproject.drivers.microsemi.yang.impl;
 
-import java.io.ByteArrayInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.List;
-import java.util.Set;
-import java.util.regex.Pattern;
-
 import com.google.common.base.Charsets;
 import com.google.common.io.ByteSource;
-import org.apache.felix.scr.annotations.Activate;
-import org.apache.felix.scr.annotations.Component;
-import org.apache.felix.scr.annotations.Deactivate;
-import org.apache.felix.scr.annotations.Reference;
-import org.apache.felix.scr.annotations.ReferenceCardinality;
-import org.apache.felix.scr.annotations.Service;
 import org.onosproject.core.ApplicationId;
 import org.onosproject.core.CoreService;
 import org.onosproject.netconf.DatastoreId;
@@ -54,15 +41,26 @@
 import org.onosproject.yang.runtime.YangSerializerContext;
 import org.onosproject.yang.runtime.YangSerializerRegistry;
 import org.onosproject.yang.serializers.xml.XmlSerializer;
+import org.osgi.service.component.annotations.Activate;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Deactivate;
+import org.osgi.service.component.annotations.Reference;
+import org.osgi.service.component.annotations.ReferenceCardinality;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.List;
+import java.util.Set;
+import java.util.regex.Pattern;
+
 /**
  * Abstract class that implements some of the core functions of a YANG model service.
  *
  */
-@Component(immediate = true)
-@Service
+@Component(immediate = true, service = AbstractYangServiceImpl.class)
 public abstract class AbstractYangServiceImpl {
     public static final String NC_OPERATION = "nc:operation";
     public static final String OP_DELETE = "delete";
@@ -70,10 +68,10 @@
     protected final Logger log = LoggerFactory.getLogger(getClass());
     protected boolean alreadyLoaded = false;
 
-    @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
+    @Reference(cardinality = ReferenceCardinality.MANDATORY)
     protected CoreService coreService;
 
-    @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
+    @Reference(cardinality = ReferenceCardinality.MANDATORY)
     protected YangModelRegistry yangModelRegistry;
 
     protected ApplicationId appId;
diff --git a/drivers/microsemi/ea1000/src/main/java/org/onosproject/drivers/microsemi/yang/impl/IetfSystemManager.java b/drivers/microsemi/ea1000/src/main/java/org/onosproject/drivers/microsemi/yang/impl/IetfSystemManager.java
index 0411967..16f6be8 100644
--- a/drivers/microsemi/ea1000/src/main/java/org/onosproject/drivers/microsemi/yang/impl/IetfSystemManager.java
+++ b/drivers/microsemi/ea1000/src/main/java/org/onosproject/drivers/microsemi/yang/impl/IetfSystemManager.java
@@ -19,10 +19,9 @@
 import java.time.OffsetDateTime;
 import java.time.format.DateTimeFormatter;
 
-import org.apache.felix.scr.annotations.Activate;
-import org.apache.felix.scr.annotations.Component;
-import org.apache.felix.scr.annotations.Deactivate;
-import org.apache.felix.scr.annotations.Service;
+import org.osgi.service.component.annotations.Activate;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Deactivate;
 import org.onosproject.drivers.microsemi.yang.IetfSystemNetconfService;
 import org.onosproject.netconf.DatastoreId;
 import org.onosproject.netconf.NetconfException;
@@ -41,8 +40,7 @@
 /**
  * Implementation of the IetfService YANG model service.
  */
-@Component(immediate = true, inherit = true)
-@Service
+@Component(immediate = true, service = AbstractYangServiceImpl.class)
 public class IetfSystemManager extends AbstractYangServiceImpl
     implements IetfSystemNetconfService {
 
diff --git a/drivers/microsemi/ea1000/src/main/java/org/onosproject/drivers/microsemi/yang/impl/MseaCfmManager.java b/drivers/microsemi/ea1000/src/main/java/org/onosproject/drivers/microsemi/yang/impl/MseaCfmManager.java
index ef40928..81581d0 100644
--- a/drivers/microsemi/ea1000/src/main/java/org/onosproject/drivers/microsemi/yang/impl/MseaCfmManager.java
+++ b/drivers/microsemi/ea1000/src/main/java/org/onosproject/drivers/microsemi/yang/impl/MseaCfmManager.java
@@ -15,12 +15,6 @@
  */
 package org.onosproject.drivers.microsemi.yang.impl;
 
-import java.util.ArrayList;
-
-import org.apache.felix.scr.annotations.Activate;
-import org.apache.felix.scr.annotations.Component;
-import org.apache.felix.scr.annotations.Deactivate;
-import org.apache.felix.scr.annotations.Service;
 import org.onosproject.drivers.microsemi.yang.MseaCfmNetconfService;
 import org.onosproject.incubator.net.l2monitoring.cfm.identifier.MaIdShort;
 import org.onosproject.incubator.net.l2monitoring.cfm.identifier.MdId;
@@ -54,16 +48,19 @@
 import org.onosproject.yang.runtime.DefaultAnnotatedNodeInfo;
 import org.onosproject.yang.runtime.DefaultAnnotation;
 import org.onosproject.yang.runtime.DefaultCompositeStream;
+import org.osgi.service.component.annotations.Activate;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Deactivate;
 
 import java.io.ByteArrayInputStream;
+import java.util.ArrayList;
 import java.util.Optional;
 import java.util.regex.Pattern;
 
 /**
  * Implementation of the MseaCfmServiceNetconf YANG model service.
  */
-@Component(immediate = true, inherit = true)
-@Service
+@Component(immediate = true, service = MseaCfmNetconfService.class)
 public class MseaCfmManager extends AbstractYangServiceImpl
     implements MseaCfmNetconfService {
 
diff --git a/drivers/microsemi/ea1000/src/main/java/org/onosproject/drivers/microsemi/yang/impl/MseaSaFilteringManager.java b/drivers/microsemi/ea1000/src/main/java/org/onosproject/drivers/microsemi/yang/impl/MseaSaFilteringManager.java
index 78c6315..284c732 100644
--- a/drivers/microsemi/ea1000/src/main/java/org/onosproject/drivers/microsemi/yang/impl/MseaSaFilteringManager.java
+++ b/drivers/microsemi/ea1000/src/main/java/org/onosproject/drivers/microsemi/yang/impl/MseaSaFilteringManager.java
@@ -15,10 +15,9 @@
  */
 package org.onosproject.drivers.microsemi.yang.impl;
 
-import org.apache.felix.scr.annotations.Activate;
-import org.apache.felix.scr.annotations.Component;
-import org.apache.felix.scr.annotations.Deactivate;
-import org.apache.felix.scr.annotations.Service;
+import org.osgi.service.component.annotations.Activate;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Deactivate;
 import org.onosproject.drivers.microsemi.yang.MseaSaFilteringNetconfService;
 import org.onosproject.netconf.DatastoreId;
 import org.onosproject.netconf.NetconfException;
@@ -45,8 +44,7 @@
 /**
  * Implementation of the MseaSaFiltering YANG model service.
  */
-@Component(immediate = true, inherit = true)
-@Service
+@Component(immediate = true, service = AbstractYangServiceImpl.class)
 public class MseaSaFilteringManager extends AbstractYangServiceImpl
     implements MseaSaFilteringNetconfService {
     public static final String MSEA_SA_FILTERING =
diff --git a/drivers/microsemi/ea1000/src/main/java/org/onosproject/drivers/microsemi/yang/impl/MseaUniEvcServiceManager.java b/drivers/microsemi/ea1000/src/main/java/org/onosproject/drivers/microsemi/yang/impl/MseaUniEvcServiceManager.java
index c0cba14..8d2b556 100644
--- a/drivers/microsemi/ea1000/src/main/java/org/onosproject/drivers/microsemi/yang/impl/MseaUniEvcServiceManager.java
+++ b/drivers/microsemi/ea1000/src/main/java/org/onosproject/drivers/microsemi/yang/impl/MseaUniEvcServiceManager.java
@@ -20,10 +20,9 @@
 import java.util.List;
 import java.util.Map;
 
-import org.apache.felix.scr.annotations.Activate;
-import org.apache.felix.scr.annotations.Component;
-import org.apache.felix.scr.annotations.Deactivate;
-import org.apache.felix.scr.annotations.Service;
+import org.osgi.service.component.annotations.Activate;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Deactivate;
 import org.onosproject.drivers.microsemi.yang.MseaUniEvcServiceNetconfService;
 import org.onosproject.netconf.DatastoreId;
 import org.onosproject.netconf.NetconfException;
@@ -47,8 +46,7 @@
 /**
  * Implementation of the MseaUniEvcServiceService YANG model service.
  */
-@Component(immediate = true, inherit = true)
-@Service
+@Component(immediate = true, service = MseaUniEvcServiceNetconfService.class)
 public class MseaUniEvcServiceManager extends AbstractYangServiceImpl
         implements MseaUniEvcServiceNetconfService {
     public static final String MSEA_UNI_EVC_SVC =
diff --git a/drivers/microsemi/ea1000/src/test/java/org/onosproject/yang/MockYangRuntimeManager.java b/drivers/microsemi/ea1000/src/test/java/org/onosproject/yang/MockYangRuntimeManager.java
index 5cfa3ef..2ed8af3 100644
--- a/drivers/microsemi/ea1000/src/test/java/org/onosproject/yang/MockYangRuntimeManager.java
+++ b/drivers/microsemi/ea1000/src/test/java/org/onosproject/yang/MockYangRuntimeManager.java
@@ -15,10 +15,10 @@
  */
 package org.onosproject.yang;
 
-import org.apache.felix.scr.annotations.Activate;
-import org.apache.felix.scr.annotations.Deactivate;
-import org.apache.felix.scr.annotations.Reference;
-import org.apache.felix.scr.annotations.ReferenceCardinality;
+import org.osgi.service.component.annotations.Activate;
+import org.osgi.service.component.annotations.Deactivate;
+import org.osgi.service.component.annotations.Reference;
+import org.osgi.service.component.annotations.ReferenceCardinality;
 import org.onosproject.core.CoreService;
 import org.onosproject.drivers.netconf.MockCoreService;
 import org.onosproject.yang.model.ModelConverter;
@@ -62,7 +62,7 @@
         private static final String APP_ID = "org.onosproject.yang";
         private final Logger log = LoggerFactory.getLogger(getClass());
 
-        @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
+        @Reference(cardinality = ReferenceCardinality.MANDATORY)
         protected CoreService coreService;
 
         private DefaultYangModelRegistry modelRegistry;
diff --git a/drivers/netconf/src/main/java/org/onosproject/drivers/netconf/NetconfDriversLoader.java b/drivers/netconf/src/main/java/org/onosproject/drivers/netconf/NetconfDriversLoader.java
index 7c7464a..3ebaa96 100644
--- a/drivers/netconf/src/main/java/org/onosproject/drivers/netconf/NetconfDriversLoader.java
+++ b/drivers/netconf/src/main/java/org/onosproject/drivers/netconf/NetconfDriversLoader.java
@@ -16,7 +16,7 @@
 
 package org.onosproject.drivers.netconf;
 
-import org.apache.felix.scr.annotations.Component;
+import org.osgi.service.component.annotations.Component;
 import org.onosproject.net.driver.AbstractDriverLoader;
 
 /**
diff --git a/drivers/odtn-driver/BUILD b/drivers/odtn-driver/BUILD
index 28b5474..a71f445 100644
--- a/drivers/odtn-driver/BUILD
+++ b/drivers/odtn-driver/BUILD
@@ -1,5 +1,4 @@
 COMPILE_DEPS = CORE_DEPS + [
-    "@commons_jxpath//jar",
     "//drivers/utilities:onos-drivers-utilities",
     "//protocols/netconf/api:onos-protocols-netconf-api",
     "//apps/odtn/api:onos-apps-odtn-api",
@@ -13,9 +12,6 @@
 BUNDLES = [
     ":onos-drivers-odtn-driver",
     "//drivers/utilities:onos-drivers-utilities",
-    #     "//lib:commons-jxpath",
-    #     "//lib:commons-beanutils", # jxpath dependency
-    #     "//lib:jdom",  # jxpath dependency
 ]
 
 osgi_jar_with_tests(
diff --git a/drivers/odtn-driver/src/main/java/org/onosproject/drivers/odtn/impl/OdtnDriversLoader.java b/drivers/odtn-driver/src/main/java/org/onosproject/drivers/odtn/impl/OdtnDriversLoader.java
index cf4a2ba..598a450 100644
--- a/drivers/odtn-driver/src/main/java/org/onosproject/drivers/odtn/impl/OdtnDriversLoader.java
+++ b/drivers/odtn-driver/src/main/java/org/onosproject/drivers/odtn/impl/OdtnDriversLoader.java
@@ -15,7 +15,7 @@
  */
 package org.onosproject.drivers.odtn.impl;
 
-import org.apache.felix.scr.annotations.Component;
+import org.osgi.service.component.annotations.Component;
 import org.onosproject.net.driver.AbstractDriverLoader;
 import org.onosproject.odtn.behaviour.ConfigurableTransceiver;
 
diff --git a/drivers/oplink/src/main/java/org/onosproject/drivers/oplink/OplinkDriversLoader.java b/drivers/oplink/src/main/java/org/onosproject/drivers/oplink/OplinkDriversLoader.java
index 91c5fd4..9f99aab 100644
--- a/drivers/oplink/src/main/java/org/onosproject/drivers/oplink/OplinkDriversLoader.java
+++ b/drivers/oplink/src/main/java/org/onosproject/drivers/oplink/OplinkDriversLoader.java
@@ -16,7 +16,7 @@
 
 package org.onosproject.drivers.oplink;
 
-import org.apache.felix.scr.annotations.Component;
+import org.osgi.service.component.annotations.Component;
 import org.onosproject.net.driver.AbstractDriverLoader;
 import org.onosproject.net.optical.OpticalDevice;
 
diff --git a/drivers/optical/src/main/java/org/onosproject/driver/optical/flowrule/DefaultCrossConnectCache.java b/drivers/optical/src/main/java/org/onosproject/driver/optical/flowrule/DefaultCrossConnectCache.java
index 77f0ecc..4c561d3 100644
--- a/drivers/optical/src/main/java/org/onosproject/driver/optical/flowrule/DefaultCrossConnectCache.java
+++ b/drivers/optical/src/main/java/org/onosproject/driver/optical/flowrule/DefaultCrossConnectCache.java
@@ -16,9 +16,8 @@
 package org.onosproject.driver.optical.flowrule;
 
 import org.apache.commons.lang3.tuple.Pair;
-import org.apache.felix.scr.annotations.Component;
-import org.apache.felix.scr.annotations.Service;
 import org.onosproject.net.flow.FlowId;
+import org.osgi.service.component.annotations.Component;
 
 import java.util.HashMap;
 import java.util.Map;
@@ -32,8 +31,7 @@
  * for the cache, so do not rely on it to support fail-over in multi-instance deployments.
  * If the instance which holds the cache goes down, you *will* be in trouble.
  */
-@Component(immediate = true, enabled = true)
-@Service
+@Component(immediate = true, service = CrossConnectCache.class)
 public class DefaultCrossConnectCache implements CrossConnectCache {
     private final Map<Integer, Pair<FlowId, Integer>> cache = new HashMap<>();
 
diff --git a/drivers/optical/src/main/java/org/onosproject/drivers/optical/OpticalAdjacencyLinkManager.java b/drivers/optical/src/main/java/org/onosproject/drivers/optical/OpticalAdjacencyLinkManager.java
index 60873f3..d601aa6 100644
--- a/drivers/optical/src/main/java/org/onosproject/drivers/optical/OpticalAdjacencyLinkManager.java
+++ b/drivers/optical/src/main/java/org/onosproject/drivers/optical/OpticalAdjacencyLinkManager.java
@@ -16,12 +16,6 @@
 package org.onosproject.drivers.optical;
 
 import com.google.common.annotations.Beta;
-import org.apache.felix.scr.annotations.Activate;
-import org.apache.felix.scr.annotations.Component;
-import org.apache.felix.scr.annotations.Deactivate;
-import org.apache.felix.scr.annotations.Reference;
-import org.apache.felix.scr.annotations.ReferenceCardinality;
-import org.apache.felix.scr.annotations.Service;
 import org.onosproject.net.ConnectPoint;
 import org.onosproject.net.DeviceId;
 import org.onosproject.net.link.LinkDescription;
@@ -29,6 +23,11 @@
 import org.onosproject.net.link.LinkProviderRegistry;
 import org.onosproject.net.link.LinkProviderService;
 import org.onosproject.net.provider.ProviderId;
+import org.osgi.service.component.annotations.Activate;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Deactivate;
+import org.osgi.service.component.annotations.Reference;
+import org.osgi.service.component.annotations.ReferenceCardinality;
 import org.slf4j.Logger;
 
 import static org.slf4j.LoggerFactory.getLogger;
@@ -41,8 +40,7 @@
  * Registers a dummy LinkProvider to get an instance of LinkProviderService.
  */
 @Beta
-@Component(immediate = true)
-@Service
+@Component(immediate = true, service = OpticalAdjacencyLinkService.class)
 public class OpticalAdjacencyLinkManager implements OpticalAdjacencyLinkService {
 
     private static final ProviderId PID =
@@ -53,7 +51,7 @@
     private LinkProvider linkProvider = new StubLinkProvider();
     private LinkProviderService linkProviderService;
 
-    @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
+    @Reference(cardinality = ReferenceCardinality.MANDATORY)
     protected LinkProviderRegistry linkProviderRegistry;
 
     @Activate
diff --git a/drivers/optical/src/main/java/org/onosproject/drivers/optical/OpticalDriversLoader.java b/drivers/optical/src/main/java/org/onosproject/drivers/optical/OpticalDriversLoader.java
index f532dc9..b0d7487 100644
--- a/drivers/optical/src/main/java/org/onosproject/drivers/optical/OpticalDriversLoader.java
+++ b/drivers/optical/src/main/java/org/onosproject/drivers/optical/OpticalDriversLoader.java
@@ -20,11 +20,11 @@
 import static org.onosproject.net.config.basics.SubjectFactories.DEVICE_SUBJECT_FACTORY;
 
 import java.util.List;
-import org.apache.felix.scr.annotations.Activate;
-import org.apache.felix.scr.annotations.Component;
-import org.apache.felix.scr.annotations.Deactivate;
-import org.apache.felix.scr.annotations.Reference;
-import org.apache.felix.scr.annotations.ReferenceCardinality;
+import org.osgi.service.component.annotations.Activate;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Deactivate;
+import org.osgi.service.component.annotations.Reference;
+import org.osgi.service.component.annotations.ReferenceCardinality;
 import org.onosproject.driver.optical.config.FlowTableConfig;
 import org.onosproject.driver.optical.config.LambdaConfig;
 import org.onosproject.net.ConnectPoint;
@@ -47,7 +47,7 @@
     @SuppressWarnings("unused")
     private OpticalDevice optical;
 
-    @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
+    @Reference(cardinality = ReferenceCardinality.MANDATORY)
     protected NetworkConfigRegistry registry = new NetworkConfigRegistryAdapter();
 
     private final List<ConfigFactory> factories = ImmutableList.of(
diff --git a/drivers/ovsdb/src/main/java/org/onosproject/drivers/ovsdb/OvsdbDriversLoader.java b/drivers/ovsdb/src/main/java/org/onosproject/drivers/ovsdb/OvsdbDriversLoader.java
index 8a7a2b6..6e545cc 100644
--- a/drivers/ovsdb/src/main/java/org/onosproject/drivers/ovsdb/OvsdbDriversLoader.java
+++ b/drivers/ovsdb/src/main/java/org/onosproject/drivers/ovsdb/OvsdbDriversLoader.java
@@ -16,7 +16,7 @@
 
 package org.onosproject.drivers.ovsdb;
 
-import org.apache.felix.scr.annotations.Component;
+import org.osgi.service.component.annotations.Component;
 import org.onosproject.net.driver.AbstractDriverLoader;
 
 /**
diff --git a/drivers/p4runtime/src/main/java/org/onosproject/drivers/p4runtime/P4RuntimeDriversLoader.java b/drivers/p4runtime/src/main/java/org/onosproject/drivers/p4runtime/P4RuntimeDriversLoader.java
index c8717ac..2600c6c 100644
--- a/drivers/p4runtime/src/main/java/org/onosproject/drivers/p4runtime/P4RuntimeDriversLoader.java
+++ b/drivers/p4runtime/src/main/java/org/onosproject/drivers/p4runtime/P4RuntimeDriversLoader.java
@@ -16,7 +16,7 @@
 
 package org.onosproject.drivers.p4runtime;
 
-import org.apache.felix.scr.annotations.Component;
+import org.osgi.service.component.annotations.Component;
 import org.onosproject.net.driver.AbstractDriverLoader;
 
 /**
diff --git a/drivers/p4runtime/src/main/java/org/onosproject/drivers/p4runtime/mirror/AbstractDistributedP4RuntimeMirror.java b/drivers/p4runtime/src/main/java/org/onosproject/drivers/p4runtime/mirror/AbstractDistributedP4RuntimeMirror.java
index dd3ea16..079ab62f4 100644
--- a/drivers/p4runtime/src/main/java/org/onosproject/drivers/p4runtime/mirror/AbstractDistributedP4RuntimeMirror.java
+++ b/drivers/p4runtime/src/main/java/org/onosproject/drivers/p4runtime/mirror/AbstractDistributedP4RuntimeMirror.java
@@ -17,11 +17,11 @@
 package org.onosproject.drivers.p4runtime.mirror;
 
 import com.google.common.annotations.Beta;
-import org.apache.felix.scr.annotations.Activate;
-import org.apache.felix.scr.annotations.Component;
-import org.apache.felix.scr.annotations.Deactivate;
-import org.apache.felix.scr.annotations.Reference;
-import org.apache.felix.scr.annotations.ReferenceCardinality;
+import org.osgi.service.component.annotations.Activate;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Deactivate;
+import org.osgi.service.component.annotations.Reference;
+import org.osgi.service.component.annotations.ReferenceCardinality;
 import org.onlab.util.KryoNamespace;
 import org.onosproject.net.DeviceId;
 import org.onosproject.net.pi.runtime.PiEntity;
@@ -53,7 +53,7 @@
 
     private final Logger log = getLogger(getClass());
 
-    @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
+    @Reference(cardinality = ReferenceCardinality.MANDATORY)
     private StorageService storageService;
 
     private EventuallyConsistentMap<H, TimedEntry<E>> mirrorMap;
diff --git a/drivers/p4runtime/src/main/java/org/onosproject/drivers/p4runtime/mirror/DistributedP4RuntimeGroupMirror.java b/drivers/p4runtime/src/main/java/org/onosproject/drivers/p4runtime/mirror/DistributedP4RuntimeGroupMirror.java
index 4c963a6..e07f417 100644
--- a/drivers/p4runtime/src/main/java/org/onosproject/drivers/p4runtime/mirror/DistributedP4RuntimeGroupMirror.java
+++ b/drivers/p4runtime/src/main/java/org/onosproject/drivers/p4runtime/mirror/DistributedP4RuntimeGroupMirror.java
@@ -16,18 +16,16 @@
 
 package org.onosproject.drivers.p4runtime.mirror;
 
-import org.apache.felix.scr.annotations.Component;
-import org.apache.felix.scr.annotations.Service;
 import org.onlab.util.KryoNamespace;
 import org.onosproject.net.pi.runtime.PiActionGroup;
 import org.onosproject.net.pi.runtime.PiActionGroupHandle;
 import org.onosproject.store.serializers.KryoNamespaces;
+import org.osgi.service.component.annotations.Component;
 
 /**
  * Distributed implementation of a P4Runtime group mirror.
  */
-@Component(immediate = true)
-@Service
+@Component(immediate = true, service = P4RuntimeGroupMirror.class)
 public final class DistributedP4RuntimeGroupMirror
         extends AbstractDistributedP4RuntimeMirror
                         <PiActionGroupHandle, PiActionGroup>
diff --git a/drivers/p4runtime/src/main/java/org/onosproject/drivers/p4runtime/mirror/DistributedP4RuntimeMeterMirror.java b/drivers/p4runtime/src/main/java/org/onosproject/drivers/p4runtime/mirror/DistributedP4RuntimeMeterMirror.java
index f5c1778..bf36274 100644
--- a/drivers/p4runtime/src/main/java/org/onosproject/drivers/p4runtime/mirror/DistributedP4RuntimeMeterMirror.java
+++ b/drivers/p4runtime/src/main/java/org/onosproject/drivers/p4runtime/mirror/DistributedP4RuntimeMeterMirror.java
@@ -16,18 +16,16 @@
 
 package org.onosproject.drivers.p4runtime.mirror;
 
-import org.apache.felix.scr.annotations.Component;
-import org.apache.felix.scr.annotations.Service;
 import org.onlab.util.KryoNamespace;
-import org.onosproject.net.pi.runtime.PiMeterHandle;
 import org.onosproject.net.pi.runtime.PiMeterCellConfig;
+import org.onosproject.net.pi.runtime.PiMeterHandle;
 import org.onosproject.store.serializers.KryoNamespaces;
+import org.osgi.service.component.annotations.Component;
 
 /**
  * Distributed implementation of a P4Runtime meter mirror.
  */
-@Component(immediate = true)
-@Service
+@Component(immediate = true, service = P4RuntimeMeterMirror.class)
 public final class DistributedP4RuntimeMeterMirror
         extends AbstractDistributedP4RuntimeMirror
         <PiMeterHandle, PiMeterCellConfig>
diff --git a/drivers/p4runtime/src/main/java/org/onosproject/drivers/p4runtime/mirror/DistributedP4RuntimeMulticastGroupMirror.java b/drivers/p4runtime/src/main/java/org/onosproject/drivers/p4runtime/mirror/DistributedP4RuntimeMulticastGroupMirror.java
index 4cfe0c5..83c23d8 100644
--- a/drivers/p4runtime/src/main/java/org/onosproject/drivers/p4runtime/mirror/DistributedP4RuntimeMulticastGroupMirror.java
+++ b/drivers/p4runtime/src/main/java/org/onosproject/drivers/p4runtime/mirror/DistributedP4RuntimeMulticastGroupMirror.java
@@ -16,18 +16,16 @@
 
 package org.onosproject.drivers.p4runtime.mirror;
 
-import org.apache.felix.scr.annotations.Component;
-import org.apache.felix.scr.annotations.Service;
 import org.onlab.util.KryoNamespace;
 import org.onosproject.net.pi.runtime.PiMulticastGroupEntry;
 import org.onosproject.net.pi.runtime.PiMulticastGroupEntryHandle;
 import org.onosproject.store.serializers.KryoNamespaces;
+import org.osgi.service.component.annotations.Component;
 
 /**
  * Distributed implementation of a P4Runtime multicast group mirror.
  */
-@Component(immediate = true)
-@Service
+@Component(immediate = true, service = P4RuntimeMulticastGroupMirror.class)
 public final class DistributedP4RuntimeMulticastGroupMirror
         extends AbstractDistributedP4RuntimeMirror
                         <PiMulticastGroupEntryHandle, PiMulticastGroupEntry>
diff --git a/drivers/p4runtime/src/main/java/org/onosproject/drivers/p4runtime/mirror/DistributedP4RuntimeTableMirror.java b/drivers/p4runtime/src/main/java/org/onosproject/drivers/p4runtime/mirror/DistributedP4RuntimeTableMirror.java
index f37cf44..320b3da 100644
--- a/drivers/p4runtime/src/main/java/org/onosproject/drivers/p4runtime/mirror/DistributedP4RuntimeTableMirror.java
+++ b/drivers/p4runtime/src/main/java/org/onosproject/drivers/p4runtime/mirror/DistributedP4RuntimeTableMirror.java
@@ -16,18 +16,16 @@
 
 package org.onosproject.drivers.p4runtime.mirror;
 
-import org.apache.felix.scr.annotations.Component;
-import org.apache.felix.scr.annotations.Service;
 import org.onlab.util.KryoNamespace;
 import org.onosproject.net.pi.runtime.PiTableEntry;
 import org.onosproject.net.pi.runtime.PiTableEntryHandle;
 import org.onosproject.store.serializers.KryoNamespaces;
+import org.osgi.service.component.annotations.Component;
 
 /**
  * Distributed implementation of a P4Runtime table mirror.
  */
-@Component(immediate = true)
-@Service
+@Component(immediate = true, service = P4RuntimeTableMirror.class)
 public final class DistributedP4RuntimeTableMirror
         extends AbstractDistributedP4RuntimeMirror
                         <PiTableEntryHandle, PiTableEntry>
diff --git a/drivers/polatis/netconf/src/main/java/org/onosproject/drivers/polatis/netconf/PolatisDriversLoader.java b/drivers/polatis/netconf/src/main/java/org/onosproject/drivers/polatis/netconf/PolatisDriversLoader.java
index a5cb3f3..2483aaf 100644
--- a/drivers/polatis/netconf/src/main/java/org/onosproject/drivers/polatis/netconf/PolatisDriversLoader.java
+++ b/drivers/polatis/netconf/src/main/java/org/onosproject/drivers/polatis/netconf/PolatisDriversLoader.java
@@ -18,11 +18,11 @@
 
 import com.google.common.collect.ImmutableList;
 
-import org.apache.felix.scr.annotations.Activate;
-import org.apache.felix.scr.annotations.Component;
-import org.apache.felix.scr.annotations.Deactivate;
-import org.apache.felix.scr.annotations.Reference;
-import org.apache.felix.scr.annotations.ReferenceCardinality;
+import org.osgi.service.component.annotations.Activate;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Deactivate;
+import org.osgi.service.component.annotations.Reference;
+import org.osgi.service.component.annotations.ReferenceCardinality;
 import org.onosproject.net.driver.AbstractDriverLoader;
 import org.onosproject.net.optical.OpticalDevice;
 import org.onosproject.ui.UiGlyph;
@@ -39,7 +39,7 @@
     @SuppressWarnings("unused")
     private OpticalDevice optical;
 
-    @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
+    @Reference(cardinality = ReferenceCardinality.MANDATORY)
     protected UiExtensionService uiExtensionService;
 
     private UiGlyphFactory glyphFactory =
diff --git a/drivers/polatis/openflow/src/main/java/org/onosproject/drivers/polatis/openflow/PolatisDriversLoader.java b/drivers/polatis/openflow/src/main/java/org/onosproject/drivers/polatis/openflow/PolatisDriversLoader.java
index f484e5d..20775d0 100644
--- a/drivers/polatis/openflow/src/main/java/org/onosproject/drivers/polatis/openflow/PolatisDriversLoader.java
+++ b/drivers/polatis/openflow/src/main/java/org/onosproject/drivers/polatis/openflow/PolatisDriversLoader.java
@@ -16,11 +16,11 @@
 
 package org.onosproject.drivers.polatis.openflow;
 
-import org.apache.felix.scr.annotations.Activate;
-import org.apache.felix.scr.annotations.Component;
-import org.apache.felix.scr.annotations.Deactivate;
-import org.apache.felix.scr.annotations.Reference;
-import org.apache.felix.scr.annotations.ReferenceCardinality;
+import org.osgi.service.component.annotations.Activate;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Deactivate;
+import org.osgi.service.component.annotations.Reference;
+import org.osgi.service.component.annotations.ReferenceCardinality;
 import org.onosproject.net.driver.AbstractDriverLoader;
 import org.onosproject.net.optical.OpticalDevice;
 import org.onosproject.ui.UiGlyph;
@@ -39,7 +39,7 @@
     @SuppressWarnings("unused")
     private OpticalDevice optical;
 
-    @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
+    @Reference(cardinality = ReferenceCardinality.MANDATORY)
     protected UiExtensionService uiExtensionService;
 
     private UiGlyphFactory glyphFactory =
diff --git a/drivers/polatis/snmp/src/main/java/org/onosproject/drivers/polatis/snmp/PolatisDriversLoader.java b/drivers/polatis/snmp/src/main/java/org/onosproject/drivers/polatis/snmp/PolatisDriversLoader.java
index df63dc3..80528fa 100644
--- a/drivers/polatis/snmp/src/main/java/org/onosproject/drivers/polatis/snmp/PolatisDriversLoader.java
+++ b/drivers/polatis/snmp/src/main/java/org/onosproject/drivers/polatis/snmp/PolatisDriversLoader.java
@@ -16,11 +16,11 @@
 
 package org.onosproject.drivers.polatis.snmp;
 
-import org.apache.felix.scr.annotations.Activate;
-import org.apache.felix.scr.annotations.Component;
-import org.apache.felix.scr.annotations.Deactivate;
-import org.apache.felix.scr.annotations.Reference;
-import org.apache.felix.scr.annotations.ReferenceCardinality;
+import org.osgi.service.component.annotations.Activate;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Deactivate;
+import org.osgi.service.component.annotations.Reference;
+import org.osgi.service.component.annotations.ReferenceCardinality;
 import org.onosproject.net.driver.AbstractDriverLoader;
 import org.onosproject.net.optical.OpticalDevice;
 import org.onosproject.ui.UiGlyph;
@@ -39,7 +39,7 @@
     @SuppressWarnings("unused")
     private OpticalDevice optical;
 
-    @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
+    @Reference(cardinality = ReferenceCardinality.MANDATORY)
     protected UiExtensionService uiExtensionService;
 
     private UiGlyphFactory glyphFactory =
diff --git a/drivers/server/src/main/java/org/onosproject/drivers/server/ServerDriversLoader.java b/drivers/server/src/main/java/org/onosproject/drivers/server/ServerDriversLoader.java
index cb5cc4f..33e9e5b 100644
--- a/drivers/server/src/main/java/org/onosproject/drivers/server/ServerDriversLoader.java
+++ b/drivers/server/src/main/java/org/onosproject/drivers/server/ServerDriversLoader.java
@@ -16,7 +16,7 @@
 
 package org.onosproject.drivers.server;
 
-import org.apache.felix.scr.annotations.Component;
+import org.osgi.service.component.annotations.Component;
 import org.onosproject.net.driver.AbstractDriverLoader;
 
 /**