blob: d8c8da7434b6912fe59a96958a2f837389ecec44 [file] [log] [blame]
Pavlin Radoslavov695f8952014-07-23 16:57:01 -07001package net.onrc.onos.core.topology.web.serializers;
2
Pavlin Radoslavov17660382014-07-24 21:21:07 -07003import java.io.IOException;
4import java.util.Map.Entry;
5
Pavlin Radoslavov695f8952014-07-23 16:57:01 -07006import net.onrc.onos.core.topology.MastershipEvent;
7import net.onrc.onos.core.topology.TopologyElement;
8
9import org.codehaus.jackson.JsonGenerator;
10import org.codehaus.jackson.map.SerializerProvider;
11import org.codehaus.jackson.map.ser.std.SerializerBase;
12
Pavlin Radoslavov695f8952014-07-23 16:57:01 -070013/**
Pavlin Radoslavov17660382014-07-24 21:21:07 -070014 * JSON serializer for MastershipEvent objects.
Pavlin Radoslavov695f8952014-07-23 16:57:01 -070015 */
16public class MastershipEventSerializer extends SerializerBase<MastershipEvent> {
Pavlin Radoslavov695f8952014-07-23 16:57:01 -070017 /**
Pavlin Radoslavov17660382014-07-24 21:21:07 -070018 * Default constructor.
Pavlin Radoslavov695f8952014-07-23 16:57:01 -070019 */
20 public MastershipEventSerializer() {
21 super(MastershipEvent.class);
22 }
23
24 /**
Pavlin Radoslavov17660382014-07-24 21:21:07 -070025 * Serializes a MastershipEvent object in JSON.
Pavlin Radoslavov695f8952014-07-23 16:57:01 -070026 *
Pavlin Radoslavov17660382014-07-24 21:21:07 -070027 * @param mastershipEvent the MastershipEvent that is being converted to
28 * JSON
29 * @param jsonGenerator generator to place the serialized JSON into
30 * @param serializerProvider unused but required for method override
31 * @throws IOException if the JSON serialization process fails
Pavlin Radoslavov695f8952014-07-23 16:57:01 -070032 */
33 @Override
34 public void serialize(final MastershipEvent mastershipEvent,
35 final JsonGenerator jsonGenerator,
36 final SerializerProvider serializerProvider)
Pavlin Radoslavov17660382014-07-24 21:21:07 -070037 throws IOException {
Pavlin Radoslavov695f8952014-07-23 16:57:01 -070038
39 //
40 // TODO: For now, the JSON format of the serialized output should
41 // be same as the JSON format of the corresponding class Mastership
42 // (if such class exists).
43 // In the future, we will use a single serializer.
44 //
45
46 jsonGenerator.writeStartObject();
47 jsonGenerator.writeStringField(TopologyElement.TYPE, mastershipEvent.getType());
48 jsonGenerator.writeStringField("dpid",
49 mastershipEvent.getDpid().toString());
50 jsonGenerator.writeStringField("onosInstanceId",
Pavlin Radoslavov53b208a2014-07-28 13:16:11 -070051 mastershipEvent.getOnosInstanceId().toString());
Pavlin Radoslavov695f8952014-07-23 16:57:01 -070052 jsonGenerator.writeStringField("role",
53 mastershipEvent.getRole().name());
Pavlin Radoslavov17660382014-07-24 21:21:07 -070054 jsonGenerator.writeObjectFieldStart("stringAttributes");
55 for (Entry<String, String> entry : mastershipEvent.getAllStringAttributes().entrySet()) {
56 jsonGenerator.writeStringField(entry.getKey(), entry.getValue());
57 }
58 jsonGenerator.writeEndObject(); // stringAttributes
Pavlin Radoslavov695f8952014-07-23 16:57:01 -070059 jsonGenerator.writeEndObject();
60 }
61}