blob: 059771fc0c0edd8c3ac5b3810c66ea4ce45dda08 [file] [log] [blame]
Jonathan Hart472062d2014-04-03 10:56:48 -07001package net.onrc.onos.core.topology.web;
Jonathan Hart891d0502014-02-10 10:04:08 -08002
3import java.io.IOException;
4
Jonathan Hart472062d2014-04-03 10:56:48 -07005import net.onrc.onos.core.topology.INetworkGraphService;
6import net.onrc.onos.core.topology.NetworkGraph;
7import net.onrc.onos.core.topology.serializers.PortSerializer;
8import net.onrc.onos.core.topology.serializers.SwitchSerializer;
Jonathan Hart891d0502014-02-10 10:04:08 -08009
10import org.codehaus.jackson.Version;
11import org.codehaus.jackson.map.ObjectMapper;
12import org.codehaus.jackson.map.module.SimpleModule;
13import org.restlet.resource.Get;
14import org.restlet.resource.ServerResource;
15import org.slf4j.Logger;
16import org.slf4j.LoggerFactory;
17
18public class NetworkGraphSwitchesResource extends ServerResource {
19
20 private static final Logger log = LoggerFactory.getLogger(NetworkGraphSwitchesResource.class);
21
22 @Get("json")
23 public String retrieve() {
24 INetworkGraphService networkGraphService = (INetworkGraphService) getContext().getAttributes().
25 get(INetworkGraphService.class.getCanonicalName());
26
27 NetworkGraph graph = networkGraphService.getNetworkGraph();
28
29 ObjectMapper mapper = new ObjectMapper();
30 SimpleModule module = new SimpleModule("module", new Version(1, 0, 0, null));
31 module.addSerializer(new SwitchSerializer());
32 module.addSerializer(new PortSerializer());
33 mapper.registerModule(module);
34
35 try {
Pavlin Radoslavovc2f5cdd2014-02-25 14:00:09 -080036 graph.acquireReadLock();
Jonathan Hart891d0502014-02-10 10:04:08 -080037 return mapper.writeValueAsString(graph.getSwitches());
38 } catch (IOException e) {
39 log.error("Error writing switch list to JSON", e);
40 return "";
Pavlin Radoslavovc2f5cdd2014-02-25 14:00:09 -080041 } finally {
42 graph.releaseReadLock();
Jonathan Hart891d0502014-02-10 10:04:08 -080043 }
44 }
Jonathan Hart891d0502014-02-10 10:04:08 -080045}