blob: 9f0041dba8853b643f7624ab13b4c21463783bca [file] [log] [blame]
Yuta HIGUCHI5c8cbeb2014-06-27 11:13:48 -07001package net.onrc.onos.core.util.serializers;
Ray Milkey2fa6ca42014-06-13 15:38:20 -07002
Yuta HIGUCHI5c8cbeb2014-06-27 11:13:48 -07003import net.onrc.onos.core.util.SwitchPort;
4
Ray Milkey2fa6ca42014-06-13 15:38:20 -07005import org.codehaus.jackson.JsonGenerator;
6import org.codehaus.jackson.map.SerializerProvider;
7import org.codehaus.jackson.map.ser.std.SerializerBase;
Ray Milkey2fa6ca42014-06-13 15:38:20 -07008import java.io.IOException;
9
10/**
11 * JSON Serializer for SwitchPorts.
12 */
13public class SwitchPortSerializer extends SerializerBase<SwitchPort> {
14
15 /**
16 * Public constructor - just calls its super class constructor.
17 */
18 public SwitchPortSerializer() {
19 super(SwitchPort.class);
20 }
21
22 /**
23 * Serializes a SwitchPort object.
24 *
25 * @param switchPort object to serialize
26 * @param jsonGenerator generator to add the serialized object to
27 * @param serializerProvider not used
28 * @throws IOException if the serialization fails
29 */
30 @Override
31 public void serialize(final SwitchPort switchPort,
32 final JsonGenerator jsonGenerator,
33 final SerializerProvider serializerProvider)
34 throws IOException {
35 jsonGenerator.writeStartObject();
36
37 jsonGenerator.writeStringField("dpid",
Yuta HIGUCHI8f3dfa32014-06-25 00:14:25 -070038 switchPort.getDpid().toString());
Pavlin Radoslavov5cf1fe02014-07-03 22:52:25 -070039 //
40 // FIXME: The solution below to preresent the "short" port number
41 // as an unsigned value is a hack. The fix should be elsewhere
42 // (e.g., in class PortNumber itself).
43 //
44 jsonGenerator.writeNumberField("portNumber",
45 (0xffff & switchPort.getPortNumber().value()));
Ray Milkey2fa6ca42014-06-13 15:38:20 -070046
47 jsonGenerator.writeEndObject();
48 }
Ray Milkey2fa6ca42014-06-13 15:38:20 -070049}