Fix a bug when creating FlowId and FlowBatchId from hex string:

 * Added static methods FlowId.valueOf(String) and FlowBatchId.valueOf(String)
   Implementation-wise, those methods are practically same as
   IntentId.valueOf(String)

 * Used the above methods as appropriate.

This fixes an exception that for some reason only occasionally shows-up
in logs of some of the unit tests, and also does not break those tests.

Also, make the change to accept hex strings starting with either 0x or 0X.

Change-Id: Iaaee529866deb1a89ccc3f306901672f25be6326
diff --git a/src/main/java/net/onrc/onos/core/flowmanager/SharedFlowBatchMapEventDispatcher.java b/src/main/java/net/onrc/onos/core/flowmanager/SharedFlowBatchMapEventDispatcher.java
index 7107be8..d87defb 100644
--- a/src/main/java/net/onrc/onos/core/flowmanager/SharedFlowBatchMapEventDispatcher.java
+++ b/src/main/java/net/onrc/onos/core/flowmanager/SharedFlowBatchMapEventDispatcher.java
@@ -59,7 +59,7 @@
         if (value instanceof FlowBatchOperation) {
             // Handles events from flowBatchMap.
             final FlowBatchOperation flowOp = (FlowBatchOperation) value;
-            final FlowBatchId id = new FlowBatchId(Long.parseLong(event.getKey()));
+            final FlowBatchId id = FlowBatchId.valueOf(event.getKey());
             log.trace("Flow batch operation ID:{}, {} was added", id, flowOp);
             for (FlowBatchMapEventListener e : listeners) {
                 FlowBatchOperation copiedFlowOp =
@@ -70,7 +70,7 @@
         } else if (value instanceof FlowBatchState) {
             // Handles events from flowBatchStateMap.
             final FlowBatchState state = (FlowBatchState) value;
-            final FlowBatchId id = new FlowBatchId(Long.parseLong(event.getKey()));
+            final FlowBatchId id = FlowBatchId.valueOf(event.getKey());
             log.trace("FlowState of FlowId {} was set to {}", id, state);
             for (FlowBatchMapEventListener e : listeners) {
                 e.flowBatchOperationStateChanged(id, FlowBatchState.SUBMITTED, state);
@@ -86,7 +86,7 @@
         if (value instanceof FlowBatchOperation) {
             // Handles events from flowBatchMap.
             final FlowBatchOperation flowOp = (FlowBatchOperation) value;
-            final FlowBatchId id = new FlowBatchId(Long.parseLong(event.getKey()));
+            final FlowBatchId id = FlowBatchId.valueOf(event.getKey());
             log.trace("Flow batch operation ID:{}, {} was removed", id, flowOp);
             for (FlowBatchMapEventListener e : listeners) {
                 e.flowBatchOperationRemoved(id);
@@ -110,7 +110,7 @@
             Object oldValue = KryoFactory.deserialize(event.getOldValue());
             final FlowBatchState currentState = (FlowBatchState) value;
             final FlowBatchState oldState = (FlowBatchState) oldValue;
-            final FlowBatchId id = new FlowBatchId(Long.parseLong(event.getKey()));
+            final FlowBatchId id = FlowBatchId.valueOf(event.getKey());
             log.trace("Flow batch state of ID:{} was updated from {} to {}",
                     id, oldState, currentState);
             for (FlowBatchMapEventListener e : listeners) {