Quick fix for cast exception in GossipDeviceStore.
This workaround should be fixed after ONOS-3503 is done.

Change-Id: I70c75867c9dd27adf3cdd3c467c0c1247eccd0cf
diff --git a/ecord/co/src/main/java/org/onosproject/ecord/co/BigSwitchManager.java b/ecord/co/src/main/java/org/onosproject/ecord/co/BigSwitchManager.java
index c2f801f..906fa35 100644
--- a/ecord/co/src/main/java/org/onosproject/ecord/co/BigSwitchManager.java
+++ b/ecord/co/src/main/java/org/onosproject/ecord/co/BigSwitchManager.java
@@ -27,10 +27,16 @@
 import org.onosproject.net.Device;
 import org.onosproject.net.Port;
 import org.onosproject.net.PortNumber;
-import org.onosproject.net.device.DefaultPortDescription;
+import org.onosproject.net.OchPort;
+import org.onosproject.net.OduCltPort;
+import org.onosproject.net.OmsPort;
 import org.onosproject.net.device.DeviceEvent;
 import org.onosproject.net.device.DeviceListener;
 import org.onosproject.net.device.DeviceService;
+import org.onosproject.net.device.DefaultPortDescription;
+import org.onosproject.net.device.OmsPortDescription;
+import org.onosproject.net.device.OchPortDescription;
+import org.onosproject.net.device.OduCltPortDescription;
 import org.onosproject.net.device.PortDescription;
 import org.onosproject.net.edge.EdgePortEvent;
 import org.onosproject.net.edge.EdgePortListener;
@@ -135,14 +141,45 @@
         // add annotation about underlying physical connect-point
         annot.set(REALIZED_BY, String.format("%s/%s", cp.deviceId().toString(),
                                                       cp.port().toString()));
+        PortNumber portNumber = PortNumber.portNumber(portMap.get(cp).value());
 
-        return new DefaultPortDescription(
-                PortNumber.portNumber(portMap.get(cp).value()),
-                p.isEnabled(),
-                p.type(),
-                p.portSpeed(),
-                annot.build()
-        );
+        // FIXME remove the code specific to optical port types
+        switch (p.type()) {
+            case OMS:
+                OmsPort oms = (OmsPort) p;
+                return new OmsPortDescription(
+                        portNumber,
+                        p.isEnabled(),
+                        oms.minFrequency(),
+                        oms.maxFrequency(),
+                        oms.grid(),
+                        annot.build());
+            case OCH:
+                OchPort och = (OchPort) p;
+                return new OchPortDescription(
+                        portNumber,
+                        p.isEnabled(),
+                        och.signalType(),
+                        och.isTunable(),
+                        och.lambda(),
+                        annot.build());
+            case ODUCLT:
+                OduCltPort odu = (OduCltPort) p;
+                return new OduCltPortDescription(
+                        portNumber,
+                        p.isEnabled(),
+                        odu.signalType(),
+                        annot.build()
+                );
+            default:
+                return new DefaultPortDescription(
+                        portNumber,
+                        p.isEnabled(),
+                        p.type(),
+                        p.portSpeed(),
+                        annot.build()
+                );
+        }
     }
 
     private class InternalEdgeListener implements EdgePortListener {