Add REST API for a device.
In this commit, only added /wm/onos/topology/devices/json to get all device information.

Change-Id: I9a56be1335914ba965f1e921960d3cabf813c61c
diff --git a/src/main/java/net/onrc/onos/core/topology/web/NetworkGraphDevicesResource.java b/src/main/java/net/onrc/onos/core/topology/web/NetworkGraphDevicesResource.java
new file mode 100644
index 0000000..84aaeba
--- /dev/null
+++ b/src/main/java/net/onrc/onos/core/topology/web/NetworkGraphDevicesResource.java
@@ -0,0 +1,43 @@
+package net.onrc.onos.core.topology.web;
+
+import java.io.IOException;
+
+import net.onrc.onos.core.topology.INetworkGraphService;
+import net.onrc.onos.core.topology.NetworkGraph;
+import net.onrc.onos.core.topology.serializers.DeviceSerializer;
+
+import org.codehaus.jackson.Version;
+import org.codehaus.jackson.map.ObjectMapper;
+import org.codehaus.jackson.map.module.SimpleModule;
+import org.restlet.resource.Get;
+import org.restlet.resource.ServerResource;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class NetworkGraphDevicesResource extends ServerResource {
+    private static final Logger log = LoggerFactory.getLogger(NetworkGraphDevicesResource.class);
+
+    @Get("json")
+    public String retrieve() {
+        INetworkGraphService networkGraphService = (INetworkGraphService) getContext().getAttributes().
+                get(INetworkGraphService.class.getCanonicalName());
+
+        NetworkGraph graph = networkGraphService.getNetworkGraph();
+
+        ObjectMapper mapper = new ObjectMapper();
+        SimpleModule module = new SimpleModule("module", new Version(1, 0, 0, null));
+        module.addSerializer(new DeviceSerializer());
+        mapper.registerModule(module);
+
+        graph.acquireReadLock();
+        try {
+            return mapper.writeValueAsString(graph.getDevices());
+        } catch (IOException e) {
+            log.error("Error writing device list to JSON", e);
+            return "";
+        } finally {
+            graph.releaseReadLock();
+        }
+    }
+
+}