protected void localSetUp() throws Exception { super.localSetUp(); IThreadContext tc = ThreadContextFactory.make(); IDBInterface database = DBInterfaceFactory.make( tc, ManifoldCF.getMasterDatabaseName(), ManifoldCF.getMasterDatabaseUsername(), ManifoldCF.getMasterDatabasePassword()); IConnectorManager mgr = ConnectorManagerFactory.make(tc); IAuthorityConnectorManager authMgr = AuthorityConnectorManagerFactory.make(tc); IJobManager jobManager = JobManagerFactory.make(tc); IRepositoryConnectionManager connManager = RepositoryConnectionManagerFactory.make(tc); IOutputConnectorManager outputMgr = OutputConnectorManagerFactory.make(tc); IOutputConnectionManager outputConnManager = OutputConnectionManagerFactory.make(tc); // Deregistration should be done in a transaction database.beginTransaction(); try { int i; String[] connectorClasses = getConnectorClasses(); String[] connectorNames = getConnectorNames(); i = 0; while (i < connectorClasses.length) { // First, register connector mgr.registerConnector(connectorNames[i], connectorClasses[i]); // Then, signal to all jobs that might depend on this connector that they can switch state // Find the connection names that come with this class String[] connectionNames = connManager.findConnectionsForConnector(connectorClasses[i]); // For each connection name, modify the jobs to note that the connector is now installed jobManager.noteConnectorRegistration(connectionNames); i++; } String[] authorityClasses = getAuthorityClasses(); String[] authorityNames = getAuthorityNames(); i = 0; while (i < authorityClasses.length) { authMgr.registerConnector(authorityNames[i], authorityClasses[i]); i++; } String[] outputClasses = getOutputClasses(); String[] outputNames = getOutputNames(); i = 0; while (i < outputClasses.length) { // First, register connector outputMgr.registerConnector(outputNames[i], outputClasses[i]); // Then, signal to all jobs that might depend on this connector that they can switch state // Find the connection names that come with this class String[] connectionNames = outputConnManager.findConnectionsForConnector(outputClasses[i]); // For all connection names, notify all agents of the registration AgentManagerFactory.noteOutputConnectorRegistration(tc, connectionNames); i++; } } catch (ManifoldCFException e) { database.signalRollback(); throw e; } catch (Error e) { database.signalRollback(); throw e; } finally { database.endTransaction(); } }