001package com.identityworksllc.iiq.common.connector; 002 003import sailpoint.connector.Connector; 004import sailpoint.connector.ConnectorFactory; 005import sailpoint.tools.GeneralException; 006import sailpoint.tools.Util; 007import sailpoint.object.Application; 008 009import java.util.List; 010 011/** 012 * Workaround for some classloader problems with getRealConnector(). This will 013 * create a temporary fake Application with the given implementation class and 014 * construct that according to the configuration provided. 015 */ 016public class ConnectorClassLoaderWorkaround { 017 018 /** 019 * Get a connector by class name. This will create a temporary fake Application. 020 * @param applicationClassName The class name of the connector 021 * @param optionalConnectorClassloader A list of connector-classpath entries to add to the connector classloader 022 * @return The connector 023 * @throws GeneralException if the connector cannot be created 024 */ 025 public static Connector getConnector(String applicationClassName, List<String> optionalConnectorClassloader) throws GeneralException { 026 Application tempApplication = new Application(); 027 tempApplication.setConnector(applicationClassName); 028 tempApplication.setName(applicationClassName); 029 030 if (!Util.isEmpty(optionalConnectorClassloader)) { 031 tempApplication.setAttribute("connector-classpath", optionalConnectorClassloader); 032 } 033 034 return ConnectorFactory.createConnector(applicationClassName, tempApplication, null); 035 } 036}