Rest API and Services for TopoSwitch
diff --git a/src/main/java/net/floodlightcontroller/core/ISwitchStorage.java b/src/main/java/net/floodlightcontroller/core/ISwitchStorage.java
index 8060c4d..28e6a5d 100644
--- a/src/main/java/net/floodlightcontroller/core/ISwitchStorage.java
+++ b/src/main/java/net/floodlightcontroller/core/ISwitchStorage.java
@@ -3,15 +3,67 @@
 import java.util.Collection;
 import java.util.List;
 
+import org.codehaus.jackson.annotate.JsonAutoDetect;
+import org.codehaus.jackson.annotate.JsonAutoDetect.Visibility;
+import org.codehaus.jackson.annotate.JsonIgnore;
+import org.codehaus.jackson.annotate.JsonProperty;
+import org.codehaus.jackson.map.annotate.JsonSerialize;
+import org.codehaus.jackson.map.ser.StdSerializers;
 import org.openflow.protocol.OFPhysicalPort;
 
+import com.tinkerpop.blueprints.Direction;
+import com.tinkerpop.frames.Adjacency;
+import com.tinkerpop.frames.Incidence;
+import com.tinkerpop.frames.Property;
+
 public interface ISwitchStorage extends INetMapStorage {
 	
 	public enum SwitchState {
 		INACTIVE,
 		ACTIVE
 	}
+
+	public interface ISwitchObject {
+		
+		@JsonProperty("dpid")
+		@Property("dpid")
+		public String getDPID();
+		
+		@JsonProperty("state")
+		@Property("state")
+		public String getState();
+		
+		@JsonIgnore
+		@Property("type")
+		public String getType();
+		
+		@JsonProperty("ports")
+		@Adjacency(label="on")
+		public Iterable<IPortObject> getPorts();
+	}
 	
+	public interface IPortObject {
+		
+		@JsonProperty("state")
+		@Property("state")
+		public int getState();
+		
+		@JsonIgnore
+		@Property("type")
+		public String getType();
+		
+		@JsonProperty("number")
+		@Property("number")
+		public Short getNumber();
+		
+		@JsonProperty("desc")
+		@Property("desc")
+		public String getDesc();
+		
+		@JsonIgnore
+		@Incidence(label="on",direction = Direction.IN)
+		public ISwitchObject getSwitch();
+	}
 	/*
 	 * Update the switch details
 	 */
@@ -49,9 +101,9 @@
 	 */
 	public void deletePort(String dpid, String portName);
 	
-	public List<String> getActiveSwitches();
-	public List<String> getAllSwitches();
-	public List<String> getInactiveSwitches();
+	public Iterable<ISwitchObject> getActiveSwitches();
+	public Iterable<ISwitchObject> getAllSwitches();
+	public Iterable<ISwitchObject> getInactiveSwitches();
 	
 	/*
 	 * Initialize