Deprecating PortDiscovery in favour of DeviceDescritpionDiscovery

Change-Id: Ie9cff7937412c62c8a5a3b75b87a43952017f146
diff --git a/core/api/src/main/java/org/onosproject/net/behaviour/PortDiscovery.java b/core/api/src/main/java/org/onosproject/net/behaviour/PortDiscovery.java
index 7847cd5..6e22e7f 100644
--- a/core/api/src/main/java/org/onosproject/net/behaviour/PortDiscovery.java
+++ b/core/api/src/main/java/org/onosproject/net/behaviour/PortDiscovery.java
@@ -26,12 +26,18 @@
 /**
  * Discovers the set of ports from a device through a device specific protocol.
  * The returned ports are not retrieved from the information stored in ONOS.
+ *
+ * @deprecated 1.6.0 Goldeneye. Use DeviceDescriptionDiscovery instead
  */
+@Deprecated
 public interface PortDiscovery extends HandlerBehaviour {
 
     /**
      * Retrieves the set of ports from a device.
+     *
      * @return a set of port descriptions.
+     * @deprecated 1.6.0 Goldeneye. Use DeviceDescriptionDiscovery instead
      */
+    @Deprecated
     List<PortDescription> getPorts();
 }
\ No newline at end of file
diff --git a/core/api/src/main/java/org/onosproject/net/device/DeviceDescriptionDiscovery.java b/core/api/src/main/java/org/onosproject/net/device/DeviceDescriptionDiscovery.java
index 4bc624b..f7649b0 100644
--- a/core/api/src/main/java/org/onosproject/net/device/DeviceDescriptionDiscovery.java
+++ b/core/api/src/main/java/org/onosproject/net/device/DeviceDescriptionDiscovery.java
@@ -28,7 +28,7 @@
 public interface DeviceDescriptionDiscovery extends HandlerBehaviour {
 
     /**
-     * Returns device description appropriately annotated to support
+     * Returns a device description appropriately annotated to support
      * downstream model extension via projections of the resulting device,
      * as in the following example.
      * <pre>
@@ -40,7 +40,7 @@
     DeviceDescription discoverDeviceDetails();
 
     /**
-     * Returns list of port descriptions appropriately annotated to support
+     * Returns a list of port descriptions appropriately annotated to support
      * downstream model extension via projections of their parent device,
      * as in the following example.
      * <pre>
diff --git a/core/common/src/main/java/org/onosproject/common/net/AbstractDeviceProvider.java b/core/common/src/main/java/org/onosproject/common/net/AbstractDeviceProvider.java
index 9d7e35a..8560625 100644
--- a/core/common/src/main/java/org/onosproject/common/net/AbstractDeviceProvider.java
+++ b/core/common/src/main/java/org/onosproject/common/net/AbstractDeviceProvider.java
@@ -22,6 +22,7 @@
 import org.apache.felix.scr.annotations.Reference;
 import org.apache.felix.scr.annotations.ReferenceCardinality;
 import org.onosproject.net.DeviceId;
+import org.onosproject.net.device.DeviceDescription;
 import org.onosproject.net.device.DeviceDescriptionDiscovery;
 import org.onosproject.net.device.DeviceProvider;
 import org.onosproject.net.device.DeviceProviderRegistry;
@@ -93,10 +94,15 @@
     protected void discoverDevice(DriverHandler handler) {
         DeviceId deviceId = handler.data().deviceId();
         DeviceDescriptionDiscovery discovery = handler.behaviour(DeviceDescriptionDiscovery.class);
-        providerService.deviceConnected(deviceId, discovery.discoverDeviceDetails());
+        DeviceDescription description = discovery.discoverDeviceDetails();
+        if (description != null) {
+            providerService.deviceConnected(deviceId, description);
+        } else {
+            log.info("No other description given for device {}", deviceId);
+        }
         providerService.updatePorts(deviceId, discovery.discoverPortDetails());
-    }
 
+    }
     // TODO: inspect NETCONF, SNMP, RESTSB device providers for additional common patterns
     // TODO: provide base for port status update
     // TODO: integrate with network config for learning about management addresses to probe