1 88 89 package org.openejb.server.telnet; 90 91 92 93 import java.io.DataInputStream ; 94 95 import java.io.IOException ; 96 97 import java.io.PrintStream ; 98 99 import java.util.ArrayList ; 100 101 import java.util.HashMap ; 102 103 import java.util.Iterator ; 104 105 import java.util.StringTokenizer ; 106 107 108 109 114 115 public class Command { 116 117 118 119 120 121 protected static final HashMap commands = new HashMap (); 122 123 124 125 static 126 127 { 128 129 loadCommandList(); 130 131 } 132 133 134 135 protected static final Command unknownCommand = new Command(); 136 137 138 139 protected static void register( String name, Command cmd ) { 140 141 commands.put( name, cmd ); 142 143 } 144 145 146 147 protected static void register( String name, Class cmd ) { 148 149 commands.put( name, cmd ); 150 151 } 152 153 154 155 public static Command getCommand( String name ) { 156 157 Object cmd = commands.get( name ); 158 159 160 161 if ( cmd instanceof Class ) { 162 163 cmd = loadCommand( ( Class ) cmd ); 164 165 register( name, ( Command ) cmd ); 166 167 } 168 169 170 171 return( Command ) cmd; 172 173 } 174 175 176 177 179 180 181 public void exec( Arguments args, DataInputStream in, PrintStream out ) throws IOException 182 183 { 184 185 out.println( "not implemented" ); 186 187 } 188 189 190 191 192 193 195 protected static Command loadCommand( Class commandClass ) { 196 197 Command cmd = null; 198 199 try { 200 201 cmd = ( Command ) commandClass.newInstance(); 202 203 } catch ( Exception e ) { 204 205 207 } 208 209 210 211 return cmd; 212 213 } 214 215 216 217 218 219 234 235 protected static void loadCommandList() { 236 237 Exit.register(); 238 239 Help.register(); 240 241 Lookup.register(); 242 243 Ls.register(); 244 245 Stop.register(); 246 247 Version.register(); 248 249 GroovySh.register(); 250 251 } 252 253 254 255 public static class Arguments { 256 257 259 private String args; 260 261 262 263 private String [] argsArray = new String [0]; 264 265 266 267 private boolean alreadyParsed = false; 268 269 270 271 Arguments( String args ) { 272 273 this.args = args; 274 275 } 276 277 278 279 String get() { 280 281 return args; 282 283 } 284 285 286 287 294 295 String get( int i ) { 296 297 parseArgs(); 298 299 return( argsArray != null ? argsArray[i] : null ); 300 301 } 302 303 304 305 int count() { 306 307 parseArgs(); 308 309 return( argsArray != null ? argsArray.length : 0 ); 310 311 } 312 313 314 315 Iterator iterator() { 316 317 return new Iterator () { 318 319 StringTokenizer st = new StringTokenizer ( args ); 320 321 322 323 public boolean hasNext() { 324 325 return st.hasMoreTokens(); 326 327 } 328 329 330 331 public Object next() { 332 333 return st.nextToken(); 334 335 } 336 337 338 339 public void remove() { 340 341 343 } 344 345 }; 346 347 } 348 349 350 351 private void parseArgs() { 352 353 if ( !alreadyParsed ) { 354 355 ArrayList arrayList = new ArrayList (); 356 357 Iterator it = iterator(); 358 359 while ( it.hasNext() ) { 360 361 arrayList.add( it.next() ); 362 363 } 364 365 argsArray = ( String [] ) arrayList.toArray( argsArray ); 366 367 alreadyParsed = true; 368 369 } 370 371 } 372 373 } 374 375 } 376 377 378 | Popular Tags |