Github user jburwell commented on a diff in the pull request:
https://github.com/apache/cloudstack/pull/801#discussion_r43053663
--- Diff:
plugins/network-elements/nuage-vsp/src/net/nuage/vsp/acs/NuageVspPluginClientLoader.java
---
@@ -19,28 +19,101 @@
package net.nuage.vsp.acs;
+import net.nuage.vsp.acs.client.NuageVspApiClient;
+import net.nuage.vsp.acs.client.NuageVspElementClient;
+import net.nuage.vsp.acs.client.NuageVspGuruClient;
+import net.nuage.vsp.acs.client.NuageVspManagerClient;
+import net.nuage.vsp.acs.client.NuageVspSyncClient;
+import org.apache.log4j.Logger;
+
+import javax.naming.ConfigurationException;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLClassLoader;
public class NuageVspPluginClientLoader {
- private static NuageVspPluginClientLoader
nuageVspPluginClientClassloader;
- private ClassLoader loader = null;
+ private ClassLoader _loader = null;
+ private static final Logger s_logger =
Logger.getLogger(NuageVspPluginClientLoader.class);
+
+ private NuageVspApiClient _nuageVspApiClient;
+ private NuageVspElementClient _nuageVspElementClient;
+ private NuageVspGuruClient _nuageVspGuruClient;
+ private NuageVspManagerClient _nuageVspManagerClient;
+ private NuageVspSyncClient _nuageVspSyncClient;
+
+ private static final String NUAGE_PLUGIN_CLIENT_JAR_FILE =
"/usr/share/nuagevsp/lib/nuage-vsp-acs-client.jar";
+ private static final String NUAGE_VSP_API_CLIENT_IMPL =
"net.nuage.vsp.acs.client.impl.NuageVspApiClientImpl";
+ private static final String NUAGE_VSP_SYNC_CLIENT_IMPL =
"net.nuage.vsp.acs.client.impl.NuageVspSyncClientImpl";
+ private static final String NUAGE_VSP_ELEMENT_CLIENT_IMPL =
"net.nuage.vsp.acs.client.impl.NuageVspElementClientImpl";
+ private static final String NUAGE_VSP_GURU_CLIENT_IMPL =
"net.nuage.vsp.acs.client.impl.NuageVspGuruClientImpl";
+ private static final String NUAGE_VSP_MANAGER_CLIENT_IMPL =
"net.nuage.vsp.acs.client.impl.NuageVspManagerClientImpl";
private NuageVspPluginClientLoader(String
nuagePluginClientJarLocation) {
try {
- loader = URLClassLoader.newInstance(new URL[] {new
URL("jar:file:" + nuagePluginClientJarLocation + "!/")},
+ _loader = URLClassLoader.newInstance(new URL[] {new
URL("jar:file:" + nuagePluginClientJarLocation + "!/")},
getClass().getClassLoader());
} catch (MalformedURLException e) {
- e.printStackTrace();
+ throw new IllegalArgumentException(e);
}
}
- public static ClassLoader getClassLoader(String
nuagePluginClientJarLocation) {
- if (nuageVspPluginClientClassloader == null) {
- nuageVspPluginClientClassloader = new
NuageVspPluginClientLoader(nuagePluginClientJarLocation);
+ public static NuageVspPluginClientLoader getClientLoader(String
relativePath, String[] cmsUserInfo, int numRetries, int retryInterval,
+ String nuageVspCmsId) throws ConfigurationException {
+ NuageVspPluginClientLoader nuageVspPluginClientClassloader = new
NuageVspPluginClientLoader(NUAGE_PLUGIN_CLIENT_JAR_FILE);
+ nuageVspPluginClientClassloader.loadClasses(relativePath,
cmsUserInfo, numRetries, retryInterval, nuageVspCmsId);
+ return nuageVspPluginClientClassloader;
+ }
+
+ private void loadClasses(String relativePath, String[] cmsUserInfo,
int numRetries, int retryInterval, String nuageVspCmsId) throws
ConfigurationException {
+ try {
+ Class<?> nuageVspApiClientClass =
Class.forName(NUAGE_VSP_API_CLIENT_IMPL, true, _loader);
+ Class<?> nuageVspSyncClientClass =
Class.forName(NUAGE_VSP_SYNC_CLIENT_IMPL, true, _loader);
+ Class<?> nuageVspGuruClientClass =
Class.forName(NUAGE_VSP_GURU_CLIENT_IMPL, true, _loader);
+ Class<?> nuageVspElementClientClass =
Class.forName(NUAGE_VSP_ELEMENT_CLIENT_IMPL, true, _loader);
+ Class<?> nuageVspManagerClientClass =
Class.forName(NUAGE_VSP_MANAGER_CLIENT_IMPL, true, _loader);
+
+ //Instantiate the instances
+ _nuageVspApiClient =
(NuageVspApiClient)nuageVspApiClientClass.newInstance();
+ _nuageVspApiClient.setNuageVspHost(relativePath, cmsUserInfo,
numRetries, retryInterval, nuageVspCmsId);
+ _nuageVspSyncClient =
(NuageVspSyncClient)nuageVspSyncClientClass.newInstance();
+ _nuageVspSyncClient.setNuageVspApiClient(_nuageVspApiClient);
+ _nuageVspGuruClient =
(NuageVspGuruClient)nuageVspGuruClientClass.newInstance();
+ _nuageVspGuruClient.setNuageVspApiClient(_nuageVspApiClient);
+ _nuageVspElementClient =
(NuageVspElementClient)nuageVspElementClientClass.newInstance();
+
_nuageVspElementClient.setNuageVspApiClient(_nuageVspApiClient);
+ _nuageVspManagerClient =
(NuageVspManagerClient)nuageVspManagerClientClass.newInstance();
+
_nuageVspManagerClient.setNuageVspApiClient(_nuageVspApiClient);
+ } catch (ClassNotFoundException cnfe) {
+ s_logger.error("Error while loading classes of Nuage VSP
client", cnfe);
+ throw new ConfigurationException("Error while loading classes
of Nuage VSP client");
--- End diff --
Pass ``cnfe`` into the ``ConfigurationException`` constructor to understand
the cause of the exception.
---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at [email protected] or file a JIRA ticket
with INFRA.
---