001
014
015 package com.liferay.portal.tools.deploy;
016
017 import com.liferay.portal.kernel.log.Log;
018 import com.liferay.portal.kernel.log.LogFactoryUtil;
019 import com.liferay.portal.kernel.util.ArrayUtil;
020
021 import javax.enterprise.deploy.shared.ModuleType;
022 import javax.enterprise.deploy.spi.DeploymentManager;
023 import javax.enterprise.deploy.spi.TargetModuleID;
024 import javax.enterprise.deploy.spi.status.DeploymentStatus;
025 import javax.enterprise.deploy.spi.status.ProgressEvent;
026 import javax.enterprise.deploy.spi.status.ProgressListener;
027 import javax.enterprise.deploy.spi.status.ProgressObject;
028
029
033 public class DeploymentProgressListener implements ProgressListener {
034
035 public DeploymentProgressListener(
036 DeploymentHandler deploymentHandler, String warContext) {
037
038 _deploymentHandler = deploymentHandler;
039 _warContext = warContext;
040 _deploymentManager = _deploymentHandler.getDeploymentManager();
041 }
042
043 @Override
044 public void handleProgressEvent(ProgressEvent progressEvent) {
045 DeploymentStatus deploymentStatus = progressEvent.getDeploymentStatus();
046
047 if (_log.isInfoEnabled()) {
048 _log.info(deploymentStatus.getMessage());
049 }
050
051 if (deploymentStatus.isCompleted()) {
052 try {
053 TargetModuleID[] targetModuleIDs =
054 _deploymentManager.getNonRunningModules(
055 ModuleType.WAR, _deploymentManager.getTargets());
056
057 if (ArrayUtil.isNotEmpty(targetModuleIDs)) {
058 for (TargetModuleID targetModuleID : targetModuleIDs) {
059 if (!_warContext.equals(targetModuleID.getModuleID())) {
060 continue;
061 }
062
063 ProgressObject startProgress = _deploymentManager.start(
064 new TargetModuleID[] {targetModuleID});
065
066 startProgress.addProgressListener(
067 new StartProgressListener(_deploymentHandler));
068
069 _deploymentHandler.setError(false);
070 _deploymentHandler.setStarted(true);
071
072 break;
073 }
074 }
075 else {
076 targetModuleIDs = _deploymentManager.getAvailableModules(
077 ModuleType.WAR, _deploymentManager.getTargets());
078
079 for (TargetModuleID targetModuleID : targetModuleIDs) {
080 if (!_warContext.equals(targetModuleID.getModuleID())) {
081 continue;
082 }
083
084 ProgressObject startProgress = _deploymentManager.start(
085 new TargetModuleID[] {targetModuleID});
086
087 startProgress.addProgressListener(
088 new StartProgressListener(_deploymentHandler));
089
090 _deploymentHandler.setError(false);
091 _deploymentHandler.setStarted(true);
092
093 break;
094 }
095 }
096 }
097 catch (Exception e) {
098 _log.error(e, e);
099
100 _deploymentHandler.setError(true);
101 _deploymentHandler.setStarted(false);
102 }
103 }
104 else if (deploymentStatus.isFailed()) {
105 _deploymentHandler.setError(true);
106 _deploymentHandler.setStarted(false);
107 }
108 }
109
110 private static final Log _log = LogFactoryUtil.getLog(
111 DeploymentProgressListener.class);
112
113 private final DeploymentHandler _deploymentHandler;
114 private final DeploymentManager _deploymentManager;
115 private final String _warContext;
116
117 }