001 /** 002 * Licensed to the Apache Software Foundation (ASF) under one or more 003 * contributor license agreements. See the NOTICE file distributed with 004 * this work for additional information regarding copyright ownership. 005 * The ASF licenses this file to You under the Apache License, Version 2.0 006 * (the "License"); you may not use this file except in compliance with 007 * the License. You may obtain a copy of the License at 008 * 009 * http://www.apache.org/licenses/LICENSE-2.0 010 * 011 * Unless required by applicable law or agreed to in writing, software 012 * distributed under the License is distributed on an "AS IS" BASIS, 013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 014 * See the License for the specific language governing permissions and 015 * limitations under the License. 016 */ 017 018 package org.apache.geronimo.deployment.cli; 019 020 import java.io.PrintWriter; 021 import java.util.ArrayList; 022 import java.util.List; 023 024 import javax.enterprise.deploy.spi.DeploymentManager; 025 import javax.enterprise.deploy.spi.Target; 026 import javax.enterprise.deploy.spi.TargetModuleID; 027 import javax.enterprise.deploy.spi.exceptions.TargetException; 028 import javax.enterprise.deploy.spi.status.ProgressObject; 029 030 import org.apache.geronimo.cli.deployer.CommandArgs; 031 import org.apache.geronimo.common.DeploymentException; 032 033 /** 034 * The CLI deployer logic to start. 035 * 036 * @version $Rev: 537224 $ $Date: 2007-05-11 12:25:51 -0400 (Fri, 11 May 2007) $ 037 */ 038 public class CommandStart extends AbstractCommand { 039 040 public void execute(PrintWriter out, ServerConnection connection, CommandArgs commandArgs) throws DeploymentException { 041 String[] args = commandArgs.getArgs(); 042 043 DeploymentManager mgr = connection.getDeploymentManager(); 044 Target[] allTargets = mgr.getTargets(); 045 TargetModuleID[] allModules; 046 try { 047 allModules = mgr.getAvailableModules(null, allTargets); 048 } catch(TargetException e) { 049 throw new DeploymentException("Unable to load module list from server", e); 050 } 051 List modules = new ArrayList(); 052 for(int i=0; i<args.length; i++) { 053 modules.addAll(DeployUtils.identifyTargetModuleIDs(allModules, args[i], false)); 054 } 055 TargetModuleID[] ids = (TargetModuleID[]) modules.toArray(new TargetModuleID[modules.size()]); 056 boolean multiple = isMultipleTargets(ids); 057 ProgressObject po = runCommand(out, mgr, ids); 058 TargetModuleID[] done = po.getResultTargetModuleIDs(); 059 out.println(); 060 for(int i = 0; i < done.length; i++) { 061 TargetModuleID id = done[i]; 062 out.print(DeployUtils.reformat(getAction()+" "+id.getModuleID()+((multiple && id.getTarget() != null) ? " on "+ id.getTarget().getName() : "")+(id.getWebURL() == null || !getAction().equals("Started") ? "" : " @ "+id.getWebURL()),4, 72)); 063 if(id.getChildTargetModuleID() != null) { 064 for (int j = 0; j < id.getChildTargetModuleID().length; j++) { 065 TargetModuleID child = id.getChildTargetModuleID()[j]; 066 out.print(DeployUtils.reformat(" `-> "+child.getModuleID()+(child.getWebURL() == null || getAction().toLowerCase().indexOf("started") == -1 ? "" : " @ "+child.getWebURL()),4, 72)); 067 } 068 } // Also print childs if existing in earlier configuration 069 else{ 070 java.util.Iterator iterator = DeployUtils.identifyTargetModuleIDs(allModules, id.getModuleID(), false).iterator(); 071 if(iterator.hasNext()){ 072 TargetModuleID childs = (TargetModuleID)iterator.next(); 073 if(childs.getChildTargetModuleID() != null) { 074 for (int j = 0; j < childs.getChildTargetModuleID().length; j++) { 075 TargetModuleID child = childs.getChildTargetModuleID()[j]; 076 out.print(DeployUtils.reformat(" `-> "+child.getModuleID()+(child.getWebURL() == null || getAction().toLowerCase().indexOf("started") == -1 ? "" : " @ "+child.getWebURL()),4, 72)); 077 } 078 } 079 } 080 } 081 out.println(); 082 } 083 if(po.getDeploymentStatus().isFailed()) { 084 throw new DeploymentException("Operation failed: "+po.getDeploymentStatus().getMessage()); 085 } 086 } 087 088 protected ProgressObject runCommand(PrintWriter out, DeploymentManager mgr, TargetModuleID[] ids) { 089 ProgressObject po = mgr.start(ids); 090 waitForProgress(out, po); 091 return po; 092 } 093 094 protected String getAction() { 095 return "Started"; 096 } 097 098 }