Move indices to TopologyImpl.

Change-Id: I3efd73129fafb786e959810e8239ce14d26af6d7
diff --git a/src/main/java/net/onrc/onos/core/topology/SwitchImpl.java b/src/main/java/net/onrc/onos/core/topology/SwitchImpl.java
index 4952c6f..ad13a79 100644
--- a/src/main/java/net/onrc/onos/core/topology/SwitchImpl.java
+++ b/src/main/java/net/onrc/onos/core/topology/SwitchImpl.java
@@ -1,18 +1,15 @@
 package net.onrc.onos.core.topology;
 
-import net.onrc.onos.core.util.Dpid;
-import net.onrc.onos.core.util.PortNumber;
-
 import java.util.ArrayList;
 import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
 import java.util.HashSet;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
 
+import net.onrc.onos.core.util.Dpid;
+import net.onrc.onos.core.util.PortNumber;
 import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 
 /**
@@ -24,9 +21,6 @@
 public class SwitchImpl extends TopologyObject implements Switch {
 
     private Dpid dpid;
-    // These needs to be ConcurrentCollecton if allowing the topology to be
-    // accessed concurrently
-    private final Map<PortNumber, Port> ports;
 
     public SwitchImpl(Topology topology, Long dpid) {
         this(topology, new Dpid(dpid));
@@ -35,7 +29,6 @@
     public SwitchImpl(Topology topology, Dpid dpid) {
         super(topology);
         this.dpid = dpid;
-        ports = new HashMap<>();
     }
 
     @Override
@@ -45,12 +38,12 @@
 
     @Override
     public Collection<Port> getPorts() {
-        return Collections.unmodifiableCollection(ports.values());
+        return topology.getPorts(getDpid());
     }
 
     @Override
     public Port getPort(PortNumber number) {
-        return ports.get(number);
+        return topology.getPort(getDpid(), number);
     }
 
     @Override
@@ -82,7 +75,7 @@
         // calculating this every time?
         List<Device> devices = new ArrayList<Device>();
 
-        for (Port port : ports.values()) {
+        for (Port port : getPorts()) {
             for (Device device : port.getDevices()) {
                 devices.add(device);
             }
@@ -91,25 +84,16 @@
         return devices;
     }
 
-    public void addPort(Port port) {
-        this.ports.put(port.getNumber(), port);
-    }
-
-    public Port removePort(Port port) {
-        Port p = this.ports.remove(port.getNumber());
-        return p;
-    }
-
     public Port addPort(Long portNumber) {
         PortImpl port = new PortImpl(topology, this, portNumber);
-        ports.put(port.getNumber(), port);
+        ((TopologyImpl) topology).putPort(port);
         return port;
     }
 
     @Override
     public Iterable<Link> getOutgoingLinks() {
         LinkedList<Link> links = new LinkedList<Link>();
-        for (Port port : ports.values()) {
+        for (Port port : getPorts()) {
             Link link = port.getOutgoingLink();
             if (link != null) {
                 links.add(link);
@@ -121,7 +105,7 @@
     @Override
     public Iterable<Link> getIncomingLinks() {
         LinkedList<Link> links = new LinkedList<Link>();
-        for (Port port : ports.values()) {
+        for (Port port : getPorts()) {
             Link link = port.getIncomingLink();
             if (link != null) {
                 links.add(link);