Package net.shibboleth.ext.spring.cli
Class AbstractCommandLine<T extends CommandLineArguments>
- java.lang.Object
-
- net.shibboleth.ext.spring.cli.AbstractCommandLine<T>
-
- Type Parameters:
T- argument object type
public abstract class AbstractCommandLine<T extends CommandLineArguments> extends Object
A simple driver for a Spring-based CLI. This class handles a single parameters, the primary Spring configuration resource. Additional parameters may be handled by subclasses. All logging is done in accordance with the logback.xml file included in the library. If you wish to use a different logging configuration you may do so using the-Dlogback.configurationFile=/path/to/logback.xmlJVM configuration option.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classAbstractCommandLine.TerminalCodesTerminal codes.
-
Field Summary
Fields Modifier and Type Field Description private GenericApplicationContextapplicationContextSpring context.static StringARGS_PROPERTYName of system property for command line argument class.private ApplicationContextInitializer<? super FilesystemGenericApplicationContext>contextInitializerOptional Context initialized.static intRC_INITReturn code indicating an initialization error, 1 .static intRC_IOReturn code indicating an error reading files, 2 .static intRC_OKReturn code indicating command completed successfully, 0 .static intRC_UNKNOWNReturn code indicating an unknown error occurred, -1 .
-
Constructor Summary
Constructors Constructor Description AbstractCommandLine()
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description protected intdoRun(T args)The execution method to override.private static voiderror(String error)Prints the error message to STDERR.protected List<Resource>getAdditionalSpringResources()Return any additional resources that should be prepended to that supplied by the caller.protected GenericApplicationContextgetApplicationContext()Get the Spring context.protected abstract Class<T>getArgumentClass()Get the class of the argument object to instantiate.protected abstract org.slf4j.LoggergetLogger()Get logger.protected abstract StringgetVersion()Return an appropriate version value.protected voidinitLogging(T args)Initialize the logging subsystem.protected intrun(String[] args)Run method.protected voidsetContextInitializer(ApplicationContextInitializer<? super FilesystemGenericApplicationContext> initializer)Set a context initializer.private voidsetLoggingProperty(String value)Set the logback configuration to a specific location.private voidsetLoggingToLocalResource(String value)Set the logback configuration to a specific package-local resource.
-
-
-
Field Detail
-
ARGS_PROPERTY
@Nonnull @NotEmpty public static final String ARGS_PROPERTY
Name of system property for command line argument class.- See Also:
- Constant Field Values
-
RC_OK
public static final int RC_OK
Return code indicating command completed successfully, 0 .- See Also:
- Constant Field Values
-
RC_INIT
public static final int RC_INIT
Return code indicating an initialization error, 1 .- See Also:
- Constant Field Values
-
RC_IO
public static final int RC_IO
Return code indicating an error reading files, 2 .- See Also:
- Constant Field Values
-
RC_UNKNOWN
public static final int RC_UNKNOWN
Return code indicating an unknown error occurred, -1 .- See Also:
- Constant Field Values
-
applicationContext
@Nullable private GenericApplicationContext applicationContext
Spring context.
-
contextInitializer
@Nullable private ApplicationContextInitializer<? super FilesystemGenericApplicationContext> contextInitializer
Optional Context initialized.
-
-
Method Detail
-
setContextInitializer
protected void setContextInitializer(@Nonnull ApplicationContextInitializer<? super FilesystemGenericApplicationContext> initializer)Set a context initializer.- Parameters:
initializer- what to set
-
getApplicationContext
@Nonnull protected GenericApplicationContext getApplicationContext()
Get the Spring context.- Returns:
- Spring context
-
getAdditionalSpringResources
@Nonnull @NonnullElements @Unmodifiable @NotLive protected List<Resource> getAdditionalSpringResources()
Return any additional resources that should be prepended to that supplied by the caller.- Returns:
- the resources
-
run
protected int run(@Nonnull String[] args)Run method.- Parameters:
args- command line arguments- Returns:
- exit code
-
setLoggingProperty
private void setLoggingProperty(@Nonnull String value)Set the logback configuration to a specific location.Note that this must be done before the first logger is retrieved.
- Parameters:
value- logback configuration location to set
-
setLoggingToLocalResource
private void setLoggingToLocalResource(@Nonnull String value)Set the logback configuration to a specific package-local resource.- Parameters:
value- name of resource to use as the logback configuration file
-
initLogging
protected void initLogging(@Nonnull T args)Initialize the logging subsystem.- Parameters:
args- command line arguments
-
doRun
protected int doRun(@Nonnull T args)The execution method to override. The default implementation handles Spring context creation.- Parameters:
args- input arguments- Returns:
- exit code
-
getArgumentClass
@Nonnull protected abstract Class<T> getArgumentClass()
Get the class of the argument object to instantiate.- Returns:
- argument class
-
getVersion
@Nonnull @NotEmpty protected abstract String getVersion()
Return an appropriate version value.- Returns:
- a version string
-
getLogger
@Nonnull protected abstract org.slf4j.Logger getLogger()
Get logger.- Returns:
- logger
-
-