ConfigurationFactory

public class ConfigurationFactory
extends Object implements IConfigurationFactory

java.lang.Object
   ↳ com.android.tradefed.config.ConfigurationFactory


Factory for creating IConfiguration.

Summary

Nested classes

class ConfigurationFactory.ConfigId

A simple struct-like class that stores a configuration's name alongside the arguments for any <template-include> tags it may contain. 

class ConfigurationFactory.ConfigLoader

Implementation of IConfigDefLoader that tracks the included configurations from one root config, and throws an exception on circular includes. 

Protected constructors

ConfigurationFactory()

Public methods

void clearMapConfig()

In some particular case, we need to clear the map.

IConfiguration createConfigurationFromArgs(String[] arrayArgs, List<String> unconsumedArgs, IKeyStoreClient keyStoreClient)

Create the IConfiguration from command line arguments with a key store.

IConfiguration createConfigurationFromArgs(String[] arrayArgs, List<String> unconsumedArgs)

Create the IConfiguration from command line arguments.

IConfiguration createConfigurationFromArgs(String[] arrayArgs)

A convenience method which calls createConfigurationFromArgs(String[], List) with a null second argument.

IGlobalConfiguration createGlobalConfigurationFromArgs(String[] arrayArgs, List<String> remainingArgs)

Create a IGlobalConfiguration from command line arguments.

void dumpConfig(String configName, PrintStream out)

Dumps the contents of the configuration to the given PrintStream

List<String> getConfigList(String subPath)

Variation of getConfigList() where we want to reduce the listing to only a subdirectory of the configuration path (res/config/).

List<String> getConfigList(String subPath, boolean loadFromEnv)

Variation of getConfigList(String) where can specify whether or not we also want to load the configuration from the environment.

List<String> getConfigList()

Return the list of names of all the configs found in the JARs on the classpath.

static IConfigurationFactory getInstance()

Get the singleton IConfigurationFactory instance.

void loadAllConfigs(boolean discardExceptions)

Loads all configurations found in classpath and test cases directories.

void loadAndPrintAllConfigs()

Utility method that checks that all configs can be loaded, parsed, and all option values set.

void printHelp(PrintStream out)

Prints help output for this factory.

void printHelpForConfig(String[] args, boolean importantOnly, PrintStream out)

Prints help output for the IConfiguration specified in command line arguments,

If 'args' refers to a known configuration, a IConfiguration object will be created from XML, and help for that IConfiguration will be outputted.

Protected methods

InputStream getBundledConfigStream(String name)
String getConfigPrefix()

Return the path prefix of config xml files on classpath

Exposed so unit tests can mock.

BufferedInputStream getConfigStream(String name)

Loads an InputStream for given config name

ConfigurationDef getConfigurationDef(String name, boolean isGlobal, Map<String, String> templateMap)

Retrieve the ConfigurationDef for the given name

Map<ConfigurationFactory.ConfigIdConfigurationDef> getMapConfig()

Exposed for testing.

String[] reorderArgs(String[] args)

Reorder the args so that template:map args are all moved to the front.

Protected constructors

ConfigurationFactory

protected ConfigurationFactory ()

Public methods

clearMapConfig

public void clearMapConfig ()

In some particular case, we need to clear the map.

createConfigurationFromArgs

public IConfiguration createConfigurationFromArgs (String[] arrayArgs, 
                List<String> unconsumedArgs, 
                IKeyStoreClient keyStoreClient)

Create the IConfiguration from command line arguments with a key store.

Expected format is "CONFIG [options]", where CONFIG is the built-in configuration name or a file path to a configuration xml file.

Parameters
arrayArgs String: the command line arguments

unconsumedArgs List: a List which will be populated with the arguments that were not consumed by the Objects associated with the specified config. If this is null, then the implementation will throw ConfigurationException if any unprocessed args remain.

keyStoreClient IKeyStoreClient: a IKeyStoreClient which is used to obtain sensitive info in the args.

Returns
IConfiguration the loaded IConfiguration. The delegate object Option fields have been populated with values in args.

Throws
ConfigurationException

createConfigurationFromArgs

public IConfiguration createConfigurationFromArgs (String[] arrayArgs, 
                List<String> unconsumedArgs)

Create the IConfiguration from command line arguments.

Expected format is "CONFIG [options]", where CONFIG is the built-in configuration name or a file path to a configuration xml file.

Parameters
arrayArgs String: the command line arguments

unconsumedArgs List: a List which will be populated with the arguments that were not consumed by the Objects associated with the specified config. If this is null, then the implementation will throw ConfigurationException if any unprocessed args remain.

Returns
IConfiguration the loaded IConfiguration. The delegate object Option fields have been populated with values in args.

Throws
ConfigurationException

createConfigurationFromArgs

public IConfiguration createConfigurationFromArgs (String[] arrayArgs)

