blob: 477fc453929fd841d835a7556703ebada595fd99 [file] [log] [blame]
Pavlin Radoslavov5cf1fe02014-07-03 22:52:25 -07001package net.onrc.onos.core.topology.web.serializers;
2
Pavlin Radoslavov17660382014-07-24 21:21:07 -07003import java.io.IOException;
4
Yuta HIGUCHI93d35ea2014-08-31 23:26:13 -07005import net.onrc.onos.core.topology.HostData;
6import net.onrc.onos.core.topology.LinkData;
Yuta HIGUCHId8fd2f52014-09-01 23:19:45 -07007import net.onrc.onos.core.topology.MastershipData;
Yuta HIGUCHI93d35ea2014-08-31 23:26:13 -07008import net.onrc.onos.core.topology.PortData;
9import net.onrc.onos.core.topology.SwitchData;
Pavlin Radoslavov5cf1fe02014-07-03 22:52:25 -070010import net.onrc.onos.core.topology.TopologyEvents;
11import org.codehaus.jackson.JsonGenerator;
12import org.codehaus.jackson.map.SerializerProvider;
13import org.codehaus.jackson.map.ser.std.SerializerBase;
14
Pavlin Radoslavov5cf1fe02014-07-03 22:52:25 -070015/**
Pavlin Radoslavov17660382014-07-24 21:21:07 -070016 * JSON serializer for TopologyEvents objects.
Pavlin Radoslavov5cf1fe02014-07-03 22:52:25 -070017 */
18public class TopologyEventsSerializer extends SerializerBase<TopologyEvents> {
Pavlin Radoslavov5cf1fe02014-07-03 22:52:25 -070019 /**
Pavlin Radoslavov17660382014-07-24 21:21:07 -070020 * Default constructor.
Pavlin Radoslavov5cf1fe02014-07-03 22:52:25 -070021 */
22 public TopologyEventsSerializer() {
23 super(TopologyEvents.class);
24 }
25
26 /**
Pavlin Radoslavov17660382014-07-24 21:21:07 -070027 * Serializes a TopologyEvents object in JSON. The resulting JSON contains
Pavlin Radoslavov5cf1fe02014-07-03 22:52:25 -070028 * the added and removed topology objects: switches, links and ports.
29 *
30 * @param topologyEvents the TopologyEvents that is being converted to JSON
31 * @param jsonGenerator generator to place the serialized JSON into
32 * @param serializerProvider unused but required for method override
33 * @throws IOException if the JSON serialization process fails
34 */
35 @Override
36 public void serialize(TopologyEvents topologyEvents,
37 JsonGenerator jsonGenerator,
38 SerializerProvider serializerProvider)
Pavlin Radoslavov17660382014-07-24 21:21:07 -070039 throws IOException {
Pavlin Radoslavov5cf1fe02014-07-03 22:52:25 -070040
41 // Start the object
42 jsonGenerator.writeStartObject();
43
Pavlin Radoslavovcac157d2014-07-31 13:54:08 -070044 // Output the added switch mastership array
45 jsonGenerator.writeArrayFieldStart("addedSwitchMasterships");
Yuta HIGUCHId8fd2f52014-09-01 23:19:45 -070046 for (final MastershipData mastershipData : topologyEvents.getAddedMastershipDataEntries()) {
47 jsonGenerator.writeObject(mastershipData);
Pavlin Radoslavovcac157d2014-07-31 13:54:08 -070048 }
49 jsonGenerator.writeEndArray();
50
51 // Output the removed switch mastership array
52 jsonGenerator.writeArrayFieldStart("removedSwitchMasterships");
Yuta HIGUCHId8fd2f52014-09-01 23:19:45 -070053 for (final MastershipData mastershipData : topologyEvents.getRemovedMastershipDataEntries()) {
54 jsonGenerator.writeObject(mastershipData);
Pavlin Radoslavovcac157d2014-07-31 13:54:08 -070055 }
56 jsonGenerator.writeEndArray();
57
Pavlin Radoslavov5cf1fe02014-07-03 22:52:25 -070058 // Output the added switches array
59 jsonGenerator.writeArrayFieldStart("addedSwitches");
Yuta HIGUCHI93d35ea2014-08-31 23:26:13 -070060 for (final SwitchData switchData : topologyEvents.getAddedSwitchDataEntries()) {
61 jsonGenerator.writeObject(switchData);
Pavlin Radoslavov5cf1fe02014-07-03 22:52:25 -070062 }
63 jsonGenerator.writeEndArray();
64
65 // Output the removed switches array
66 jsonGenerator.writeArrayFieldStart("removedSwitches");
Yuta HIGUCHI93d35ea2014-08-31 23:26:13 -070067 for (final SwitchData switchData : topologyEvents.getRemovedSwitchDataEntries()) {
68 jsonGenerator.writeObject(switchData);
Pavlin Radoslavov5cf1fe02014-07-03 22:52:25 -070069 }
70 jsonGenerator.writeEndArray();
71
72 // Output the added ports array
73 jsonGenerator.writeArrayFieldStart("addedPorts");
Yuta HIGUCHI93d35ea2014-08-31 23:26:13 -070074 for (final PortData portData : topologyEvents.getAddedPortDataEntries()) {
75 jsonGenerator.writeObject(portData);
Pavlin Radoslavov5cf1fe02014-07-03 22:52:25 -070076 }
77 jsonGenerator.writeEndArray();
78
79 // Output the removed ports array
80 jsonGenerator.writeArrayFieldStart("removedPorts");
Yuta HIGUCHI93d35ea2014-08-31 23:26:13 -070081 for (final PortData portData : topologyEvents.getRemovedPortDataEntries()) {
82 jsonGenerator.writeObject(portData);
Pavlin Radoslavov5cf1fe02014-07-03 22:52:25 -070083 }
84 jsonGenerator.writeEndArray();
85
86 // Output the added links array
87 jsonGenerator.writeArrayFieldStart("addedLinks");
Yuta HIGUCHI93d35ea2014-08-31 23:26:13 -070088 for (final LinkData linkData : topologyEvents.getAddedLinkDataEntries()) {
89 jsonGenerator.writeObject(linkData);
Pavlin Radoslavov5cf1fe02014-07-03 22:52:25 -070090 }
91 jsonGenerator.writeEndArray();
92
93 // Output the removed links array
94 jsonGenerator.writeArrayFieldStart("removedLinks");
Yuta HIGUCHI93d35ea2014-08-31 23:26:13 -070095 for (final LinkData linkData : topologyEvents.getRemovedLinkDataEntries()) {
96 jsonGenerator.writeObject(linkData);
Pavlin Radoslavov5cf1fe02014-07-03 22:52:25 -070097 }
98 jsonGenerator.writeEndArray();
99
100 // Output the added hosts array
101 jsonGenerator.writeArrayFieldStart("addedHosts");
Yuta HIGUCHI93d35ea2014-08-31 23:26:13 -0700102 for (final HostData hostData : topologyEvents.getAddedHostDataEntries()) {
103 jsonGenerator.writeObject(hostData);
Pavlin Radoslavov5cf1fe02014-07-03 22:52:25 -0700104 }
105 jsonGenerator.writeEndArray();
106
107 // Output the removed hosts array
108 jsonGenerator.writeArrayFieldStart("removedHosts");
Yuta HIGUCHI93d35ea2014-08-31 23:26:13 -0700109 for (final HostData hostData : topologyEvents.getRemovedHostDataEntries()) {
110 jsonGenerator.writeObject(hostData);
Pavlin Radoslavov5cf1fe02014-07-03 22:52:25 -0700111 }
112 jsonGenerator.writeEndArray();
113
114 // All done
115 jsonGenerator.writeEndObject();
116 }
117}