1 22 package org.jboss.console.twiddle.command; 23 24 import java.io.PrintWriter ; 25 26 import java.util.List ; 27 import java.util.ArrayList ; 28 import java.util.Iterator ; 29 30 import javax.management.ObjectName ; 31 import javax.management.MBeanServerConnection ; 32 33 import gnu.getopt.Getopt; 34 import gnu.getopt.LongOpt; 35 36 import org.jboss.util.Strings; 37 38 45 public class UnregisterCommand 46 extends MBeanServerCommand 47 { 48 private List names = new ArrayList (); 49 50 public UnregisterCommand() 51 { 52 super("unregister", "Unregister one or more MBeans"); 53 } 54 55 public void displayHelp() 56 { 57 PrintWriter out = context.getWriter(); 58 59 out.println(desc); 60 out.println(); 61 out.println("usage: " + name + " [options] (<name>)+"); 62 out.println(); 63 out.println("options:"); 64 out.println(" -- Stop processing options"); 65 66 out.flush(); 67 } 68 69 private void processArguments(final String [] args) 70 throws CommandException 71 { 72 log.debug("processing arguments: " + Strings.join(args, ",")); 73 74 if (args.length == 0) { 75 throw new CommandException("Command requires arguments"); 76 } 77 78 String sopts = "-:"; 79 LongOpt[] lopts = 80 { 81 }; 83 84 Getopt getopt = new Getopt(null, args, sopts, lopts); 85 getopt.setOpterr(false); 86 87 int code; 88 int argidx = 0; 89 90 while ((code = getopt.getopt()) != -1) 91 { 92 switch (code) 93 { 94 case ':': 95 throw new CommandException 96 ("Option requires an argument: "+ args[getopt.getOptind() - 1]); 97 98 case '?': 99 throw new CommandException 100 ("Invalid (or ambiguous) option: " + args[getopt.getOptind() - 1]); 101 102 case 1: 104 { 105 String arg = getopt.getOptarg(); 106 107 switch (argidx++) { 108 default: 109 names.add(createObjectName(arg)); 110 break; 111 } 112 break; 113 } 114 } 115 } 116 } 117 118 public void execute(String [] args) throws Exception 119 { 120 processArguments(args); 121 122 log.debug("object names: " + names); 123 124 if (names.size() == 0) 125 throw new CommandException("At least one object name is required"); 126 127 MBeanServerConnection server = getMBeanServer(); 128 129 Iterator iter = names.iterator(); 130 while (iter.hasNext()) 131 { 132 ObjectName name = (ObjectName )iter.next(); 133 server.unregisterMBean(name); 134 } 135 } 136 } 137 | Popular Tags |