@Override public Map<String, Object> call() throws Exception { final long startTime = System.currentTimeMillis(); // Fix Classloading issue with ThreadLocal implementation of SessionAccessor sessionAccessor.setTenantId(tenantId); Thread.currentThread().setContextClassLoader(loader); sConnector.setInputParameters(inputParameters); try { sConnector.validate(); sConnector.connect(); return sConnector.execute(); } finally { // in case a session has been created: see ConnectorAPIAccessorImpl try { final long sessionId = sessionAccessor.getSessionId(); sessionAccessor.deleteSessionId(); sessionService.deleteSession(sessionId); } catch (final SessionIdNotSetException e) { // nothing, no session has been created } track( TimeTrackerRecords.EXECUTE_CONNECTOR_CALLABLE, startTime, sConnector, inputParameters); } }
@Override public void disconnect(final SConnector sConnector) throws SConnectorException { try { sConnector.disconnect(); } catch (final SConnectorException e) { throw e; } catch (final Exception t) { throw new SConnectorException(t); } }
void disconnectSilently(final SConnector sConnector) { try { sConnector.disconnect(); } catch (final Exception t) { if (loggerService.isLoggable(getClass(), TechnicalLogSeverity.WARNING)) { loggerService.log( getClass(), TechnicalLogSeverity.WARNING, "An error occured while disconnecting the connector: " + sConnector, t); } } }