* Added JsonSerialize to the Flow-related containers.
* Implement the remaining toString() methods that were
returning empty strings.
diff --git a/src/main/java/net/floodlightcontroller/util/serializers/CallerIdSerializer.java b/src/main/java/net/floodlightcontroller/util/serializers/CallerIdSerializer.java
new file mode 100644
index 0000000..9935324
--- /dev/null
+++ b/src/main/java/net/floodlightcontroller/util/serializers/CallerIdSerializer.java
@@ -0,0 +1,23 @@
+package net.floodlightcontroller.util.serializers;
+
+import java.io.IOException;
+
+import org.codehaus.jackson.JsonGenerator;
+import org.codehaus.jackson.JsonProcessingException;
+import org.codehaus.jackson.map.JsonSerializer;
+import org.codehaus.jackson.map.SerializerProvider;
+
+import net.floodlightcontroller.util.CallerId;
+
+/**
+ * Serialize a Caller ID as a string.
+ */
+public class CallerIdSerializer extends JsonSerializer<CallerId> {
+
+ @Override
+ public void serialize(CallerId callerId, JsonGenerator jGen,
+ SerializerProvider serializer)
+ throws IOException, JsonProcessingException {
+ jGen.writeString(callerId.toString());
+ }
+}
diff --git a/src/main/java/net/floodlightcontroller/util/serializers/DataPathEndpointsSerializer.java b/src/main/java/net/floodlightcontroller/util/serializers/DataPathEndpointsSerializer.java
new file mode 100644
index 0000000..e05c21d
--- /dev/null
+++ b/src/main/java/net/floodlightcontroller/util/serializers/DataPathEndpointsSerializer.java
@@ -0,0 +1,26 @@
+package net.floodlightcontroller.util.serializers;
+
+import java.io.IOException;
+
+import org.codehaus.jackson.JsonGenerator;
+import org.codehaus.jackson.JsonProcessingException;
+import org.codehaus.jackson.map.JsonSerializer;
+import org.codehaus.jackson.map.SerializerProvider;
+
+import net.floodlightcontroller.util.DataPathEndpoints;
+
+/**
+ * Serialize a DataPathEndpoints as a string.
+ */
+public class DataPathEndpointsSerializer extends JsonSerializer<DataPathEndpoints> {
+
+ @Override
+ public void serialize(DataPathEndpoints dataPathEndpoints,
+ JsonGenerator jGen, SerializerProvider serializer)
+ throws IOException, JsonProcessingException {
+ jGen.writeStartObject();
+ jGen.writeObjectField("srcPort", dataPathEndpoints.srcPort());
+ jGen.writeObjectField("dstPort", dataPathEndpoints.dstPort());
+ jGen.writeEndObject();
+ }
+}
diff --git a/src/main/java/net/floodlightcontroller/util/serializers/DataPathSerializer.java b/src/main/java/net/floodlightcontroller/util/serializers/DataPathSerializer.java
new file mode 100644
index 0000000..d150c37
--- /dev/null
+++ b/src/main/java/net/floodlightcontroller/util/serializers/DataPathSerializer.java
@@ -0,0 +1,32 @@
+package net.floodlightcontroller.util.serializers;
+
+import java.io.IOException;
+
+import org.codehaus.jackson.JsonGenerator;
+import org.codehaus.jackson.JsonProcessingException;
+import org.codehaus.jackson.map.JsonSerializer;
+import org.codehaus.jackson.map.SerializerProvider;
+
+import net.floodlightcontroller.util.DataPath;
+import net.floodlightcontroller.util.FlowEntry;
+
+/**
+ * Serialize a DataPath as a string.
+ */
+public class DataPathSerializer extends JsonSerializer<DataPath> {
+
+ @Override
+ public void serialize(DataPath dataPath,
+ JsonGenerator jGen, SerializerProvider serializer)
+ throws IOException, JsonProcessingException {
+ jGen.writeStartObject();
+ jGen.writeObjectField("srcPort", dataPath.srcPort());
+ jGen.writeArrayFieldStart("flowEntries");
+ for (FlowEntry fe: dataPath.flowEntries()) {
+ jGen.writeObject(fe);
+ }
+ jGen.writeEndArray();
+ jGen.writeObjectField("dstPort", dataPath.dstPort());
+ jGen.writeEndObject();
+ }
+}
diff --git a/src/main/java/net/floodlightcontroller/util/serializers/DpidSerializer.java b/src/main/java/net/floodlightcontroller/util/serializers/DpidSerializer.java
new file mode 100644
index 0000000..2b71690
--- /dev/null
+++ b/src/main/java/net/floodlightcontroller/util/serializers/DpidSerializer.java
@@ -0,0 +1,23 @@
+package net.floodlightcontroller.util.serializers;
+
+import java.io.IOException;
+
+import org.codehaus.jackson.JsonGenerator;
+import org.codehaus.jackson.JsonProcessingException;
+import org.codehaus.jackson.map.JsonSerializer;
+import org.codehaus.jackson.map.SerializerProvider;
+
+import net.floodlightcontroller.util.Dpid;
+
+/**
+ * Serialize a DPID as a string.
+ */
+public class DpidSerializer extends JsonSerializer<Dpid> {
+
+ @Override
+ public void serialize(Dpid dpid, JsonGenerator jGen,
+ SerializerProvider serializer)
+ throws IOException, JsonProcessingException {
+ jGen.writeString(dpid.toString());
+ }
+}
diff --git a/src/main/java/net/floodlightcontroller/util/serializers/FlowEntryActionsSerializer.java b/src/main/java/net/floodlightcontroller/util/serializers/FlowEntryActionsSerializer.java
new file mode 100644
index 0000000..bd5970d
--- /dev/null
+++ b/src/main/java/net/floodlightcontroller/util/serializers/FlowEntryActionsSerializer.java
@@ -0,0 +1,24 @@
+package net.floodlightcontroller.util.serializers;
+
+import java.io.IOException;
+
+import org.codehaus.jackson.JsonGenerator;
+import org.codehaus.jackson.JsonProcessingException;
+import org.codehaus.jackson.map.JsonSerializer;
+import org.codehaus.jackson.map.SerializerProvider;
+
+import net.floodlightcontroller.util.FlowEntryActions;
+
+/**
+ * Serialize a FlowEntryActions as a string.
+ */
+public class FlowEntryActionsSerializer extends JsonSerializer<FlowEntryActions> {
+
+ @Override
+ public void serialize(FlowEntryActions flowEntryActions,
+ JsonGenerator jGen,
+ SerializerProvider serializer)
+ throws IOException, JsonProcessingException {
+ jGen.writeObject(flowEntryActions);
+ }
+}
diff --git a/src/main/java/net/floodlightcontroller/util/serializers/FlowEntryErrorStateSerializer.java b/src/main/java/net/floodlightcontroller/util/serializers/FlowEntryErrorStateSerializer.java
new file mode 100644
index 0000000..2518e86
--- /dev/null
+++ b/src/main/java/net/floodlightcontroller/util/serializers/FlowEntryErrorStateSerializer.java
@@ -0,0 +1,26 @@
+package net.floodlightcontroller.util.serializers;
+
+import java.io.IOException;
+
+import org.codehaus.jackson.JsonGenerator;
+import org.codehaus.jackson.JsonProcessingException;
+import org.codehaus.jackson.map.JsonSerializer;
+import org.codehaus.jackson.map.SerializerProvider;
+
+import net.floodlightcontroller.util.FlowEntryErrorState;
+
+/**
+ * Serialize a Flow Entry Error State as a string.
+ */
+public class FlowEntryErrorStateSerializer extends JsonSerializer<FlowEntryErrorState> {
+
+ @Override
+ public void serialize(FlowEntryErrorState flowEntryErrorState,
+ JsonGenerator jGen, SerializerProvider serializer)
+ throws IOException, JsonProcessingException {
+ jGen.writeStartObject();
+ jGen.writeNumberField("type", flowEntryErrorState.type());
+ jGen.writeNumberField("code", flowEntryErrorState.code());
+ jGen.writeEndObject();
+ }
+}
diff --git a/src/main/java/net/floodlightcontroller/util/serializers/FlowEntryIdSerializer.java b/src/main/java/net/floodlightcontroller/util/serializers/FlowEntryIdSerializer.java
new file mode 100644
index 0000000..4b6583c
--- /dev/null
+++ b/src/main/java/net/floodlightcontroller/util/serializers/FlowEntryIdSerializer.java
@@ -0,0 +1,23 @@
+package net.floodlightcontroller.util.serializers;
+
+import java.io.IOException;
+
+import org.codehaus.jackson.JsonGenerator;
+import org.codehaus.jackson.JsonProcessingException;
+import org.codehaus.jackson.map.JsonSerializer;
+import org.codehaus.jackson.map.SerializerProvider;
+
+import net.floodlightcontroller.util.FlowEntryId;
+
+/**
+ * Serialize a Flow Entry ID as a hexadecimal string.
+ */
+public class FlowEntryIdSerializer extends JsonSerializer<FlowEntryId> {
+
+ @Override
+ public void serialize(FlowEntryId flowEntryId, JsonGenerator jGen,
+ SerializerProvider serializer)
+ throws IOException, JsonProcessingException {
+ jGen.writeString(flowEntryId.toString());
+ }
+}
diff --git a/src/main/java/net/floodlightcontroller/util/serializers/FlowEntryMatchSerializer.java b/src/main/java/net/floodlightcontroller/util/serializers/FlowEntryMatchSerializer.java
new file mode 100644
index 0000000..0de3b08
--- /dev/null
+++ b/src/main/java/net/floodlightcontroller/util/serializers/FlowEntryMatchSerializer.java
@@ -0,0 +1,28 @@
+package net.floodlightcontroller.util.serializers;
+
+import java.io.IOException;
+
+import org.codehaus.jackson.JsonGenerator;
+import org.codehaus.jackson.JsonProcessingException;
+import org.codehaus.jackson.map.JsonSerializer;
+import org.codehaus.jackson.map.SerializerProvider;
+
+import net.floodlightcontroller.util.FlowEntryMatch;
+
+/**
+ * Serialize a FlowEntryMatch as a string.
+ */
+public class FlowEntryMatchSerializer extends JsonSerializer<FlowEntryMatch> {
+
+ @Override
+ public void serialize(FlowEntryMatch flowEntryMatch,
+ JsonGenerator jGen, SerializerProvider serializer)
+ throws IOException, JsonProcessingException {
+ jGen.writeStartObject();
+ jGen.writeObjectField("srcMac", flowEntryMatch.srcMac());
+ jGen.writeObjectField("dstMac", flowEntryMatch.dstMac());
+ jGen.writeObjectField("srcIPv4Net", flowEntryMatch.srcIPv4Net());
+ jGen.writeObjectField("dstIPv4Net", flowEntryMatch.dstIPv4Net());
+ jGen.writeEndObject();
+ }
+}
diff --git a/src/main/java/net/floodlightcontroller/util/serializers/FlowEntrySerializer.java b/src/main/java/net/floodlightcontroller/util/serializers/FlowEntrySerializer.java
new file mode 100644
index 0000000..9912d55
--- /dev/null
+++ b/src/main/java/net/floodlightcontroller/util/serializers/FlowEntrySerializer.java
@@ -0,0 +1,37 @@
+package net.floodlightcontroller.util.serializers;
+
+import java.io.IOException;
+
+import org.codehaus.jackson.JsonGenerator;
+import org.codehaus.jackson.JsonProcessingException;
+import org.codehaus.jackson.map.JsonSerializer;
+import org.codehaus.jackson.map.SerializerProvider;
+
+import net.floodlightcontroller.util.FlowEntry;
+
+/**
+ * Serialize a FlowEntry as a string.
+ */
+public class FlowEntrySerializer extends JsonSerializer<FlowEntry> {
+
+ @Override
+ public void serialize(FlowEntry flowEntry,
+ JsonGenerator jGen, SerializerProvider serializer)
+ throws IOException, JsonProcessingException {
+ jGen.writeStartObject();
+ jGen.writeObjectField("flowEntryId", flowEntry.flowEntryId());
+ jGen.writeObjectField("flowEntryMatch", flowEntry.flowEntryMatch());
+ jGen.writeObjectField("flowEntryActions",
+ flowEntry.flowEntryActions());
+ jGen.writeObjectField("dpid", flowEntry.dpid());
+ jGen.writeObjectField("inPort", flowEntry.inPort());
+ jGen.writeObjectField("outPort", flowEntry.outPort());
+ jGen.writeObjectField("flowEntryUserState",
+ flowEntry.flowEntryUserState());
+ jGen.writeObjectField("flowEntrySwitchState",
+ flowEntry.flowEntrySwitchState());
+ jGen.writeObjectField("flowEntryErrorState",
+ flowEntry.flowEntryErrorState());
+ jGen.writeEndObject();
+ }
+}
diff --git a/src/main/java/net/floodlightcontroller/util/serializers/FlowIdSerializer.java b/src/main/java/net/floodlightcontroller/util/serializers/FlowIdSerializer.java
new file mode 100644
index 0000000..0e69273
--- /dev/null
+++ b/src/main/java/net/floodlightcontroller/util/serializers/FlowIdSerializer.java
@@ -0,0 +1,23 @@
+package net.floodlightcontroller.util.serializers;
+
+import java.io.IOException;
+
+import org.codehaus.jackson.JsonGenerator;
+import org.codehaus.jackson.JsonProcessingException;
+import org.codehaus.jackson.map.JsonSerializer;
+import org.codehaus.jackson.map.SerializerProvider;
+
+import net.floodlightcontroller.util.FlowId;
+
+/**
+ * Serialize a Flow ID as a hexadecimal string.
+ */
+public class FlowIdSerializer extends JsonSerializer<FlowId> {
+
+ @Override
+ public void serialize(FlowId flowId, JsonGenerator jGen,
+ SerializerProvider serializer)
+ throws IOException, JsonProcessingException {
+ jGen.writeString(flowId.toString());
+ }
+}
diff --git a/src/main/java/net/floodlightcontroller/util/serializers/FlowPathSerializer.java b/src/main/java/net/floodlightcontroller/util/serializers/FlowPathSerializer.java
new file mode 100644
index 0000000..a6a5405
--- /dev/null
+++ b/src/main/java/net/floodlightcontroller/util/serializers/FlowPathSerializer.java
@@ -0,0 +1,27 @@
+package net.floodlightcontroller.util.serializers;
+
+import java.io.IOException;
+
+import org.codehaus.jackson.JsonGenerator;
+import org.codehaus.jackson.JsonProcessingException;
+import org.codehaus.jackson.map.JsonSerializer;
+import org.codehaus.jackson.map.SerializerProvider;
+
+import net.floodlightcontroller.util.FlowPath;
+
+/**
+ * Serialize a FlowPath as a string.
+ */
+public class FlowPathSerializer extends JsonSerializer<FlowPath> {
+
+ @Override
+ public void serialize(FlowPath flowPath,
+ JsonGenerator jGen, SerializerProvider serializer)
+ throws IOException, JsonProcessingException {
+ jGen.writeStartObject();
+ jGen.writeObjectField("flowId", flowPath.flowId());
+ jGen.writeObjectField("installerId", flowPath.installerId());
+ jGen.writeObjectField("dataPath", flowPath.dataPath());
+ jGen.writeEndObject();
+ }
+}
diff --git a/src/main/java/net/floodlightcontroller/util/serializers/IPv4NetSerializer.java b/src/main/java/net/floodlightcontroller/util/serializers/IPv4NetSerializer.java
new file mode 100644
index 0000000..fc71dd3
--- /dev/null
+++ b/src/main/java/net/floodlightcontroller/util/serializers/IPv4NetSerializer.java
@@ -0,0 +1,23 @@
+package net.floodlightcontroller.util.serializers;
+
+import java.io.IOException;
+
+import org.codehaus.jackson.JsonGenerator;
+import org.codehaus.jackson.JsonProcessingException;
+import org.codehaus.jackson.map.JsonSerializer;
+import org.codehaus.jackson.map.SerializerProvider;
+
+import net.floodlightcontroller.util.IPv4Net;
+
+/**
+ * Serialize an IPv4Net address as a string.
+ */
+public class IPv4NetSerializer extends JsonSerializer<IPv4Net> {
+
+ @Override
+ public void serialize(IPv4Net ipv4Net, JsonGenerator jGen,
+ SerializerProvider serializer)
+ throws IOException, JsonProcessingException {
+ jGen.writeString(ipv4Net.toString());
+ }
+}
diff --git a/src/main/java/net/floodlightcontroller/util/serializers/IPv4Serializer.java b/src/main/java/net/floodlightcontroller/util/serializers/IPv4Serializer.java
new file mode 100644
index 0000000..68e952c
--- /dev/null
+++ b/src/main/java/net/floodlightcontroller/util/serializers/IPv4Serializer.java
@@ -0,0 +1,23 @@
+package net.floodlightcontroller.util.serializers;
+
+import java.io.IOException;
+
+import org.codehaus.jackson.JsonGenerator;
+import org.codehaus.jackson.JsonProcessingException;
+import org.codehaus.jackson.map.JsonSerializer;
+import org.codehaus.jackson.map.SerializerProvider;
+
+import net.floodlightcontroller.util.IPv4;
+
+/**
+ * Serialize an IPv4 address as a string.
+ */
+public class IPv4Serializer extends JsonSerializer<IPv4> {
+
+ @Override
+ public void serialize(IPv4 ipv4, JsonGenerator jGen,
+ SerializerProvider serializer)
+ throws IOException, JsonProcessingException {
+ jGen.writeString(ipv4.toString());
+ }
+}
diff --git a/src/main/java/net/floodlightcontroller/util/serializers/IPv6NetSerializer.java b/src/main/java/net/floodlightcontroller/util/serializers/IPv6NetSerializer.java
new file mode 100644
index 0000000..0f59dc2
--- /dev/null
+++ b/src/main/java/net/floodlightcontroller/util/serializers/IPv6NetSerializer.java
@@ -0,0 +1,23 @@
+package net.floodlightcontroller.util.serializers;
+
+import java.io.IOException;
+
+import org.codehaus.jackson.JsonGenerator;
+import org.codehaus.jackson.JsonProcessingException;
+import org.codehaus.jackson.map.JsonSerializer;
+import org.codehaus.jackson.map.SerializerProvider;
+
+import net.floodlightcontroller.util.IPv6Net;
+
+/**
+ * Serialize an IPv6Net address as a string.
+ */
+public class IPv6NetSerializer extends JsonSerializer<IPv6Net> {
+
+ @Override
+ public void serialize(IPv6Net ipv6Net, JsonGenerator jGen,
+ SerializerProvider serializer)
+ throws IOException, JsonProcessingException {
+ jGen.writeString(ipv6Net.toString());
+ }
+}
diff --git a/src/main/java/net/floodlightcontroller/util/serializers/IPv6Serializer.java b/src/main/java/net/floodlightcontroller/util/serializers/IPv6Serializer.java
new file mode 100644
index 0000000..dabbfa4
--- /dev/null
+++ b/src/main/java/net/floodlightcontroller/util/serializers/IPv6Serializer.java
@@ -0,0 +1,23 @@
+package net.floodlightcontroller.util.serializers;
+
+import java.io.IOException;
+
+import org.codehaus.jackson.JsonGenerator;
+import org.codehaus.jackson.JsonProcessingException;
+import org.codehaus.jackson.map.JsonSerializer;
+import org.codehaus.jackson.map.SerializerProvider;
+
+import net.floodlightcontroller.util.IPv6;
+
+/**
+ * Serialize an IPv6 address as a string.
+ */
+public class IPv6Serializer extends JsonSerializer<IPv6> {
+
+ @Override
+ public void serialize(IPv6 ipv6, JsonGenerator jGen,
+ SerializerProvider serializer)
+ throws IOException, JsonProcessingException {
+ jGen.writeString(ipv6.toString());
+ }
+}
diff --git a/src/main/java/net/floodlightcontroller/util/serializers/PortSerializer.java b/src/main/java/net/floodlightcontroller/util/serializers/PortSerializer.java
new file mode 100644
index 0000000..e79c600
--- /dev/null
+++ b/src/main/java/net/floodlightcontroller/util/serializers/PortSerializer.java
@@ -0,0 +1,23 @@
+package net.floodlightcontroller.util.serializers;
+
+import java.io.IOException;
+
+import org.codehaus.jackson.JsonGenerator;
+import org.codehaus.jackson.JsonProcessingException;
+import org.codehaus.jackson.map.JsonSerializer;
+import org.codehaus.jackson.map.SerializerProvider;
+
+import net.floodlightcontroller.util.Port;
+
+/**
+ * Serialize a Port as a string.
+ */
+public class PortSerializer extends JsonSerializer<Port> {
+
+ @Override
+ public void serialize(Port port, JsonGenerator jGen,
+ SerializerProvider serializer)
+ throws IOException, JsonProcessingException {
+ jGen.writeNumber(port.value());
+ }
+}
diff --git a/src/main/java/net/floodlightcontroller/util/serializers/SwitchPortSerializer.java b/src/main/java/net/floodlightcontroller/util/serializers/SwitchPortSerializer.java
new file mode 100644
index 0000000..8abbb52
--- /dev/null
+++ b/src/main/java/net/floodlightcontroller/util/serializers/SwitchPortSerializer.java
@@ -0,0 +1,26 @@
+package net.floodlightcontroller.util.serializers;
+
+import java.io.IOException;
+
+import org.codehaus.jackson.JsonGenerator;
+import org.codehaus.jackson.JsonProcessingException;
+import org.codehaus.jackson.map.JsonSerializer;
+import org.codehaus.jackson.map.SerializerProvider;
+
+import net.floodlightcontroller.util.SwitchPort;
+
+/**
+ * Serialize a SwitchPort as a string.
+ */
+public class SwitchPortSerializer extends JsonSerializer<SwitchPort> {
+
+ @Override
+ public void serialize(SwitchPort switchPort,
+ JsonGenerator jGen, SerializerProvider serializer)
+ throws IOException, JsonProcessingException {
+ jGen.writeStartObject();
+ jGen.writeObjectField("dpid", switchPort.dpid());
+ jGen.writeObjectField("port", switchPort.port());
+ jGen.writeEndObject();
+ }
+}