001// SECTION-START[License Header] 002// <editor-fold defaultstate="collapsed" desc=" Generated License "> 003/* 004 * Java Object Management and Configuration 005 * Copyright (C) Christian Schulte, 2005-206 006 * All rights reserved. 007 * 008 * Redistribution and use in source and binary forms, with or without 009 * modification, are permitted provided that the following conditions 010 * are met: 011 * 012 * o Redistributions of source code must retain the above copyright 013 * notice, this list of conditions and the following disclaimer. 014 * 015 * o Redistributions in binary form must reproduce the above copyright 016 * notice, this list of conditions and the following disclaimer in 017 * the documentation and/or other materials provided with the 018 * distribution. 019 * 020 * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, 021 * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY 022 * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL 023 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY DIRECT, INDIRECT, 024 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 025 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 026 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 027 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 028 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 029 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 030 * 031 * $JOMC: AbstractCommand.java 4795 2013-04-21 09:09:02Z schulte $ 032 * 033 */ 034// </editor-fold> 035// SECTION-END 036package org.jomc.cli.commands; 037 038import java.util.LinkedList; 039import java.util.List; 040import java.util.Locale; 041import java.util.logging.Level; 042import org.apache.commons.cli.CommandLine; 043 044// SECTION-START[Documentation] 045// <editor-fold defaultstate="collapsed" desc=" Generated Documentation "> 046/** 047 * JOMC ⁑ CLI ⁑ command implementation. 048 * 049 * <dl> 050 * <dt><b>Identifier:</b></dt><dd>JOMC ⁑ CLI ⁑ Command</dd> 051 * <dt><b>Name:</b></dt><dd>JOMC ⁑ CLI ⁑ Command</dd> 052 * <dt><b>Specifications:</b></dt> 053 * <dd>JOMC ⁑ CLI ⁑ Command @ 1.0</dd> 054 * <dt><b>Abstract:</b></dt><dd>Yes</dd> 055 * <dt><b>Final:</b></dt><dd>No</dd> 056 * <dt><b>Stateless:</b></dt><dd>No</dd> 057 * </dl> 058 * 059 * @author <a href="mailto:cs@schulte.it">Christian Schulte</a> 1.0 060 * @version 1.5 061 */ 062// </editor-fold> 063// SECTION-END 064// SECTION-START[Annotations] 065// <editor-fold defaultstate="collapsed" desc=" Generated Annotations "> 066@javax.annotation.Generated( value = "org.jomc.tools.SourceFileProcessor 1.5", comments = "See http://www.jomc.org/jomc/1.5/jomc-tools-1.5" ) 067// </editor-fold> 068// SECTION-END 069public abstract class AbstractCommand 070 implements 071 org.jomc.cli.Command 072{ 073 // SECTION-START[Command] 074 075 /** The listeners of the instance. */ 076 private List<Listener> listeners; 077 078 /** Log level of the instance. */ 079 private Level logLevel; 080 081 /** 082 * Gets the list of registered listeners. 083 * <p>This accessor method returns a reference to the live list, not a snapshot. Therefore any modification you make 084 * to the returned list will be present inside the object. This is why there is no {@code set} method for the 085 * listeners property.</p> 086 * 087 * @return The list of registered listeners. 088 * 089 * @see #log(java.util.logging.Level, java.lang.String, java.lang.Throwable) 090 */ 091 public final List<Listener> getListeners() 092 { 093 if ( this.listeners == null ) 094 { 095 this.listeners = new LinkedList<Listener>(); 096 } 097 098 return this.listeners; 099 } 100 101 /** 102 * Gets the log level of the instance. 103 * 104 * @return The log level of the instance. 105 * 106 * @see #getDefaultLogLevel() 107 * @see #setLogLevel(java.util.logging.Level) 108 * @see #isLoggable(java.util.logging.Level) 109 */ 110 public final Level getLogLevel() 111 { 112 if ( this.logLevel == null ) 113 { 114 this.logLevel = getDefaultLogLevel(); 115 116 if ( this.isLoggable( Level.CONFIG ) ) 117 { 118 this.log( Level.CONFIG, 119 this.getDefaultLogLevelInfo( this.getLocale(), this.logLevel.getLocalizedName() ), null ); 120 121 } 122 } 123 124 return this.logLevel; 125 } 126 127 /** 128 * Sets the log level of the instance. 129 * 130 * @param value The new log level of the instance or {@code null}. 131 * 132 * @see #getLogLevel() 133 * @see #isLoggable(java.util.logging.Level) 134 */ 135 public final void setLogLevel( final Level value ) 136 { 137 this.logLevel = value; 138 } 139 140 public final String getName() 141 { 142 return this.getCommandName(); 143 } 144 145 public final String getAbbreviatedName() 146 { 147 return this.getAbbreviatedCommandName(); 148 } 149 150 public final String getShortDescription( final Locale locale ) 151 { 152 return this.getShortDescriptionMessage( locale ); 153 } 154 155 public final String getLongDescription( final Locale locale ) 156 { 157 return this.getLongDescriptionMessage( locale ); 158 } 159 160 public final int execute( final CommandLine commandLine ) 161 { 162 if ( commandLine == null ) 163 { 164 throw new NullPointerException( "commandLine" ); 165 } 166 167 int status; 168 169 try 170 { 171 if ( this.isLoggable( Level.INFO ) ) 172 { 173 this.log( Level.INFO, this.getSeparator( this.getLocale() ), null ); 174 this.log( Level.INFO, this.getApplicationTitle( this.getLocale() ), null ); 175 this.log( Level.INFO, this.getSeparator( this.getLocale() ), null ); 176 this.log( Level.INFO, this.getCommandInfoMessage( this.getLocale(), this.getCommandName() ), null ); 177 } 178 179 this.preExecuteCommand( commandLine ); 180 this.executeCommand( commandLine ); 181 status = STATUS_SUCCESS; 182 } 183 catch ( final Throwable t ) 184 { 185 this.log( Level.SEVERE, null, t ); 186 status = STATUS_FAILURE; 187 } 188 finally 189 { 190 try 191 { 192 this.postExecuteCommand( commandLine ); 193 } 194 catch ( final Throwable t ) 195 { 196 this.log( Level.SEVERE, null, t ); 197 status = STATUS_FAILURE; 198 } 199 } 200 201 if ( this.isLoggable( Level.INFO ) ) 202 { 203 if ( status == STATUS_SUCCESS ) 204 { 205 this.log( Level.INFO, this.getCommandSuccessMessage( this.getLocale(), this.getCommandName() ), null ); 206 } 207 else if ( status == STATUS_FAILURE ) 208 { 209 this.log( Level.INFO, this.getCommandFailureMessage( this.getLocale(), this.getCommandName() ), null ); 210 } 211 212 this.log( Level.INFO, this.getSeparator( this.getLocale() ), null ); 213 } 214 215 return status; 216 } 217 218 // SECTION-END 219 // SECTION-START[AbstractCommand] 220 /** Default log level. */ 221 private static volatile Level defaultLogLevel; 222 223 /** 224 * Gets the default log level events are logged at. 225 * <p>The default log level is controlled by system property 226 * {@code org.jomc.cli.commands.AbstractCommand.defaultLogLevel} holding the log level to log events at by 227 * default. If that property is not set, the {@code WARNING} default is returned.</p> 228 * 229 * @return The log level events are logged at by default. 230 * 231 * @see #getLogLevel() 232 * @see Level#parse(java.lang.String) 233 */ 234 public static Level getDefaultLogLevel() 235 { 236 if ( defaultLogLevel == null ) 237 { 238 defaultLogLevel = Level.parse( 239 System.getProperty( "org.jomc.cli.command.AbstractJomcCommand.defaultLogLevel", 240 System.getProperty( "org.jomc.cli.commands.AbstractCommand.defaultLogLevel", 241 Level.WARNING.getName() ) ) ); 242 243 } 244 245 return defaultLogLevel; 246 } 247 248 /** 249 * Sets the default log level events are logged at. 250 * 251 * @param value The new default level events are logged at or {@code null}. 252 * 253 * @see #getDefaultLogLevel() 254 */ 255 public static void setDefaultLogLevel( final Level value ) 256 { 257 defaultLogLevel = value; 258 } 259 260 /** 261 * Checks if a message at a given level is provided to the listeners of the instance. 262 * 263 * @param level The level to test. 264 * 265 * @return {@code true}, if messages at {@code level} are provided to the listeners of the instance; 266 * {@code false}, if messages at {@code level} are not provided to the listeners of the instance. 267 * 268 * @throws NullPointerException if {@code level} is {@code null}. 269 * 270 * @see #getLogLevel() 271 * @see #setLogLevel(java.util.logging.Level) 272 */ 273 protected boolean isLoggable( final Level level ) 274 { 275 if ( level == null ) 276 { 277 throw new NullPointerException( "level" ); 278 } 279 280 return level.intValue() >= this.getLogLevel().intValue(); 281 } 282 283 /** 284 * Notifies registered listeners. 285 * 286 * @param level The level of the event. 287 * @param message The message of the event or {@code null}. 288 * @param throwable The throwable of the event {@code null}. 289 * 290 * @throws NullPointerException if {@code level} is {@code null}. 291 * 292 * @see #getListeners() 293 * @see #isLoggable(java.util.logging.Level) 294 */ 295 protected void log( final Level level, final String message, final Throwable throwable ) 296 { 297 if ( level == null ) 298 { 299 throw new NullPointerException( "level" ); 300 } 301 302 if ( this.isLoggable( level ) ) 303 { 304 for ( Listener l : this.getListeners() ) 305 { 306 l.onLog( level, message, throwable ); 307 } 308 } 309 } 310 311 /** 312 * Called by the {@code execute} method prior to the {@code executeCommand} method. 313 * 314 * @param commandLine The command line to execute. 315 * 316 * @throws NullPointerException if {@code commandLine} is {@code null}. 317 * @throws CommandExecutionException if executing the command fails. 318 * 319 * @see #execute(org.apache.commons.cli.CommandLine) 320 */ 321 protected void preExecuteCommand( final CommandLine commandLine ) throws CommandExecutionException 322 { 323 if ( commandLine == null ) 324 { 325 throw new NullPointerException( "commandLine" ); 326 } 327 } 328 329 /** 330 * Called by the {@code execute} method prior to the {@code postExecuteCommand} method. 331 * 332 * @param commandLine The command line to execute. 333 * 334 * @throws CommandExecutionException if executing the command fails. 335 * 336 * @see #execute(org.apache.commons.cli.CommandLine) 337 */ 338 protected abstract void executeCommand( final CommandLine commandLine ) throws CommandExecutionException; 339 340 /** 341 * Called by the {@code execute} method after the {@code preExecuteCommand}/{@code executeCommand} methods even if 342 * those methods threw an exception. 343 * 344 * @param commandLine The command line to execute. 345 * 346 * @throws NullPointerException if {@code commandLine} is {@code null}. 347 * @throws CommandExecutionException if executing the command fails. 348 * 349 * @see #execute(org.apache.commons.cli.CommandLine) 350 */ 351 protected void postExecuteCommand( final CommandLine commandLine ) throws CommandExecutionException 352 { 353 if ( commandLine == null ) 354 { 355 throw new NullPointerException( "commandLine" ); 356 } 357 } 358 359 /** 360 * Gets a message of a given {@code Throwable} recursively. 361 * 362 * @param t The {@code Throwable} to get the message of or {@code null}. 363 * 364 * @return The message associated with {@code t} or {@code null}. 365 */ 366 protected static String getExceptionMessage( final Throwable t ) 367 { 368 return t != null 369 ? t.getMessage() != null && t.getMessage().trim().length() > 0 370 ? t.getMessage() 371 : getExceptionMessage( t.getCause() ) 372 : null; 373 374 } 375 376 // SECTION-END 377 // SECTION-START[Constructors] 378 // <editor-fold defaultstate="collapsed" desc=" Generated Constructors "> 379 /** Creates a new {@code AbstractCommand} instance. */ 380 @javax.annotation.Generated( value = "org.jomc.tools.SourceFileProcessor 1.5", comments = "See http://www.jomc.org/jomc/1.5/jomc-tools-1.5" ) 381 public AbstractCommand() 382 { 383 // SECTION-START[Default Constructor] 384 super(); 385 // SECTION-END 386 } 387 // </editor-fold> 388 // SECTION-END 389 // SECTION-START[Dependencies] 390 // <editor-fold defaultstate="collapsed" desc=" Generated Dependencies "> 391 /** 392 * Gets the {@code <Locale>} dependency. 393 * <p> 394 * This method returns the {@code <default>} object of the {@code <java.util.Locale>} specification at specification level 1.1. 395 * That specification does not apply to any scope. A new object is returned whenever requested and bound to this instance. 396 * </p> 397 * <dl> 398 * <dt><b>Final:</b></dt><dd>No</dd> 399 * </dl> 400 * @return The {@code <Locale>} dependency. 401 * @throws org.jomc.ObjectManagementException if getting the dependency instance fails. 402 */ 403 @SuppressWarnings("unused") 404 @javax.annotation.Generated( value = "org.jomc.tools.SourceFileProcessor 1.5", comments = "See http://www.jomc.org/jomc/1.5/jomc-tools-1.5" ) 405 private java.util.Locale getLocale() 406 { 407 final java.util.Locale _d = (java.util.Locale) org.jomc.ObjectManagerFactory.getObjectManager( this.getClass().getClassLoader() ).getDependency( this, "Locale" ); 408 assert _d != null : "'Locale' dependency not found."; 409 return _d; 410 } 411 // </editor-fold> 412 // SECTION-END 413 // SECTION-START[Properties] 414 // <editor-fold defaultstate="collapsed" desc=" Generated Properties "> 415 /** 416 * Gets the value of the {@code <Abbreviated Command Name>} property. 417 * <p><dl> 418 * <dt><b>Final:</b></dt><dd>No</dd> 419 * </dl></p> 420 * @return Abbreviated name of the command. 421 * @throws org.jomc.ObjectManagementException if getting the property instance fails. 422 */ 423 @SuppressWarnings("unused") 424 @javax.annotation.Generated( value = "org.jomc.tools.SourceFileProcessor 1.5", comments = "See http://www.jomc.org/jomc/1.5/jomc-tools-1.5" ) 425 private java.lang.String getAbbreviatedCommandName() 426 { 427 final java.lang.String _p = (java.lang.String) org.jomc.ObjectManagerFactory.getObjectManager( this.getClass().getClassLoader() ).getProperty( this, "Abbreviated Command Name" ); 428 assert _p != null : "'Abbreviated Command Name' property not found."; 429 return _p; 430 } 431 /** 432 * Gets the value of the {@code <Command Name>} property. 433 * <p><dl> 434 * <dt><b>Final:</b></dt><dd>No</dd> 435 * </dl></p> 436 * @return Name of the command. 437 * @throws org.jomc.ObjectManagementException if getting the property instance fails. 438 */ 439 @SuppressWarnings("unused") 440 @javax.annotation.Generated( value = "org.jomc.tools.SourceFileProcessor 1.5", comments = "See http://www.jomc.org/jomc/1.5/jomc-tools-1.5" ) 441 private java.lang.String getCommandName() 442 { 443 final java.lang.String _p = (java.lang.String) org.jomc.ObjectManagerFactory.getObjectManager( this.getClass().getClassLoader() ).getProperty( this, "Command Name" ); 444 assert _p != null : "'Command Name' property not found."; 445 return _p; 446 } 447 // </editor-fold> 448 // SECTION-END 449 // SECTION-START[Messages] 450 // <editor-fold defaultstate="collapsed" desc=" Generated Messages "> 451 /** 452 * Gets the text of the {@code <Application Title>} message. 453 * <p><dl> 454 * <dt><b>Languages:</b></dt> 455 * <dd>English (default)</dd> 456 * <dt><b>Final:</b></dt><dd>No</dd> 457 * </dl></p> 458 * @param locale The locale of the message to return. 459 * @return The text of the {@code <Application Title>} message for {@code locale}. 460 * @throws org.jomc.ObjectManagementException if getting the message instance fails. 461 */ 462 @SuppressWarnings("unused") 463 @javax.annotation.Generated( value = "org.jomc.tools.SourceFileProcessor 1.5", comments = "See http://www.jomc.org/jomc/1.5/jomc-tools-1.5" ) 464 private String getApplicationTitle( final java.util.Locale locale ) 465 { 466 final String _m = org.jomc.ObjectManagerFactory.getObjectManager( this.getClass().getClassLoader() ).getMessage( this, "Application Title", locale ); 467 assert _m != null : "'Application Title' message not found."; 468 return _m; 469 } 470 /** 471 * Gets the text of the {@code <Command Failure Message>} message. 472 * <p><dl> 473 * <dt><b>Languages:</b></dt> 474 * <dd>English (default)</dd> 475 * <dd>Deutsch</dd> 476 * <dt><b>Final:</b></dt><dd>No</dd> 477 * </dl></p> 478 * @param locale The locale of the message to return. 479 * @param toolName Format argument. 480 * @return The text of the {@code <Command Failure Message>} message for {@code locale}. 481 * @throws org.jomc.ObjectManagementException if getting the message instance fails. 482 */ 483 @SuppressWarnings("unused") 484 @javax.annotation.Generated( value = "org.jomc.tools.SourceFileProcessor 1.5", comments = "See http://www.jomc.org/jomc/1.5/jomc-tools-1.5" ) 485 private String getCommandFailureMessage( final java.util.Locale locale, final java.lang.String toolName ) 486 { 487 final String _m = org.jomc.ObjectManagerFactory.getObjectManager( this.getClass().getClassLoader() ).getMessage( this, "Command Failure Message", locale, toolName ); 488 assert _m != null : "'Command Failure Message' message not found."; 489 return _m; 490 } 491 /** 492 * Gets the text of the {@code <Command Info Message>} message. 493 * <p><dl> 494 * <dt><b>Languages:</b></dt> 495 * <dd>English (default)</dd> 496 * <dd>Deutsch</dd> 497 * <dt><b>Final:</b></dt><dd>No</dd> 498 * </dl></p> 499 * @param locale The locale of the message to return. 500 * @param toolName Format argument. 501 * @return The text of the {@code <Command Info Message>} message for {@code locale}. 502 * @throws org.jomc.ObjectManagementException if getting the message instance fails. 503 */ 504 @SuppressWarnings("unused") 505 @javax.annotation.Generated( value = "org.jomc.tools.SourceFileProcessor 1.5", comments = "See http://www.jomc.org/jomc/1.5/jomc-tools-1.5" ) 506 private String getCommandInfoMessage( final java.util.Locale locale, final java.lang.String toolName ) 507 { 508 final String _m = org.jomc.ObjectManagerFactory.getObjectManager( this.getClass().getClassLoader() ).getMessage( this, "Command Info Message", locale, toolName ); 509 assert _m != null : "'Command Info Message' message not found."; 510 return _m; 511 } 512 /** 513 * Gets the text of the {@code <Command Success Message>} message. 514 * <p><dl> 515 * <dt><b>Languages:</b></dt> 516 * <dd>English (default)</dd> 517 * <dd>Deutsch</dd> 518 * <dt><b>Final:</b></dt><dd>No</dd> 519 * </dl></p> 520 * @param locale The locale of the message to return. 521 * @param toolName Format argument. 522 * @return The text of the {@code <Command Success Message>} message for {@code locale}. 523 * @throws org.jomc.ObjectManagementException if getting the message instance fails. 524 */ 525 @SuppressWarnings("unused") 526 @javax.annotation.Generated( value = "org.jomc.tools.SourceFileProcessor 1.5", comments = "See http://www.jomc.org/jomc/1.5/jomc-tools-1.5" ) 527 private String getCommandSuccessMessage( final java.util.Locale locale, final java.lang.String toolName ) 528 { 529 final String _m = org.jomc.ObjectManagerFactory.getObjectManager( this.getClass().getClassLoader() ).getMessage( this, "Command Success Message", locale, toolName ); 530 assert _m != null : "'Command Success Message' message not found."; 531 return _m; 532 } 533 /** 534 * Gets the text of the {@code <Default Log Level Info>} message. 535 * <p><dl> 536 * <dt><b>Languages:</b></dt> 537 * <dd>English (default)</dd> 538 * <dd>Deutsch</dd> 539 * <dt><b>Final:</b></dt><dd>No</dd> 540 * </dl></p> 541 * @param locale The locale of the message to return. 542 * @param defaultLogLevel Format argument. 543 * @return The text of the {@code <Default Log Level Info>} message for {@code locale}. 544 * @throws org.jomc.ObjectManagementException if getting the message instance fails. 545 */ 546 @SuppressWarnings("unused") 547 @javax.annotation.Generated( value = "org.jomc.tools.SourceFileProcessor 1.5", comments = "See http://www.jomc.org/jomc/1.5/jomc-tools-1.5" ) 548 private String getDefaultLogLevelInfo( final java.util.Locale locale, final java.lang.String defaultLogLevel ) 549 { 550 final String _m = org.jomc.ObjectManagerFactory.getObjectManager( this.getClass().getClassLoader() ).getMessage( this, "Default Log Level Info", locale, defaultLogLevel ); 551 assert _m != null : "'Default Log Level Info' message not found."; 552 return _m; 553 } 554 /** 555 * Gets the text of the {@code <Long Description Message>} message. 556 * <p><dl> 557 * <dt><b>Languages:</b></dt> 558 * <dd>English (default)</dd> 559 * <dt><b>Final:</b></dt><dd>No</dd> 560 * </dl></p> 561 * @param locale The locale of the message to return. 562 * @return The text of the {@code <Long Description Message>} message for {@code locale}. 563 * @throws org.jomc.ObjectManagementException if getting the message instance fails. 564 */ 565 @SuppressWarnings("unused") 566 @javax.annotation.Generated( value = "org.jomc.tools.SourceFileProcessor 1.5", comments = "See http://www.jomc.org/jomc/1.5/jomc-tools-1.5" ) 567 private String getLongDescriptionMessage( final java.util.Locale locale ) 568 { 569 final String _m = org.jomc.ObjectManagerFactory.getObjectManager( this.getClass().getClassLoader() ).getMessage( this, "Long Description Message", locale ); 570 assert _m != null : "'Long Description Message' message not found."; 571 return _m; 572 } 573 /** 574 * Gets the text of the {@code <Separator>} message. 575 * <p><dl> 576 * <dt><b>Languages:</b></dt> 577 * <dd>English (default)</dd> 578 * <dt><b>Final:</b></dt><dd>No</dd> 579 * </dl></p> 580 * @param locale The locale of the message to return. 581 * @return The text of the {@code <Separator>} message for {@code locale}. 582 * @throws org.jomc.ObjectManagementException if getting the message instance fails. 583 */ 584 @SuppressWarnings("unused") 585 @javax.annotation.Generated( value = "org.jomc.tools.SourceFileProcessor 1.5", comments = "See http://www.jomc.org/jomc/1.5/jomc-tools-1.5" ) 586 private String getSeparator( final java.util.Locale locale ) 587 { 588 final String _m = org.jomc.ObjectManagerFactory.getObjectManager( this.getClass().getClassLoader() ).getMessage( this, "Separator", locale ); 589 assert _m != null : "'Separator' message not found."; 590 return _m; 591 } 592 /** 593 * Gets the text of the {@code <Short Description Message>} message. 594 * <p><dl> 595 * <dt><b>Languages:</b></dt> 596 * <dd>English (default)</dd> 597 * <dt><b>Final:</b></dt><dd>No</dd> 598 * </dl></p> 599 * @param locale The locale of the message to return. 600 * @return The text of the {@code <Short Description Message>} message for {@code locale}. 601 * @throws org.jomc.ObjectManagementException if getting the message instance fails. 602 */ 603 @SuppressWarnings("unused") 604 @javax.annotation.Generated( value = "org.jomc.tools.SourceFileProcessor 1.5", comments = "See http://www.jomc.org/jomc/1.5/jomc-tools-1.5" ) 605 private String getShortDescriptionMessage( final java.util.Locale locale ) 606 { 607 final String _m = org.jomc.ObjectManagerFactory.getObjectManager( this.getClass().getClassLoader() ).getMessage( this, "Short Description Message", locale ); 608 assert _m != null : "'Short Description Message' message not found."; 609 return _m; 610 } 611 // </editor-fold> 612 // SECTION-END 613 // SECTION-START[Generated Command] 614 // <editor-fold defaultstate="collapsed" desc=" Generated Options "> 615 /** 616 * Gets the options of the command. 617 * <p><strong>Options:</strong> 618 * <table border="1" width="100%" cellpadding="3" cellspacing="0"> 619 * <tr class="TableSubHeadingColor"> 620 * <th align="left" scope="col" nowrap><b>Specification</b></th> 621 * <th align="left" scope="col" nowrap><b>Implementation</b></th> 622 * </tr> 623 * </table> 624 * </p> 625 * @return The options of the command. 626 */ 627 @javax.annotation.Generated( value = "org.jomc.tools.SourceFileProcessor 1.5", comments = "See http://www.jomc.org/jomc/1.5/jomc-tools-1.5" ) 628 public org.apache.commons.cli.Options getOptions() 629 { 630 final org.apache.commons.cli.Options options = new org.apache.commons.cli.Options(); 631 return options; 632 } 633 // </editor-fold> 634 // SECTION-END 635}