[WIP] Upgrade ONOS to karaf version 4.2.1

Change-Id: I7cd40c995bdf1c80f94b1895fb3344e32404c7fa
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 {