public void handleProgressEvent(ProgressEvent progressEvent) {
    DeploymentStatus deploymentStatus = progressEvent.getDeploymentStatus();

    if (_log.isInfoEnabled()) {
      _log.info(deploymentStatus.getMessage());
    }

    if (deploymentStatus.isCompleted()) {
      try {
        TargetModuleID[] targetModuleIDs =
            _deploymentManager.getNonRunningModules(
                ModuleType.WAR, _deploymentManager.getTargets());

        if ((targetModuleIDs != null) && (targetModuleIDs.length > 0)) {
          for (TargetModuleID targetModuleID : targetModuleIDs) {
            if (!_warContext.equals(targetModuleID.getModuleID())) {
              continue;
            }

            ProgressObject startProgress =
                _deploymentManager.start(new TargetModuleID[] {targetModuleID});

            startProgress.addProgressListener(new StartProgressListener(_deploymentHandler));

            _deploymentHandler.setError(false);
            _deploymentHandler.setStarted(true);

            break;
          }
        } else {
          targetModuleIDs =
              _deploymentManager.getAvailableModules(
                  ModuleType.WAR, _deploymentManager.getTargets());

          for (TargetModuleID targetModuleID : targetModuleIDs) {
            if (!_warContext.equals(targetModuleID.getModuleID())) {
              continue;
            }

            ProgressObject startProgress =
                _deploymentManager.start(new TargetModuleID[] {targetModuleID});

            startProgress.addProgressListener(new StartProgressListener(_deploymentHandler));

            _deploymentHandler.setError(false);
            _deploymentHandler.setStarted(true);

            break;
          }
        }
      } catch (Exception e) {
        _log.error(e, e);

        _deploymentHandler.setError(true);
        _deploymentHandler.setStarted(false);
      }
    } else if (deploymentStatus.isFailed()) {
      _deploymentHandler.setError(true);
      _deploymentHandler.setStarted(false);
    }
  }