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