blob: 8d4bc93202417f86b5e5d2e49f23d2d3b207517c [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.LinkSerializer;
Jonathan Hart891d0502014-02-10 10:04:08 -08008
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 {
Jonathan Hart891d0502014-02-10 10:04:08 -080018
Ray Milkey269ffb92014-04-03 14:43:30 -070019 private static final Logger log = LoggerFactory.getLogger(NetworkGraphLinksResource.class);
Jonathan Hart891d0502014-02-10 10:04:08 -080020
Ray Milkey269ffb92014-04-03 14:43:30 -070021 @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 {
34 graph.acquireReadLock();
35 return mapper.writeValueAsString(graph.getLinks());
36 } catch (IOException e) {
37 log.error("Error writing link list to JSON", e);
38 return "";
39 } finally {
40 graph.releaseReadLock();
41 }
42 }
Jonathan Hart891d0502014-02-10 10:04:08 -080043}