A convenience method which calls createConfigurationFromArgs(String[], List) with a null second argument. Thus, it will throw ConfigurationException if any unconsumed arguments remain.

Parameters
arrayArgs String

Returns
IConfiguration

Throws
ConfigurationException

createGlobalConfigurationFromArgs

public IGlobalConfiguration createGlobalConfigurationFromArgs (String[] arrayArgs, 
                List<String> remainingArgs)

Create a IGlobalConfiguration from command line arguments.

Expected format is "CONFIG [options]", where CONFIG is the built-in configuration name or a file path to a configuration xml file.

Parameters
arrayArgs String: the command line arguments

remainingArgs List: a list which will be populated with the arguments that weren't processed as global arguments

Returns
IGlobalConfiguration the loaded IGlobalConfiguration. The delegate object Option fields have been populated with values in args.

Throws
ConfigurationException

dumpConfig

public void dumpConfig (String configName, 
                PrintStream out)

Dumps the contents of the configuration to the given PrintStream

Parameters
configName String: the configuration name

out PrintStream: the PrintStream to dump output to

getConfigList

public List<String> getConfigList (String subPath)

Variation of getConfigList() where we want to reduce the listing to only a subdirectory of the configuration path (res/config/).

Parameters
subPath String: name of the sub-directories to look in for configuration. If null, will have the same behavior as getConfigList().

Returns
List<String>

getConfigList

public List<String> getConfigList (String subPath, 
                boolean loadFromEnv)

Variation of getConfigList(String) where can specify whether or not we also want to load the configuration from the environment.

Parameters
subPath String: name of the sub-directories to look in for configuration. If null, will have the same behavior as getConfigList().

loadFromEnv boolean: True if we should load the configuration in the environment variable.

Returns
List<String>

getConfigList

public List<String> getConfigList ()

Return the list of names of all the configs found in the JARs on the classpath. Does not attempt to load any of the configs, so it is possible to have non working config in this list.

Returns
List<String>

getInstance

public static IConfigurationFactory getInstance ()

Get the singleton IConfigurationFactory instance.

Returns
IConfigurationFactory

loadAllConfigs

public void loadAllConfigs (boolean discardExceptions)

Loads all configurations found in classpath and test cases directories.

Parameters
discardExceptions boolean: true if any ConfigurationException should be ignored.

Throws
ConfigurationException

loadAndPrintAllConfigs

public void loadAndPrintAllConfigs ()

Utility method that checks that all configs can be loaded, parsed, and all option values set. Only exposed so that depending project can validate their configs. Should not be exposed in the console.

Throws
ConfigurationException if one or more configs failed to load

printHelp

public void printHelp (PrintStream out)

Prints help output for this factory.

Prints a generic help info, and lists all available configurations.

Parameters
out PrintStream: the PrintStream to dump output to

printHelpForConfig

public void printHelpForConfig (String[] args, 
                boolean importantOnly, 
                PrintStream out)

Prints help output for the IConfiguration specified in command line arguments,

If 'args' refers to a known configuration, a IConfiguration object will be created from XML, and help for that IConfiguration will be outputted. Note all other 'args' values will be ignored (ie the help text will describe the current values of Options as loaded from XML, and will not reflect option's values set by the command line args.

If 'args' does not reference a known IConfiguration, the generic printHelp(PrintStream) help will be displayed.

Parameters
args String: the command line arguments

importantOnly boolean: if true, print an abbreviated help listing only the important details

out PrintStream: the PrintStream to dump output to

Protected methods

getBundledConfigStream

protected InputStream getBundledConfigStream (String name)

Parameters
name String

Returns
InputStream

getConfigPrefix

protected String getConfigPrefix ()

Return the path prefix of config xml files on classpath

Exposed so unit tests can mock.

Returns
String String path with trailing /

getConfigStream

protected BufferedInputStream getConfigStream (String name)

Loads an InputStream for given config name

Parameters
name String: the configuration name to load

Returns
BufferedInputStream a BufferedInputStream for reading config contents

Throws
ConfigurationException if config could not be found

getConfigurationDef

protected ConfigurationDef getConfigurationDef (String name, 
                boolean isGlobal, 
                Map<String, String> templateMap)

Retrieve the ConfigurationDef for the given name

Parameters
name String: the name of a built-in configuration to load or a file path to configuration xml to load

isGlobal boolean

templateMap Map

Returns
ConfigurationDef ConfigurationDef

Throws
ConfigurationException if an error occurred loading the config

getMapConfig

protected Map<ConfigurationFactory.ConfigIdConfigurationDef> getMapConfig ()

Exposed for testing. Return a copy of the Map.

Returns
Map<ConfigurationFactory.ConfigIdConfigurationDef>

reorderArgs

protected String[] reorderArgs (String[] args)

Reorder the args so that template:map args are all moved to the front.

Parameters
args String

Returns
String[]