blob: ce0709e7818ff268cd7a38c43da540aba4a68ebe [file] [log] [blame]
Ray Milkey7d7f0a02014-06-18 12:52:13 -07001package net.onrc.onos.core.intent.runtime.web.serializers;
Ray Milkey2fa6ca42014-06-13 15:38:20 -07002
3
4import com.google.common.net.InetAddresses;
Pavlin Radoslavovdc59c152014-06-17 17:04:41 -07005import net.floodlightcontroller.util.MACAddress;
Ray Milkey2fa6ca42014-06-13 15:38:20 -07006import net.onrc.onos.core.intent.ShortestPathIntent;
7import org.codehaus.jackson.JsonGenerator;
8import org.codehaus.jackson.map.SerializerProvider;
9import org.codehaus.jackson.map.ser.std.SerializerBase;
10import org.openflow.util.HexString;
11
12import java.io.IOException;
13
14/**
15 * JSON serializer for ShortestPathIntents.
16 */
17public class ShortestPathIntentSerializer extends SerializerBase<ShortestPathIntent> {
18
19 /**
20 * Public constructor - just calls its super class constructor.
21 */
22 public ShortestPathIntentSerializer() {
23 super(ShortestPathIntent.class);
24 }
25
26 /**
27 * Converts an integer into a string representing an IP address.
28 *
29 * @param ipAddress integer representation of the address
30 * @return string that represents the address
31 */
32 private String toIPAddressString(final int ipAddress) {
33 return InetAddresses.fromInteger(ipAddress).getHostAddress();
34 }
35
36 /**
37 * Serializes a ShortestPathIntent object.
38 *
39 * @param intent Intent to serialize
40 * @param jsonGenerator generator to add the serialized object to
41 * @param serializerProvider not used
42 * @throws IOException if the JSON serialization fails
43 */
44 @Override
45 public void serialize(final ShortestPathIntent intent,
46 final JsonGenerator jsonGenerator,
47 final SerializerProvider serializerProvider)
48 throws IOException {
49 jsonGenerator.writeStartObject();
50
51 jsonGenerator.writeStringField("id", intent.getId());
52 jsonGenerator.writeStringField("state", intent.getState().toString());
53 jsonGenerator.writeStringField("pathFrozen",
54 Boolean.toString(intent.isPathFrozen()));
55
56 jsonGenerator.writeStringField("srcSwitchDpid",
57 HexString.toHexString(intent.getSrcSwitchDpid()));
58 jsonGenerator.writeStringField("srcPortNumber",
59 Long.toString(intent.getSrcPortNumber()));
60 jsonGenerator.writeStringField("srcMac",
Pavlin Radoslavovdc59c152014-06-17 17:04:41 -070061 MACAddress.valueOf(intent.getSrcMac()).toString());
Ray Milkey2fa6ca42014-06-13 15:38:20 -070062 jsonGenerator.writeStringField("srcIp",
63 toIPAddressString(intent.getSrcIp()));
64
65 jsonGenerator.writeStringField("dstSwitchDpid",
66 HexString.toHexString(intent.getDstSwitchDpid()));
67 jsonGenerator.writeStringField("dstPortNumber",
68 Long.toString(intent.getDstPortNumber()));
69 jsonGenerator.writeStringField("dstMac",
Pavlin Radoslavovdc59c152014-06-17 17:04:41 -070070 MACAddress.valueOf(intent.getDstMac()).toString());
Ray Milkey2fa6ca42014-06-13 15:38:20 -070071 jsonGenerator.writeStringField("dstIp",
72 toIPAddressString(intent.getDstIp()));
73
74 jsonGenerator.writeStringField("idleTimeout",
75 Integer.toString(intent.getIdleTimeout()));
76 jsonGenerator.writeStringField("hardTimeout",
77 Integer.toString(intent.getHardTimeout()));
78 jsonGenerator.writeStringField("firstSwitchIdleTimeout",
79 Integer.toString(intent.getFirstSwitchIdleTimeout()));
80 jsonGenerator.writeStringField("firstSwitchHardTimeout",
81 Integer.toString(intent.getFirstSwitchHardTimeout()));
82
83 jsonGenerator.writeArrayFieldStart("logs");
84 for (final String log : intent.getLogs()) {
85 jsonGenerator.writeObject(log);
86 }
87 jsonGenerator.writeEndArray();
88
89 jsonGenerator.writeEndObject();
90 }
91}