1   /**
2    * Copyright (c) 2000-2010 Liferay, Inc. All rights reserved.
3    *
4    * This library is free software; you can redistribute it and/or modify it under
5    * the terms of the GNU Lesser General Public License as published by the Free
6    * Software Foundation; either version 2.1 of the License, or (at your option)
7    * any later version.
8    *
9    * This library is distributed in the hope that it will be useful, but WITHOUT
10   * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
11   * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
12   * details.
13   */
14  
15  package com.liferay.portal.tools.deploy;
16  
17  import com.liferay.portal.kernel.log.Log;
18  import com.liferay.portal.kernel.log.LogFactoryUtil;
19  
20  import javax.enterprise.deploy.shared.ModuleType;
21  import javax.enterprise.deploy.spi.DeploymentManager;
22  import javax.enterprise.deploy.spi.TargetModuleID;
23  import javax.enterprise.deploy.spi.status.DeploymentStatus;
24  import javax.enterprise.deploy.spi.status.ProgressEvent;
25  import javax.enterprise.deploy.spi.status.ProgressListener;
26  import javax.enterprise.deploy.spi.status.ProgressObject;
27  
28  /**
29   * <a href="DeploymentProgressListener.java.html"><b><i>View Source</i></b></a>
30   *
31   * @author Brian Wing Shun Chan
32   * @author Sandeep Soni
33   */
34  public class DeploymentProgressListener implements ProgressListener {
35  
36      public DeploymentProgressListener(
37          DeploymentHandler deploymentHandler, String warContext) {
38  
39          _deploymentHandler = deploymentHandler;
40          _warContext = warContext;
41          _deploymentManager = _deploymentHandler.getDeploymentManager();
42      }
43  
44      public void handleProgressEvent(ProgressEvent progressEvent) {
45          DeploymentStatus deploymentStatus = progressEvent.getDeploymentStatus();
46  
47          if (_log.isInfoEnabled()) {
48              _log.info(deploymentStatus.getMessage());
49          }
50  
51          if (deploymentStatus.isCompleted()) {
52              try {
53                  TargetModuleID[] targetModuleIDs =
54                      _deploymentManager.getNonRunningModules(
55                          ModuleType.WAR, _deploymentManager.getTargets());
56  
57                  if ((targetModuleIDs != null) && (targetModuleIDs.length > 0)) {
58                      for (TargetModuleID targetModuleID : targetModuleIDs) {
59                          if (!_warContext.equals(targetModuleID.getModuleID())) {
60                              continue;
61                          }
62  
63                          ProgressObject startProgress = _deploymentManager.start(
64                              new TargetModuleID[] {targetModuleID});
65  
66                          startProgress.addProgressListener(
67                              new StartProgressListener(_deploymentHandler));
68  
69                          _deploymentHandler.setError(false);
70                          _deploymentHandler.setStarted(true);
71  
72                          break;
73                      }
74                  }
75                  else {
76                      targetModuleIDs = _deploymentManager.getAvailableModules(
77                          ModuleType.WAR, _deploymentManager.getTargets());
78  
79                      for (TargetModuleID targetModuleID : targetModuleIDs) {
80                          if (!_warContext.equals(targetModuleID.getModuleID())) {
81                              continue;
82                          }
83  
84                          ProgressObject startProgress = _deploymentManager.start(
85                              new TargetModuleID[] {targetModuleID});
86  
87                          startProgress.addProgressListener(
88                              new StartProgressListener(_deploymentHandler));
89  
90                          _deploymentHandler.setError(false);
91                          _deploymentHandler.setStarted(true);
92  
93                          break;
94                      }
95                  }
96              }
97              catch (Exception e) {
98                  _log.error(e, e);
99  
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 Log _log = LogFactoryUtil.getLog(
111         DeploymentProgressListener.class);
112 
113     private DeploymentHandler _deploymentHandler;
114     private String _warContext;
115     private DeploymentManager _deploymentManager;
116 
117 }