blob: 84aaeba9fee34eec890f0e905b2882f9cf012cb5 [file] [log] [blame]
TeruU65bc5ff2014-04-23 22:22:32 -07001package net.onrc.onos.core.topology.web;
2
3import java.io.IOException;
4
5import net.onrc.onos.core.topology.INetworkGraphService;
6import net.onrc.onos.core.topology.NetworkGraph;
7import net.onrc.onos.core.topology.serializers.DeviceSerializer;
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 NetworkGraphDevicesResource extends ServerResource {
18 private static final Logger log = LoggerFactory.getLogger(NetworkGraphDevicesResource.class);
19
20 @Get("json")
21 public String retrieve() {
22 INetworkGraphService networkGraphService = (INetworkGraphService) getContext().getAttributes().
23 get(INetworkGraphService.class.getCanonicalName());
24
25 NetworkGraph graph = networkGraphService.getNetworkGraph();
26
27 ObjectMapper mapper = new ObjectMapper();
28 SimpleModule module = new SimpleModule("module", new Version(1, 0, 0, null));
29 module.addSerializer(new DeviceSerializer());
30 mapper.registerModule(module);
31
32 graph.acquireReadLock();
33 try {
34 return mapper.writeValueAsString(graph.getDevices());
35 } catch (IOException e) {
36 log.error("Error writing device list to JSON", e);
37 return "";
38 } finally {
39 graph.releaseReadLock();
40 }
41 }
42
43}