Topology interface to use Dpid, PortNumber

- Modified Switch interface to use Dpid, PortNumber instead of Long
- Modified Port interface to use Dpid, PortNumber instead of Long
- Modified Topology interface which uses Dpid, PortNumber, SwitchPort

- PortImpl#toString() format has changed: "%d:%d" -> "Dpid#toString():PortNumber#toString"

- Part of ONOS-1564

Change-Id: I8decdbb2fb0cce9e087ad49af3a087b65b8511d7
diff --git a/src/main/java/net/onrc/onos/core/topology/PortEvent.java b/src/main/java/net/onrc/onos/core/topology/PortEvent.java
index 57c648c..5c63de7 100644
--- a/src/main/java/net/onrc/onos/core/topology/PortEvent.java
+++ b/src/main/java/net/onrc/onos/core/topology/PortEvent.java
@@ -1,6 +1,10 @@
 package net.onrc.onos.core.topology;
 
 import net.onrc.onos.core.topology.web.serializers.SwitchPortSerializer;
+import net.onrc.onos.core.util.Dpid;
+import net.onrc.onos.core.util.PortNumber;
+
+import org.apache.commons.lang.Validate;
 import org.codehaus.jackson.map.annotate.JsonSerialize;
 
 import java.nio.ByteBuffer;
@@ -12,6 +16,8 @@
  * TODO: We probably want common base class/interface for Self-Contained Event Object.
  */
 public class PortEvent {
+
+    // TODO eliminate this class and use util.SwitchPort if possible
     @JsonSerialize(using = SwitchPortSerializer.class)
     public static class SwitchPort {
         public final Long dpid;
@@ -31,12 +37,16 @@
             this.number = number;
         }
 
-        public Long getDpid() {
-            return dpid;
+        public SwitchPort(Dpid dpid, PortNumber number) {
+            this(dpid.value(), (long) number.value());
         }
 
-        public Long getNumber() {
-            return number;
+        public Dpid getDpid() {
+            return new Dpid(dpid);
+        }
+
+        public PortNumber getNumber() {
+            return new PortNumber(number.shortValue());
         }
 
         @Override
@@ -100,12 +110,16 @@
         this.id = new SwitchPort(dpid, number);
     }
 
-    public Long getDpid() {
-        return id.dpid;
+    public PortEvent(Dpid dpid, PortNumber number) {
+        this.id = new SwitchPort(dpid, number);
     }
 
-    public Long getNumber() {
-        return id.number;
+    public Dpid getDpid() {
+        return id.getDpid();
+    }
+
+    public PortNumber getNumber() {
+        return id.getNumber();
     }
 
     @Override
@@ -134,6 +148,12 @@
 
     public static final int PORTID_BYTES = SwitchEvent.SWITCHID_BYTES + 2 + 8;
 
+    public static ByteBuffer getPortID(Dpid dpid, PortNumber number) {
+        Validate.notNull(dpid);
+        Validate.notNull(number);
+        return getPortID(dpid.value(), (long) number.value());
+    }
+
     public static ByteBuffer getPortID(Long dpid, Long number) {
         if (dpid == null) {
             throw new IllegalArgumentException("dpid cannot be null");