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 infrastruct...@apache.org or file a JIRA ticket
with INFRA.
---

Reply via email to