Sends stop events to the required target
String type = null;
DeploymentRequest req = phaseCtx.getDeploymentRequest();
DeploymentTarget target = (DeploymentTarget)req.getTarget();
DeploymentStatus status = phaseCtx.getDeploymentStatus();
int loadUnloadAction = Constants.UNLOAD_ALL;
Application app = DeploymentServiceUtils.getInstanceManager(
req.getType()).getRegisteredDescriptor(req.getName());
// store the application object in DeploymentContext before it's
// removed from instance manager cache
deploymentCtx.addApplication(req.getName(), app);
if(!req.isApplication())
{
type = DeploymentServiceUtils.getModuleTypeString(req.getType());
} else {
if ( (app != null) && (app.getRarComponentCount() != 0) ) {
loadUnloadAction = Constants.UNLOAD_REST;
}
}
prePhaseNotify(getPrePhaseEvent(req));
boolean success;
try {
// send this event to unload non-rar standalone module
// or to unload the non-rar submodules of embedded rar
if (! req.isConnectorModule()) {
success = target.sendStopEvent(req.getActionCode(), req.getName(), type, req.getCascade(), req.isForced(), loadUnloadAction);
} else {
status.setStageStatus(DeploymentStatus.SUCCESS);
return;
}
} catch(DeploymentTargetException dte) {
status.setStageStatus(DeploymentStatus.FAILURE);
if (dte.getCause()!=null) {
status.setStageException(dte.getCause());
status.setStageStatusMessage(dte.getMessage());
}
return;
}
if (success) {
status.setStageStatus(DeploymentStatus.SUCCESS);
} else {
status.setStageStatus(DeploymentStatus.WARNING);
status.setStageStatusMessage("Application failed to stop");
}
postPhaseNotify(getPostPhaseEvent(req));
// if any exception is thrown. we let the stack unroll, it
// will be processed in the DeploymentService.