blob: 16da94099a07d443738f9240044170bcd79d9247 [file] [log] [blame]
Jonathan Hart891d0502014-02-10 10:04:08 -08001package net.onrc.onos.ofcontroller.networkgraph.web;
2
3import java.io.IOException;
4
5import net.onrc.onos.ofcontroller.networkgraph.INetworkGraphService;
6import net.onrc.onos.ofcontroller.networkgraph.NetworkGraph;
7import net.onrc.onos.ofcontroller.networkgraph.serializers.LinkSerializer;
8
9import org.codehaus.jackson.Version;
10import org.codehaus.jackson.map.ObjectMapper;
11import org.codehaus.jackson.map.module.SimpleModule;
12import org.restlet.resource.Get;
13import org.restlet.resource.ServerResource;
14import org.slf4j.Logger;
15import org.slf4j.LoggerFactory;
16
17public class NetworkGraphLinksResource extends ServerResource {
18
19 private static final Logger log = LoggerFactory.getLogger(NetworkGraphLinksResource.class);
20
21 @Get("json")
22 public String retrieve() {
23 INetworkGraphService networkGraphService = (INetworkGraphService) getContext().getAttributes().
24 get(INetworkGraphService.class.getCanonicalName());
25
26 NetworkGraph graph = networkGraphService.getNetworkGraph();
27
28 ObjectMapper mapper = new ObjectMapper();
29 SimpleModule module = new SimpleModule("module", new Version(1, 0, 0, null));
30 module.addSerializer(new LinkSerializer());
31 mapper.registerModule(module);
32
33 try {
Pavlin Radoslavovc2f5cdd2014-02-25 14:00:09 -080034 graph.acquireReadLock();
Jonathan Hart891d0502014-02-10 10:04:08 -080035 return mapper.writeValueAsString(graph.getLinks());
36 } catch (IOException e) {
37 log.error("Error writing link list to JSON", e);
38 return "";
Pavlin Radoslavovc2f5cdd2014-02-25 14:00:09 -080039 } finally {
40 graph.releaseReadLock();
Jonathan Hart891d0502014-02-10 10:04:08 -080041 }
42 }
43}