[ONOS-4946] fix bug: GetTunnelCount cast exception when getting the device property panel details in WEB GUI

add a judgement, only OpticalTunnelEndpoint has a deviceId

Change-Id: Iff91b0b5f37d2ae838229f4e11e970cd70dd6ae1
diff --git a/web/gui/src/main/java/org/onosproject/ui/impl/TopologyViewMessageHandlerBase.java b/web/gui/src/main/java/org/onosproject/ui/impl/TopologyViewMessageHandlerBase.java
index 33ab98b..872a099 100644
--- a/web/gui/src/main/java/org/onosproject/ui/impl/TopologyViewMessageHandlerBase.java
+++ b/web/gui/src/main/java/org/onosproject/ui/impl/TopologyViewMessageHandlerBase.java
@@ -31,6 +31,7 @@
 import org.onosproject.incubator.net.tunnel.Tunnel;
 import org.onosproject.incubator.net.tunnel.TunnelService;
 import org.onosproject.mastership.MastershipService;
+import org.onosproject.net.ElementId;
 import org.onosproject.net.Annotated;
 import org.onosproject.net.AnnotationKeys;
 import org.onosproject.net.Annotations;
@@ -77,6 +78,7 @@
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
+import java.util.Optional;
 import java.util.concurrent.ConcurrentHashMap;
 
 import static com.google.common.base.Preconditions.checkNotNull;
@@ -395,7 +397,7 @@
         return new PropertyPanel("ONOS Summary", "node")
             .addProp(Properties.VERSION, version)
             .addSeparator()
-            .addProp(Properties.DEVICES,  deviceService.getDeviceCount())
+            .addProp(Properties.DEVICES, deviceService.getDeviceCount())
             .addProp(Properties.LINKS, topology.linkCount())
             .addProp(Properties.HOSTS, hostService.getHostCount())
             .addProp(Properties.TOPOLOGY_SSCS, topology.clusterCount())
@@ -457,12 +459,20 @@
         int count = 0;
         Collection<Tunnel> tunnels = tunnelService.queryAllTunnels();
         for (Tunnel tunnel : tunnels) {
-            OpticalTunnelEndPoint src = (OpticalTunnelEndPoint) tunnel.src();
-            OpticalTunnelEndPoint dst = (OpticalTunnelEndPoint) tunnel.dst();
-            DeviceId srcDevice = (DeviceId) src.elementId().get();
-            DeviceId dstDevice = (DeviceId) dst.elementId().get();
-            if (srcDevice.toString().equals(deviceId.toString()) ||
-                dstDevice.toString().equals(deviceId.toString())) {
+            //Only OpticalTunnelEndPoint has a device
+            if (!(tunnel.src() instanceof OpticalTunnelEndPoint) ||
+                    !(tunnel.dst() instanceof OpticalTunnelEndPoint)) {
+                continue;
+            }
+
+            Optional<ElementId> srcElementId = ((OpticalTunnelEndPoint) tunnel.src()).elementId();
+            Optional<ElementId> dstElementId = ((OpticalTunnelEndPoint) tunnel.dst()).elementId();
+            if (!srcElementId.isPresent() || !dstElementId.isPresent()) {
+                continue;
+            }
+            DeviceId srcDeviceId = (DeviceId) srcElementId.get();
+            DeviceId dstDeviceId = (DeviceId) dstElementId.get();
+            if (srcDeviceId.equals(deviceId) || dstDeviceId.equals(deviceId)) {
                 count++;
             }
         }