ONOS-3760 Injection of mfg/hw/sw/serial in BasicDeviceConfig

Change-Id: I7f2269039e0cdabbee85cdad178c4ca27cdc2dce
diff --git a/core/net/src/main/java/org/onosproject/net/device/impl/BasicDeviceOperator.java b/core/net/src/main/java/org/onosproject/net/device/impl/BasicDeviceOperator.java
index 108d68d..c4a4291 100644
--- a/core/net/src/main/java/org/onosproject/net/device/impl/BasicDeviceOperator.java
+++ b/core/net/src/main/java/org/onosproject/net/device/impl/BasicDeviceOperator.java
@@ -59,11 +59,27 @@
         if (bdc.type() != null && bdc.type() != type) {
             type = bdc.type();
         }
+        String manufacturer = descr.manufacturer();
+        if (bdc.manufacturer() != null && !bdc.manufacturer().equals(manufacturer)) {
+            manufacturer = bdc.manufacturer();
+        }
+        String hwVersion = descr.hwVersion();
+        if (bdc.hwVersion() != null && !bdc.hwVersion().equals(hwVersion)) {
+            hwVersion = bdc.hwVersion();
+        }
+        String swVersion = descr.swVersion();
+        if (bdc.swVersion() != null && !bdc.swVersion().equals(swVersion)) {
+            swVersion = bdc.swVersion();
+        }
+        String serial = descr.serialNumber();
+        if (bdc.serial() != null && !bdc.serial().equals(serial)) {
+            serial = bdc.serial();
+        }
 
         SparseAnnotations sa = combine(bdc, descr.annotations());
-        return new DefaultDeviceDescription(descr.deviceUri(), type, descr.manufacturer(),
-                                            descr.hwVersion(), descr.swVersion(),
-                                            descr.serialNumber(), descr.chassisId(), sa);
+        return new DefaultDeviceDescription(descr.deviceUri(), type, manufacturer,
+                                            hwVersion, swVersion,
+                                            serial, descr.chassisId(), sa);
     }
 
     /**