Simplifying the use-model of AbstractDriverLoader.

Change-Id: Iaf19ce92c7e153b5477340abb8e7650d8434ca86

Simplifying the use-model of AbstractDriverLoader.

Change-Id: Iaf19ce92c7e153b5477340abb8e7650d8434ca86
diff --git a/core/api/src/main/java/org/onosproject/net/driver/AbstractDriverLoader.java b/core/api/src/main/java/org/onosproject/net/driver/AbstractDriverLoader.java
index e07c65e..d97289c 100644
--- a/core/api/src/main/java/org/onosproject/net/driver/AbstractDriverLoader.java
+++ b/core/api/src/main/java/org/onosproject/net/driver/AbstractDriverLoader.java
@@ -23,31 +23,37 @@
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import java.io.InputStream;
-
 /**
- * Bootstrap for built in drivers.
+ * Abstract boot-strapper for loading and registering driver definitions.
  */
 @Component
 public abstract class AbstractDriverLoader {
 
     private final Logger log = LoggerFactory.getLogger(getClass());
 
-    //private static final String DRIVERS_XML = "/onos-drivers.xml";
-
     private DriverProvider provider;
+    private final String path;
 
     @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
     protected DriverAdminService driverAdminService;
 
+    /**
+     * Creates a new loader for resource with the specified path.
+     *
+     * @param path drivers definition XML resource path
+     */
+    protected AbstractDriverLoader(String path) {
+        this.path = path;
+    }
+
     @Activate
     protected void activate() {
         try {
-            provider = new XmlDriverLoader(getClassLoaderInstance())
-                    .loadDrivers(loadXmlDriversStream(), driverAdminService);
+            provider = new XmlDriverLoader(getClass().getClassLoader())
+                    .loadDrivers(getClass().getResourceAsStream(path), driverAdminService);
             driverAdminService.registerProvider(provider);
         } catch (Exception e) {
-            log.error("Unable to load default drivers", e);
+            log.error("Unable to load {} driver definitions", path, e);
         }
         log.info("Started");
     }
@@ -58,8 +64,4 @@
         log.info("Stopped");
     }
 
-    protected abstract InputStream loadXmlDriversStream();
-
-    protected abstract ClassLoader getClassLoaderInstance();
-
 }
diff --git a/drivers/ciena/src/main/java/org/onosproject/drivers/ciena/CienaDriversLoader.java b/drivers/ciena/src/main/java/org/onosproject/drivers/ciena/CienaDriversLoader.java
index d7b8b03..1a19d19 100644
--- a/drivers/ciena/src/main/java/org/onosproject/drivers/ciena/CienaDriversLoader.java
+++ b/drivers/ciena/src/main/java/org/onosproject/drivers/ciena/CienaDriversLoader.java
@@ -19,23 +19,12 @@
 import org.apache.felix.scr.annotations.Component;
 import org.onosproject.net.driver.AbstractDriverLoader;
 
