Prep-work to accept 32bit port number.

Change-Id: I6236d50c15a8728fb786837b9cfae8abde45b5d8
diff --git a/src/main/java/net/onrc/onos/core/util/PortNumber.java b/src/main/java/net/onrc/onos/core/util/PortNumber.java
index c4c7eed..09df247 100644
--- a/src/main/java/net/onrc/onos/core/util/PortNumber.java
+++ b/src/main/java/net/onrc/onos/core/util/PortNumber.java
@@ -39,6 +39,26 @@
     }
 
     /**
+     * Creates the unsigned 16 bit port number.
+     *
+     * @param number unsigned 16 bit port number.
+     * @return PortNumber instance
+     */
+    public static PortNumber uint16(final short number) {
+        return new PortNumber(number);
+    }
+
+    /**
+     * Creates the unsigned 32 bit port number.
+     *
+     * @param number unsigned 32 bit port number.
+     * @return PortNumber instance
+     */
+    public static PortNumber uint32(final int number) {
+        return new PortNumber(number);
+    }
+
+    /**
      * Constructor from an int.
      *
      * @param value the value to use. (Value will not be validated in any way.)
@@ -95,8 +115,7 @@
      */
     @JsonProperty("value")
     public long value() {
-        // TODO Will require masking when we start storing 32bit port number.
-        return value;
+        return 0xffffffffL & value;
     }
 
     /**
diff --git a/src/test/java/net/onrc/onos/core/util/PortNumberTest.java b/src/test/java/net/onrc/onos/core/util/PortNumberTest.java
index eb9915a..d9fbddc 100644
--- a/src/test/java/net/onrc/onos/core/util/PortNumberTest.java
+++ b/src/test/java/net/onrc/onos/core/util/PortNumberTest.java
@@ -16,6 +16,30 @@
     private static final PortNumber PORT_LOCAL = new PortNumber(0xfffe);
 
     /**
+     * Test method for {@link PortNumber#uint16(short)}.
+     */
+    @Test
+    public void testPortNumberUint16() {
+        final PortNumber ref = new PortNumber(PORT_NONE);
+        PortNumber p = PortNumber.uint16((short) 0xffff);
+
+        assertEquals(ref, p);
+        assertEquals(0xFFFFL, p.value());
+    }
+
+    /**
+     * Test method for {@link PortNumber#uint32(int)}.
+     */
+    @Test
+    public void testPortNumberUint32() {
+        final PortNumber ref = new PortNumber("FFFFFFFF", 16);
+        PortNumber p = PortNumber.uint32(0xFFFFFFFF);
+
+        assertEquals(ref, p);
+        assertEquals(0xFFFFFFFFL, p.value());
+    }
+
+    /**
      * Test method for {@link PortNumber#PortNumber(String)}.
      */
     @Test