Added tools for converting dpid to uri and vice versa.
Modified device and link provider to use the new tools.
diff --git a/utils/misc/src/main/java/org/onlab/util/Tools.java b/utils/misc/src/main/java/org/onlab/util/Tools.java
index e1e9ed7..5e63b84 100644
--- a/utils/misc/src/main/java/org/onlab/util/Tools.java
+++ b/utils/misc/src/main/java/org/onlab/util/Tools.java
@@ -1,5 +1,7 @@
package org.onlab.util;
+import com.google.common.base.Strings;
+import com.google.common.primitives.UnsignedLongs;
import com.google.common.util.concurrent.ThreadFactoryBuilder;
import java.util.concurrent.ThreadFactory;
@@ -20,4 +22,34 @@
return new ThreadFactoryBuilder().setNameFormat(pattern).build();
}
+ /**
+ * Converts a string from hex to long.
+ *
+ * @param string hex number in string form; sans 0x
+ * @return long value
+ */
+ public static long fromHex(String string) {
+ return UnsignedLongs.parseUnsignedLong(string, 16);
+ }
+
+ /**
+ * Converts a long value to hex string; 16 wide and sans 0x.
+ *
+ * @param value long value
+ * @return hex string
+ */
+ public static String toHex(long value) {
+ return Strings.padStart(UnsignedLongs.toString(value, 16), 16, '0');
+ }
+
+ /**
+ * Converts a long value to hex string; 16 wide and sans 0x.
+ *
+ * @param value long value
+ * @param width string width; zero padded
+ * @return hex string
+ */
+ public static String toHex(long value, int width) {
+ return Strings.padStart(UnsignedLongs.toString(value, 16), width, '0');
+ }
}
diff --git a/utils/misc/src/test/java/org/onlab/util/ToolsTest.java b/utils/misc/src/test/java/org/onlab/util/ToolsTest.java
new file mode 100644
index 0000000..c384176
--- /dev/null
+++ b/utils/misc/src/test/java/org/onlab/util/ToolsTest.java
@@ -0,0 +1,30 @@
+package org.onlab.util;
+
+import org.junit.Test;
+
+import static org.junit.Assert.*;
+
+/**
+ * Test of the miscellaneous tools.
+ */
+public class ToolsTest {
+
+ @Test
+ public void fromHex() throws Exception {
+ assertEquals(15, Tools.fromHex("0f"));
+ assertEquals(16, Tools.fromHex("10"));
+ assertEquals(65535, Tools.fromHex("ffff"));
+ assertEquals(4096, Tools.fromHex("1000"));
+ assertEquals(0xffffffffffffffffL, Tools.fromHex("ffffffffffffffff"));
+ }
+
+ @Test
+ public void toHex() throws Exception {
+ assertEquals("0f", Tools.toHex(15, 2));
+ assertEquals("ffff", Tools.toHex(65535, 4));
+ assertEquals("1000", Tools.toHex(4096, 4));
+ assertEquals("000000000000000f", Tools.toHex(15));
+ assertEquals("ffffffffffffffff", Tools.toHex(0xffffffffffffffffL));
+
+ }
+}