-import java.io.InputStream;
-
 /**
- * Loader for Ciena device drivers from specific xml.
+ * Loader for Ciena device drivers.
  */
 @Component(immediate = true)
 public class CienaDriversLoader extends AbstractDriverLoader {
-
-    private static final String DRIVERS_XML = "/ciena-drivers.xml";
-
-    @Override
-    protected InputStream loadXmlDriversStream() {
-        return getClassLoaderInstance().getResourceAsStream(DRIVERS_XML);
-    }
-
-    @Override
-    protected ClassLoader getClassLoaderInstance() {
-        return getClass().getClassLoader();
+    public CienaDriversLoader() {
+        super("/ciena-drivers.xml");
     }
 }
diff --git a/drivers/default/src/main/java/org/onosproject/driver/DefaultDriversLoader.java b/drivers/default/src/main/java/org/onosproject/driver/DefaultDriversLoader.java
index d7d13f6..fcfd171 100644
--- a/drivers/default/src/main/java/org/onosproject/driver/DefaultDriversLoader.java
+++ b/drivers/default/src/main/java/org/onosproject/driver/DefaultDriversLoader.java
@@ -21,24 +21,13 @@
 import org.onosproject.net.driver.AbstractDriverLoader;
 import org.onosproject.net.driver.DefaultDriverProviderService;
 
-import java.io.InputStream;
-
 /**
- * Loader for default device drivers from specific xml.
+ * Loader for default device drivers.
  */
 @Service
 @Component(immediate = true)
 public class DefaultDriversLoader extends AbstractDriverLoader implements DefaultDriverProviderService {
-
-    private static final String DRIVERS_XML = "/onos-drivers.xml";
-
-    @Override
-    protected InputStream loadXmlDriversStream() {
-       return getClassLoaderInstance().getResourceAsStream(DRIVERS_XML);
-    }
-
-    @Override
-    protected ClassLoader getClassLoaderInstance() {
-        return getClass().getClassLoader();
+    public DefaultDriversLoader() {
+        super("/onos-drivers.xml");
     }
 }
diff --git a/drivers/fujitsu/src/main/java/org/onosproject/drivers/fujitsu/FujitsuDriversLoader.java b/drivers/fujitsu/src/main/java/org/onosproject/drivers/fujitsu/FujitsuDriversLoader.java
index db7bae1..78d6fbd 100644
--- a/drivers/fujitsu/src/main/java/org/onosproject/drivers/fujitsu/FujitsuDriversLoader.java
+++ b/drivers/fujitsu/src/main/java/org/onosproject/drivers/fujitsu/FujitsuDriversLoader.java
@@ -19,23 +19,12 @@
 import org.apache.felix.scr.annotations.Component;
 import org.onosproject.net.driver.AbstractDriverLoader;
 
-import java.io.InputStream;
-
 /**
- * Loader for Fujitsu device drivers from specific xml.
+ * Loader for Fujitsu device drivers.
  */
 @Component(immediate = true)
 public class FujitsuDriversLoader extends AbstractDriverLoader {
-
-    private static final String DRIVERS_XML = "/fujitsu-drivers.xml";
-
-    @Override
-    protected InputStream loadXmlDriversStream() {
-        return getClassLoaderInstance().getResourceAsStream(DRIVERS_XML);
-    }
-
-    @Override
-    protected ClassLoader getClassLoaderInstance() {
-        return getClass().getClassLoader();
+    public FujitsuDriversLoader() {
+        super("/fujitsu-drivers.xml");
     }
 }
diff --git a/drivers/netconf/src/main/java/org/onosproject/drivers/netconf/NetconfDriversLoader.java b/drivers/netconf/src/main/java/org/onosproject/drivers/netconf/NetconfDriversLoader.java
index daea8bb..1e6e903 100644
--- a/drivers/netconf/src/main/java/org/onosproject/drivers/netconf/NetconfDriversLoader.java
+++ b/drivers/netconf/src/main/java/org/onosproject/drivers/netconf/NetconfDriversLoader.java
@@ -19,23 +19,12 @@
 import org.apache.felix.scr.annotations.Component;
 import org.onosproject.net.driver.AbstractDriverLoader;
 
-import java.io.InputStream;
-
 /**
- * Loader for NETCONF device drivers from specific xml.
+ * Loader for NETCONF device drivers.
  */
 @Component(immediate = true)
 public class NetconfDriversLoader extends AbstractDriverLoader {
-
-    private static final String DRIVERS_XML = "/netconf-drivers.xml";
-
-    @Override
-    protected InputStream loadXmlDriversStream() {
-        return getClassLoaderInstance().getResourceAsStream(DRIVERS_XML);
-    }
-
-    @Override
-    protected ClassLoader getClassLoaderInstance() {
-        return getClass().getClassLoader();
+    public NetconfDriversLoader() {
+        super("/netconf-drivers.xml");
     }
 }
diff --git a/drivers/ovsdb/src/main/java/org/onosproject/drivers/ovsdb/OvsdbDriversLoader.java b/drivers/ovsdb/src/main/java/org/onosproject/drivers/ovsdb/OvsdbDriversLoader.java
index 960a4c3..32a8a52 100644
--- a/drivers/ovsdb/src/main/java/org/onosproject/drivers/ovsdb/OvsdbDriversLoader.java
+++ b/drivers/ovsdb/src/main/java/org/onosproject/drivers/ovsdb/OvsdbDriversLoader.java
@@ -19,23 +19,12 @@
 import org.apache.felix.scr.annotations.Component;
 import org.onosproject.net.driver.AbstractDriverLoader;
 
-import java.io.InputStream;
-
 /**
- * Loader for OVSDB device drivers from specific xml.
+ * Loader for OVSDB device drivers.
  */
 @Component(immediate = true)
 public class OvsdbDriversLoader extends AbstractDriverLoader {
-
-    private static final String DRIVERS_XML = "/ovsdb-drivers.xml";
-
-    @Override
-    protected InputStream loadXmlDriversStream() {
-        return getClassLoaderInstance().getResourceAsStream(DRIVERS_XML);
-    }
-
-    @Override
-    protected ClassLoader getClassLoaderInstance() {
-        return getClass().getClassLoader();
+    public OvsdbDriversLoader() {
+        super("/ovsdb-drivers.xml");
     }
 }