diff --git a/src/main/java/net/onrc/onos/core/intent/runtime/web/ShortestPathResource.java b/src/main/java/net/onrc/onos/core/intent/runtime/web/ShortestPathResource.java
index 69e55d0..1abd61d 100644
--- a/src/main/java/net/onrc/onos/core/intent/runtime/web/ShortestPathResource.java
+++ b/src/main/java/net/onrc/onos/core/intent/runtime/web/ShortestPathResource.java
@@ -1,5 +1,6 @@
 package net.onrc.onos.core.intent.runtime.web;
 
+import static net.onrc.onos.core.topology.web.TopologyResource.eval;
 import java.util.LinkedList;
 import java.util.List;
 
@@ -11,6 +12,7 @@
 import net.onrc.onos.core.topology.Switch;
 import net.onrc.onos.core.topology.Topology;
 import net.onrc.onos.core.util.Dpid;
+
 import org.restlet.representation.Representation;
 import org.restlet.resource.Get;
 import org.restlet.resource.ServerResource;
@@ -74,7 +76,7 @@
                 }
                 links.add(link);
             }
-            return toRepresentation(links, null);
+            return eval(toRepresentation(links, null));
         } finally {
             topology.releaseReadLock();
         }
diff --git a/src/main/java/net/onrc/onos/core/topology/web/DevicesResource.java b/src/main/java/net/onrc/onos/core/topology/web/DevicesResource.java
index ccad694..ef5f4a3 100644
--- a/src/main/java/net/onrc/onos/core/topology/web/DevicesResource.java
+++ b/src/main/java/net/onrc/onos/core/topology/web/DevicesResource.java
@@ -1,5 +1,6 @@
 package net.onrc.onos.core.topology.web;
 
+import static net.onrc.onos.core.topology.web.TopologyResource.eval;
 import net.onrc.onos.core.topology.ITopologyService;
 import net.onrc.onos.core.topology.Topology;
 
@@ -26,7 +27,7 @@
         Topology topology = topologyService.getTopology();
         topology.acquireReadLock();
         try {
-            return toRepresentation(topology.getDevices(), null);
+            return eval(toRepresentation(topology.getDevices(), null));
         } finally {
             topology.releaseReadLock();
         }
diff --git a/src/main/java/net/onrc/onos/core/topology/web/LinksResource.java b/src/main/java/net/onrc/onos/core/topology/web/LinksResource.java
index 2cbf036..6d910a8 100644
--- a/src/main/java/net/onrc/onos/core/topology/web/LinksResource.java
+++ b/src/main/java/net/onrc/onos/core/topology/web/LinksResource.java
@@ -1,5 +1,6 @@
 package net.onrc.onos.core.topology.web;
 
+import static net.onrc.onos.core.topology.web.TopologyResource.eval;
 import net.onrc.onos.core.topology.ITopologyService;
 import net.onrc.onos.core.topology.Topology;
 
@@ -26,7 +27,7 @@
         Topology topology = topologyService.getTopology();
         topology.acquireReadLock();
         try {
-            return toRepresentation(topology.getLinks(), null);
+            return eval(toRepresentation(topology.getLinks(), null));
         } finally {
             topology.releaseReadLock();
         }
diff --git a/src/main/java/net/onrc/onos/core/topology/web/SwitchesResource.java b/src/main/java/net/onrc/onos/core/topology/web/SwitchesResource.java
index 1d4c9d6..dfb381e 100644
--- a/src/main/java/net/onrc/onos/core/topology/web/SwitchesResource.java
+++ b/src/main/java/net/onrc/onos/core/topology/web/SwitchesResource.java
@@ -1,5 +1,6 @@
 package net.onrc.onos.core.topology.web;
 
+import static net.onrc.onos.core.topology.web.TopologyResource.eval;
 import net.onrc.onos.core.topology.ITopologyService;
 import net.onrc.onos.core.topology.Topology;
 
@@ -26,7 +27,7 @@
         Topology topology = topologyService.getTopology();
         topology.acquireReadLock();
         try {
-            return toRepresentation(topology.getSwitches(), null);
+            return eval(toRepresentation(topology.getSwitches(), null));
         } finally {
             topology.releaseReadLock();
         }
diff --git a/src/main/java/net/onrc/onos/core/topology/web/TopologyResource.java b/src/main/java/net/onrc/onos/core/topology/web/TopologyResource.java
index c9476d0..8068552 100644
--- a/src/main/java/net/onrc/onos/core/topology/web/TopologyResource.java
+++ b/src/main/java/net/onrc/onos/core/topology/web/TopologyResource.java
@@ -3,6 +3,7 @@
 import net.onrc.onos.core.topology.ITopologyService;
 import net.onrc.onos.core.topology.Topology;
 
+import org.restlet.engine.io.BufferingRepresentation;
 import org.restlet.representation.Representation;
 import org.restlet.resource.Get;
 import org.restlet.resource.ServerResource;
@@ -25,9 +26,23 @@
         Topology topology = topologyService.getTopology();
         topology.acquireReadLock();
         try {
-            return toRepresentation(topology, null);
+            return eval(toRepresentation(topology, null));
         } finally {
             topology.releaseReadLock();
         }
     }
+
+    /**
+     * Workaround code to trigger evaluation of Representation immediately.
+     *
+     * @param repr Representation to evaluate immediately
+     * @return Evaluated Representation
+     */
+    public static Representation eval(final Representation repr) {
+
+        BufferingRepresentation eval = new BufferingRepresentation(repr);
+        // trigger evaluation
+        eval.getSize();
+        return eval;
+    }
 }
