package org.openiam.provision.service;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.mule.api.MuleContext;
import org.openiam.base.ws.Response;
import org.openiam.idm.srvc.mngsys.dto.ManagedSys;
import org.openiam.idm.srvc.mngsys.dto.ProvisionConnector;
import org.openiam.idm.srvc.mngsys.service.ConnectorDataService;
import org.openiam.idm.srvc.mngsys.service.ManagedSystemDataService;
import org.openiam.spml2.msg.ResponseType;
import org.openiam.spml2.msg.StatusCodeType;
/**
* Created by IntelliJ IDEA.
* User: suneetshah
* Date: 7/23/11
* Time: 5:52 PM
* To change this template use File | Settings | File Templates.
*/
public class ValidateConnectionConfig {
protected static final Log log = LogFactory.getLog(ValidateConnectionConfig.class);
protected ConnectorAdapter connectorAdapter;
protected RemoteConnectorAdapter remoteConnectorAdapter;
protected ManagedSystemDataService managedSysService;
protected ConnectorDataService connectorService;
Response testConnection(String managedSysId, MuleContext muleContext) {
Response resp = new Response(org.openiam.base.ws.ResponseStatus.SUCCESS);
ManagedSys mSys = managedSysService.getManagedSys(managedSysId);
ProvisionConnector connector = connectorService.getConnector(mSys.getConnectorId());
if (connector.getConnectorInterface() != null &&
connector.getConnectorInterface().equalsIgnoreCase("REMOTE")) {
log.debug("Testing connection with remoteConnector");
org.openiam.connector.type.ResponseType remoteResp = remoteTestConnection(mSys, connector, muleContext);
if (remoteResp.getStatus() == StatusCodeType.FAILURE) {
log.debug("Test connection failed.");
resp.setStatus(org.openiam.base.ws.ResponseStatus.FAILURE);
resp.setErrorText(remoteResp.getErrorMsgAsStr());
}
} else {
log.debug("Testing connection with localConnector");
ResponseType localResp = localTestConnection(mSys, muleContext);
if (localResp.getStatus() == StatusCodeType.FAILURE) {
log.debug("Test connection failed.");
resp.setStatus(org.openiam.base.ws.ResponseStatus.FAILURE);
resp.setErrorText(localResp.getErrorMsgAsStr());
}
}
return resp;
}
private ResponseType localTestConnection(ManagedSys mSys, MuleContext muleContext) {
return connectorAdapter.testConnection(mSys, muleContext);
}
private org.openiam.connector.type.ResponseType remoteTestConnection(ManagedSys mSys, ProvisionConnector connector,
MuleContext muleContext) {
return remoteConnectorAdapter.testConnection(mSys, connector, muleContext);
}
public ConnectorAdapter getConnectorAdapter() {
return connectorAdapter;
}
public void setConnectorAdapter(ConnectorAdapter connectorAdapter) {
this.connectorAdapter = connectorAdapter;
}
public RemoteConnectorAdapter getRemoteConnectorAdapter() {
return remoteConnectorAdapter;
}
public void setRemoteConnectorAdapter(RemoteConnectorAdapter remoteConnectorAdapter) {
this.remoteConnectorAdapter = remoteConnectorAdapter;
}
public ManagedSystemDataService getManagedSysService() {
return managedSysService;
}
public void setManagedSysService(ManagedSystemDataService managedSysService) {
this.managedSysService = managedSysService;
}
public ConnectorDataService getConnectorService() {
return connectorService;
}
public void setConnectorService(ConnectorDataService connectorService) {
this.connectorService = connectorService;
}
}