Cleaned up SDN-IP config reader

Change-Id: I98100a77b7460eeba848c2b7016f51cdcfef072a
diff --git a/apps/sdnip/src/main/java/org/onlab/onos/sdnip/Router.java b/apps/sdnip/src/main/java/org/onlab/onos/sdnip/Router.java
index e4eafb5..f1a14e7 100644
--- a/apps/sdnip/src/main/java/org/onlab/onos/sdnip/Router.java
+++ b/apps/sdnip/src/main/java/org/onlab/onos/sdnip/Router.java
@@ -143,7 +143,7 @@
     }
 
     /**
-     * Starts the Router.
+     * Starts the router.
      */
     public void start() {
         bgpUpdatesExecutor.execute(new Runnable() {
@@ -161,6 +161,14 @@
         });
     }
 
+    /**
+     * Shuts the router down.
+     */
+    public void shutdown() {
+        bgpUpdatesExecutor.shutdownNow();
+        bgpIntentsSynchronizerExecutor.shutdownNow();
+    }
+
     //@Override TODO hook this up to something
     public void leaderChanged(boolean isLeader) {
         log.debug("Leader changed: {}", isLeader);
diff --git a/apps/sdnip/src/main/java/org/onlab/onos/sdnip/SdnIp.java b/apps/sdnip/src/main/java/org/onlab/onos/sdnip/SdnIp.java
index 0f6e38a..4abefa7 100644
--- a/apps/sdnip/src/main/java/org/onlab/onos/sdnip/SdnIp.java
+++ b/apps/sdnip/src/main/java/org/onlab/onos/sdnip/SdnIp.java
@@ -90,6 +90,9 @@
 
     @Deactivate
     protected void deactivate() {
+        bgpSessionManager.shutDown();
+        router.shutdown();
+
         log.info("Stopped");
     }
 
diff --git a/apps/sdnip/src/main/java/org/onlab/onos/sdnip/config/SdnIpConfigReader.java b/apps/sdnip/src/main/java/org/onlab/onos/sdnip/config/SdnIpConfigReader.java
index cde65c6..2fcd1fe 100644
--- a/apps/sdnip/src/main/java/org/onlab/onos/sdnip/config/SdnIpConfigReader.java
+++ b/apps/sdnip/src/main/java/org/onlab/onos/sdnip/config/SdnIpConfigReader.java
@@ -16,6 +16,7 @@
 package org.onlab.onos.sdnip.config;
 
 import java.io.File;
+import java.io.FileNotFoundException;
 import java.io.IOException;
 import java.util.Collections;
 import java.util.Map;
@@ -40,12 +41,8 @@
 
     private static final String DEFAULT_CONFIG_FILE = "config/sdnip.json";
     private String configFileName = DEFAULT_CONFIG_FILE;
-    //private Map<String, Interface> interfaces;
-    // We call the BGP routers in our SDN network the BGP speakers, and call
-    // the BGP routers outside our SDN network the BGP peers.
-    private Map<String, BgpSpeaker> bgpSpeakers;
-    private Map<IpAddress, BgpPeer> bgpPeers;
-    //private InvertedRadixTree<Interface> interfaceRoutes;
+    private Map<String, BgpSpeaker> bgpSpeakers = new ConcurrentHashMap<>();
+    private Map<IpAddress, BgpPeer> bgpPeers = new ConcurrentHashMap<>();
 
     /**
      * Reads the info contained in the configuration file.
@@ -58,78 +55,25 @@
 
         try {
             Configuration config = mapper.readValue(gatewaysFile, Configuration.class);
-            /*interfaces = new ConcurrentHashMap<>();
-            for (Interface intf : config.getInterfaces()) {
-                interfaces.put(intf.getName(), intf);
-            }*/
-            bgpSpeakers = new ConcurrentHashMap<>();
             for (BgpSpeaker speaker : config.getBgpSpeakers()) {
                 bgpSpeakers.put(speaker.name(), speaker);
             }
-            bgpPeers = new ConcurrentHashMap<>();
             for (BgpPeer peer : config.getPeers()) {
                 bgpPeers.put(peer.ipAddress(), peer);
             }
+        } catch (FileNotFoundException e) {
+            log.warn("Configuration file not found: {}", configFileName);
         } catch (IOException e) {
             log.error("Error reading JSON file", e);
-            //throw new ConfigurationRuntimeException("Error in JSON file", e);
         }
-
-        // Populate the interface InvertedRadixTree
-        /*for (Interface intf : interfaces.values()) {
-            Ip4Prefix prefix = intf.getIp4Prefix();
-            String binaryString = RouteEntry.createBinaryString(prefix);
-            interfaceRoutes.put(binaryString, intf);
-        }*/
     }
 
-    /*
-     * To find the Interface which has longest matchable IP prefix (sub-network
-     *  prefix) to next hop IP address.
-     *
-     * @param address the IP address of next hop router
-     * @return the Interface which has longest matchable IP prefix
-     */
-    /*private Interface longestInterfacePrefixMatch(IpAddress address) {
-        Ip4Prefix prefixToSearchFor =
-            new Ip4Prefix(address, (short) Ip4Address.BIT_LENGTH);
-        String binaryString = RouteEntry.createBinaryString(prefixToSearchFor);
-
-        Iterator<Interface> it =
-            interfaceRoutes.getValuesForKeysPrefixing(binaryString).iterator();
-        Interface intf = null;
-        // Find the last prefix, which will be the longest prefix
-        while (it.hasNext()) {
-            intf = it.next();
-        }
-
-        return intf;
-    }*/
-
-    /*@Override
-    public Interface getOutgoingInterface(IpAddress dstIpAddress) {
-        return longestInterfacePrefixMatch(dstIpAddress);
-    }*/
-
     public void init() {
-        //interfaceRoutes = new ConcurrentInvertedRadixTree<>(
-                //new DefaultByteArrayNodeFactory());
-
-        // Reading config values
-        /*String configFilenameParameter = context.getConfigParams(this).get("configfile");
-        if (configFilenameParameter != null) {
-            currentConfigFilename = configFilenameParameter;
-        }*/
         log.debug("Config file set to {}", configFileName);
 
         readConfiguration(configFileName);
     }
 
-    /*@Override
-    public Map<String, Interface> getInterfaces() {
-        return Collections.unmodifiableMap(interfaces);
-    }*/
-
     @Override
     public Map<String, BgpSpeaker> getBgpSpeakers() {
         return Collections.unmodifiableMap(bgpSpeakers);