blob: f147f0c268fd47c084fdee680710a4736fabb432 [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
Yuta HIGUCHId8fd2f52014-09-01 23:19:45 -07006import net.onrc.onos.core.topology.MastershipData;
Pavlin Radoslavov695f8952014-07-23 16:57:01 -07007import 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/**
Yuta HIGUCHId8fd2f52014-09-01 23:19:45 -070014 * JSON serializer for MastershipData objects.
Pavlin Radoslavov695f8952014-07-23 16:57:01 -070015 */
Yuta HIGUCHId8fd2f52014-09-01 23:19:45 -070016public class MastershipDataSerializer extends SerializerBase<MastershipData> {
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 */
Yuta HIGUCHId8fd2f52014-09-01 23:19:45 -070020 public MastershipDataSerializer() {
21 super(MastershipData.class);
Pavlin Radoslavov695f8952014-07-23 16:57:01 -070022 }
23
24 /**
Yuta HIGUCHId8fd2f52014-09-01 23:19:45 -070025 * Serializes a MastershipData object in JSON.
Pavlin Radoslavov695f8952014-07-23 16:57:01 -070026 *
Yuta HIGUCHId8fd2f52014-09-01 23:19:45 -070027 * @param mastershipData the MastershipData that is being converted to
Pavlin Radoslavov17660382014-07-24 21:21:07 -070028 * 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
Yuta HIGUCHId8fd2f52014-09-01 23:19:45 -070034 public void serialize(final MastershipData mastershipData,
Pavlin Radoslavov695f8952014-07-23 16:57:01 -070035 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();
Yuta HIGUCHId8fd2f52014-09-01 23:19:45 -070047 jsonGenerator.writeStringField(TopologyElement.TYPE, mastershipData.getType());
Pavlin Radoslavov695f8952014-07-23 16:57:01 -070048 jsonGenerator.writeStringField("dpid",
Yuta HIGUCHId8fd2f52014-09-01 23:19:45 -070049 mastershipData.getDpid().toString());
Pavlin Radoslavov695f8952014-07-23 16:57:01 -070050 jsonGenerator.writeStringField("onosInstanceId",
Yuta HIGUCHId8fd2f52014-09-01 23:19:45 -070051 mastershipData.getOnosInstanceId().toString());
Pavlin Radoslavov695f8952014-07-23 16:57:01 -070052 jsonGenerator.writeStringField("role",
Yuta HIGUCHId8fd2f52014-09-01 23:19:45 -070053 mastershipData.getRole().name());
Pavlin Radoslavov17660382014-07-24 21:21:07 -070054 jsonGenerator.writeObjectFieldStart("stringAttributes");
Yuta HIGUCHId8fd2f52014-09-01 23:19:45 -070055 for (Entry<String, String> entry : mastershipData.getAllStringAttributes().entrySet()) {
Pavlin Radoslavov17660382014-07-24 21:21:07 -070056 jsonGenerator.writeStringField(entry.getKey(), entry.getValue());
57 }
58 jsonGenerator.writeEndObject(); // stringAttributes
Pavlin Radoslavov695f8952014-07-23 16:57:01 -070059 jsonGenerator.writeEndObject();
60 }
61}