Backend changes to get all flow summary to improve performance
diff --git a/src/main/java/net/floodlightcontroller/flowcache/web/DatapathSummarySerializer.java b/src/main/java/net/floodlightcontroller/flowcache/web/DatapathSummarySerializer.java
new file mode 100644
index 0000000..b780e5c
--- /dev/null
+++ b/src/main/java/net/floodlightcontroller/flowcache/web/DatapathSummarySerializer.java
@@ -0,0 +1,82 @@
+package net.floodlightcontroller.flowcache.web;
+
+import java.io.IOException;
+
+import org.codehaus.jackson.JsonGenerator;
+import org.codehaus.jackson.JsonProcessingException;
+import org.codehaus.jackson.map.JsonSerializer;
+import org.codehaus.jackson.map.SerializerProvider;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class DatapathSummarySerializer extends JsonSerializer<String>{
+	static Logger log = LoggerFactory.getLogger(DatapathSummarySerializer.class);
+	
+	@Override
+	public void serialize(String datapathSummary, JsonGenerator jGen,
+			SerializerProvider serializer) throws IOException,
+			JsonProcessingException {
+		
+		String[] flowEntries = datapathSummary.split(";");
+		if (flowEntries.length < 2){
+			log.debug("datapathSummary string to short to parse: {}", 
+					datapathSummary);
+			jGen.writeStartObject();
+			jGen.writeEndObject();
+			return;
+		}
+		
+		String[] srcFlowEntry = flowEntries[0].split("/");
+		String[] dstFlowEntry = flowEntries[flowEntries.length - 1].split("/");
+		if (srcFlowEntry.length != 3 || dstFlowEntry.length != 3){
+			log.debug("Malformed datapathSummary string: {}", datapathSummary);
+			jGen.writeStartObject();
+			jGen.writeEndObject();
+			return;
+		}
+		
+		jGen.writeStartObject();
+		
+		/*
+		jGen.writeObjectFieldStart("srcPort");
+		jGen.writeObjectFieldStart("dpid");
+		jGen.writeStringField("value", srcFlowEntry[1]);
+		jGen.writeEndObject();
+		jGen.writeObjectFieldStart("port");
+		jGen.writeStringField("value", srcFlowEntry[0]);
+		jGen.writeEndObject();
+		jGen.writeEndObject();
+		
+		jGen.writeObjectFieldStart("dstPort");
+		jGen.writeObjectFieldStart("dpid");
+		jGen.writeStringField("value", srcFlowEntry[1]);
+		jGen.writeEndObject();
+		jGen.writeObjectFieldStart("port");
+		jGen.writeStringField("value", srcFlowEntry[2]);
+		jGen.writeEndObject();
+		jGen.writeEndObject();
+		*/
+		jGen.writeArrayFieldStart("flowEntries");
+		
+		for (String flowEntryString : flowEntries){
+			String[] flowEntry = flowEntryString.split("/");
+			if (flowEntry.length != 3){
+				log.debug("Malformed datapathSummary string: {}", datapathSummary);
+				jGen.writeStartObject();
+				jGen.writeEndObject();
+				continue;
+			}
+			
+			jGen.writeStartObject();
+			jGen.writeObjectFieldStart("dpid");
+			jGen.writeStringField("value", flowEntry[1]);
+			jGen.writeEndObject();
+			jGen.writeEndObject();
+		}
+		
+		jGen.writeEndArray();
+		
+		jGen.writeEndObject();
+	}
+
+}
diff --git a/src/main/java/net/floodlightcontroller/flowcache/web/GetSummaryFlowsResource.java b/src/main/java/net/floodlightcontroller/flowcache/web/GetSummaryFlowsResource.java
index 7a928c9..5f63222 100644
--- a/src/main/java/net/floodlightcontroller/flowcache/web/GetSummaryFlowsResource.java
+++ b/src/main/java/net/floodlightcontroller/flowcache/web/GetSummaryFlowsResource.java
@@ -2,9 +2,10 @@
 
 import java.util.ArrayList;
 
+import net.floodlightcontroller.core.INetMapTopologyObjects.IFlowPath;
 import net.floodlightcontroller.flowcache.IFlowService;
-import net.floodlightcontroller.util.FlowPath;
 import net.floodlightcontroller.util.FlowId;
+import net.floodlightcontroller.util.FlowPath;
 
 import org.restlet.resource.Get;
 import org.restlet.resource.ServerResource;
@@ -15,8 +16,8 @@
     protected static Logger log = LoggerFactory.getLogger(GetSummaryFlowsResource.class);
 
     @Get("json")
-    public ArrayList<FlowPath> retrieve() {
-    	ArrayList<FlowPath> result = null;
+    public ArrayList<IFlowPath> retrieve() {
+    	ArrayList<IFlowPath> result = null;
     	
     	FlowId flowId;
     	int maxFlows = 0;