1 /** 2 * 3 * Copyright 2003-2004 The Apache Software Foundation 4 * 5 * Licensed under the Apache License, Version 2.0 (the "License"); 6 * you may not use this file except in compliance with the License. 7 * You may obtain a copy of the License at 8 * 9 * http://www.apache.org/licenses/LICENSE-2.0 10 * 11 * Unless required by applicable law or agreed to in writing, software 12 * distributed under the License is distributed on an "AS IS" BASIS, 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 * See the License for the specific language governing permissions and 15 * limitations under the License. 16 */ 17 18 package org.apache.geronimo.deployment.cli; 19 20 import org.apache.geronimo.common.DeploymentException; 21 22 import javax.enterprise.deploy.spi.TargetModuleID; 23 import javax.enterprise.deploy.spi.Target; 24 import javax.enterprise.deploy.spi.DeploymentManager; 25 import javax.enterprise.deploy.spi.exceptions.TargetException; 26 import java.io.PrintWriter; 27 import java.util.ArrayList; 28 import java.util.List; 29 30 /** 31 * The CLI deployer logic to list modules. 32 * 33 * @version $Rev: 355877 $ $Date: 2005-12-10 18:48:27 -0800 (Sat, 10 Dec 2005) $ 34 */ 35 public class CommandListModules extends AbstractCommand { 36 public CommandListModules() { 37 super("list-modules", "2. Other Commands", "[--all|--started|--stopped] [target*]", 38 "Lists the modules available on the specified targets. If " + 39 "--started or --stopped is specified, only started or stopped modules will " + 40 "be listed; otherwise all modules will be listed. If no targets are " + 41 "specified, then modules on all targets will be listed; otherwise only " + 42 "modules on the specified targets."); 43 } 44 45 public void execute(PrintWriter out, ServerConnection connection, String[] args) throws DeploymentException { 46 List targets = new ArrayList(); 47 Boolean started = null; 48 for (int i = 0; i < args.length; i++) { 49 String arg = args[i]; 50 if(arg.startsWith("--")) { 51 if(arg.equals("--all")) { 52 if(started != null) { 53 throw new DeploymentSyntaxException("Cannot specify more than one of --all, --started, --stopped"); 54 } 55 } else if(arg.equals("--started")) { 56 if(started != null) { 57 throw new DeploymentSyntaxException("Cannot specify more than one of --all, --started, --stopped"); 58 } 59 started = Boolean.TRUE; 60 } else if(arg.equals("--stopped")) { 61 if(started != null) { 62 throw new DeploymentSyntaxException("Cannot specify more than one of --all, --started, --stopped"); 63 } 64 started = Boolean.FALSE; 65 } else { 66 throw new DeploymentSyntaxException("Unrecognized option '"+arg+"'"); 67 } 68 } else { 69 targets.add(arg); 70 } 71 } 72 final DeploymentManager mgr = connection.getDeploymentManager(); 73 TargetModuleID[] running = null, notrunning = null; 74 Target[] tlist = identifyTargets(targets, mgr); 75 if(tlist.length == 0) { 76 tlist = mgr.getTargets(); 77 } 78 try { 79 if(started == null || started.booleanValue()) { 80 running = mgr.getRunningModules(null, tlist); 81 } 82 if(started == null || !started.booleanValue()) { 83 notrunning = mgr.getNonRunningModules(null, tlist); 84 } 85 } catch (TargetException e) { 86 throw new DeploymentException("Unable to query modules", e); 87 } catch (IllegalStateException e) { 88 throw new DeploymentSyntaxException(e.getMessage()); 89 } 90 if(running == null) { 91 running = new TargetModuleID[0]; 92 } 93 if(notrunning == null) { 94 notrunning = new TargetModuleID[0]; 95 } 96 97 int total = running.length+notrunning.length; 98 out.println("Found "+total+" module"+(total != 1 ? "s" : "")); 99 for (int i = 0; i < running.length; i++) { 100 TargetModuleID result = running[i]; 101 out.println(" + "+result.getModuleID()+(tlist.length > 1 ? " on "+result.getTarget().getName(): "")+(result.getWebURL() == null ? "" : " @ "+result.getWebURL())); 102 if(result.getChildTargetModuleID() != null) { 103 for (int j = 0; j < result.getChildTargetModuleID().length; j++) { 104 TargetModuleID child = result.getChildTargetModuleID()[j]; 105 out.println(" `-> "+child.getModuleID()+(child.getWebURL() == null ? "" : " @ "+child.getWebURL())); 106 } 107 } 108 } 109 for (int i = 0; i < notrunning.length; i++) { 110 TargetModuleID result = notrunning[i]; 111 out.println(" "+result.getModuleID()+(tlist.length > 1 ? " on "+result.getTarget().getName(): "")); 112 if(result.getChildTargetModuleID() != null) { 113 for (int j = 0; j < result.getChildTargetModuleID().length; j++) { 114 TargetModuleID child = result.getChildTargetModuleID()[j]; 115 out.println(" `-> "+child.getModuleID()); 116 } 117 } 118 } 119 } 120 }