public class Config extends Object
.config
, .gitconfig
, .gitmodules
file.Modifier and Type | Class and Description |
---|---|
static interface |
Config.ConfigEnum
Converts enumeration values into configuration options and vice-versa,
allowing to match a config option with an enum value.
|
static interface |
Config.SectionParser<T>
Parses a section of the configuration into an application model object.
|
Constructor and Description |
---|
Config()
Create a configuration with no default fallback.
|
Config(Config defaultConfig)
Create an empty configuration with a fallback for missing keys.
|
Modifier and Type | Method and Description |
---|---|
ListenerHandle |
addChangeListener(ConfigChangedListener listener)
Adds a listener to be notified about changes.
|
protected void |
clear()
Clear the configuration file
|
protected void |
fireConfigChangedEvent()
Notifies the listeners
|
void |
fromText(String text)
Clear this configuration and reset to the contents of the parsed string.
|
<T> T |
get(Config.SectionParser<T> parser)
Obtain a handle to a parsed set of configuration values.
|
Config |
getBaseConfig()
Retrieves this config's base config.
|
boolean |
getBoolean(String section,
String name,
boolean defaultValue)
Get a boolean value from the git config
|
boolean |
getBoolean(String section,
String subsection,
String name,
boolean defaultValue)
Get a boolean value from the git config
|
<T extends Enum<?>> |
getEnum(String section,
String subsection,
String name,
T defaultValue)
Parse an enumeration from the configuration.
|
<T extends Enum<?>> |
getEnum(T[] all,
String section,
String subsection,
String name,
T defaultValue)
Parse an enumeration from the configuration.
|
int |
getInt(String section,
String name,
int defaultValue)
Obtain an integer value from the configuration.
|
int |
getInt(String section,
String subsection,
String name,
int defaultValue)
Obtain an integer value from the configuration.
|
long |
getLong(String section,
String name,
long defaultValue)
Obtain an integer value from the configuration.
|
long |
getLong(String section,
String subsection,
String name,
long defaultValue)
Obtain an integer value from the configuration.
|
Set<String> |
getNames(String section)
Get the list of names defined for this section
|
Set<String> |
getNames(String section,
boolean recursive)
Get the list of names defined for this section
|
Set<String> |
getNames(String section,
String subsection)
Get the list of names defined for this subsection
|
Set<String> |
getNames(String section,
String subsection,
boolean recursive)
Get the list of names defined for this section
|
List<RefSpec> |
getRefSpecs(String section,
String subsection,
String name)
Parse a list of
RefSpec s from the
configuration. |
Set<String> |
getSections()
Get the sections defined in this
Config . |
String |
getString(String section,
String subsection,
String name)
Get string value or null if not found.
|
String[] |
getStringList(String section,
String subsection,
String name)
Get a list of string values
|
Set<String> |
getSubsections(String section)
Get set of all subsections of specified section within this configuration
and its base configuration
|
long |
getTimeUnit(String section,
String subsection,
String name,
long defaultValue,
TimeUnit wantUnit)
Parse a numerical time unit, such as "1 minute", from the configuration.
|
static boolean |
isMissing(String value)
Check if a given string is the "missing" value.
|
protected boolean |
isUtf8(byte[] bytes)
Check if bytes should be treated as UTF-8 or not.
|
protected boolean |
notifyUponTransientChanges()
Determine whether to issue change events for transient changes.
|
protected byte[] |
readIncludedConfig(String relPath)
Read the included config from the specified (possibly) relative path
|
void |
setBoolean(String section,
String subsection,
String name,
boolean value)
Add or modify a configuration value.
|
<T extends Enum<?>> |
setEnum(String section,
String subsection,
String name,
T value)
Add or modify a configuration value.
|
void |
setInt(String section,
String subsection,
String name,
int value)
Add or modify a configuration value.
|
void |
setLong(String section,
String subsection,
String name,
long value)
Add or modify a configuration value.
|
void |
setString(String section,
String subsection,
String name,
String value)
Add or modify a configuration value.
|
void |
setStringList(String section,
String subsection,
String name,
List<String> values)
Set a configuration value.
|
static void |
setTypedConfigGetter(TypedConfigGetter getter)
Globally sets a
TypedConfigGetter that is
subsequently used to read typed values from all git configs. |
String |
toText()
Get this configuration, formatted as a Git style text file.
|
void |
uncache(Config.SectionParser<?> parser)
Remove a cached configuration object.
|
void |
unset(String section,
String subsection,
String name)
Remove a configuration value.
|
void |
unsetSection(String section,
String subsection)
Remove all configuration values under a single section.
|
public Config()
public Config(Config defaultConfig)
defaultConfig
- the base configuration to be consulted when a key is missing
from this configuration instance.public Config getBaseConfig()
public static boolean isMissing(String value)
value
- string to be checked.public static void setTypedConfigGetter(TypedConfigGetter getter)
TypedConfigGetter
that is
subsequently used to read typed values from all git configs.getter
- to use; if null
use the default getter.public int getInt(String section, String name, int defaultValue)
section
- section the key is grouped within.name
- name of the key to get.defaultValue
- default value to return if no value was present.public int getInt(String section, String subsection, String name, int defaultValue)
section
- section the key is grouped within.subsection
- subsection name, such a remote or branch name.name
- name of the key to get.defaultValue
- default value to return if no value was present.public long getLong(String section, String name, long defaultValue)
section
- section the key is grouped within.name
- name of the key to get.defaultValue
- default value to return if no value was present.public long getLong(String section, String subsection, String name, long defaultValue)
section
- section the key is grouped within.subsection
- subsection name, such a remote or branch name.name
- name of the key to get.defaultValue
- default value to return if no value was present.public boolean getBoolean(String section, String name, boolean defaultValue)
section
- section the key is grouped within.name
- name of the key to get.defaultValue
- default value to return if no value was present.public boolean getBoolean(String section, String subsection, String name, boolean defaultValue)
section
- section the key is grouped within.subsection
- subsection name, such a remote or branch name.name
- name of the key to get.defaultValue
- default value to return if no value was present.public <T extends Enum<?>> T getEnum(String section, String subsection, String name, T defaultValue)
section
- section the key is grouped within.subsection
- subsection name, such a remote or branch name.name
- name of the key to get.defaultValue
- default value to return if no value was present.defaultValue
.public <T extends Enum<?>> T getEnum(T[] all, String section, String subsection, String name, T defaultValue)
all
- all possible values in the enumeration which should be
recognized. Typically EnumType.values()
.section
- section the key is grouped within.subsection
- subsection name, such a remote or branch name.name
- name of the key to get.defaultValue
- default value to return if no value was present.defaultValue
.public String getString(String section, String subsection, String name)
section
- the sectionsubsection
- the subsection for the valuename
- the key namenull
if not foundpublic String[] getStringList(String section, String subsection, String name)
If this instance was created with a base, the base's values are returned first (if any).
section
- the sectionsubsection
- the subsection for the valuename
- the key namepublic long getTimeUnit(String section, String subsection, String name, long defaultValue, TimeUnit wantUnit)
section
- section the key is in.subsection
- subsection the key is in, or null if not in a subsection.name
- the key name.defaultValue
- default value to return if no value was present.wantUnit
- the units of defaultValue
and the return value, as
well as the units to assume if the value does not contain an
indication of the units.defaultValue
if not set, expressed in
units
.public List<RefSpec> getRefSpecs(String section, String subsection, String name)
RefSpec
s from the
configuration.section
- section the key is in.subsection
- subsection the key is in, or null if not in a subsection.name
- the key name.RefSpec
spublic Set<String> getSubsections(String section)
section
- section to search for.public Set<String> getSections()
Config
.Config
.
The set's iterator returns sections in the order they are
declared by the configuration starting from this instance and
progressing through the base.public Set<String> getNames(String section)
section
- the sectionpublic Set<String> getNames(String section, String subsection)
section
- the sectionsubsection
- the subsectionpublic Set<String> getNames(String section, boolean recursive)
section
- the sectionrecursive
- if true
recursively adds the names defined in all base
configurationspublic Set<String> getNames(String section, String subsection, boolean recursive)
section
- the sectionsubsection
- the subsectionrecursive
- if true
recursively adds the names defined in all base
configurationspublic <T> T get(Config.SectionParser<T> parser)
T
- type of configuration model to return.parser
- parser which can create the model if it is not already
available in this configuration file. The parser is also used
as the key into a cache and must obey the hashCode and equals
contract in order to reuse a parsed model.public void uncache(Config.SectionParser<?> parser)
If the associated configuration object has not yet been cached, this method has no effect.
parser
- parser used to obtain the configuration object.get(SectionParser)
public ListenerHandle addChangeListener(ConfigChangedListener listener)
Clients are supposed to remove the listeners after they are done with
them using the ListenerHandle.remove()
method
listener
- the listenerprotected boolean notifyUponTransientChanges()
If true
is returned (which is the default behavior),
fireConfigChangedEvent()
will be called upon each change.
Subclasses that override this to return false
are
responsible for issuing fireConfigChangedEvent()
calls
themselves.
protected void fireConfigChangedEvent()
public void setInt(String section, String subsection, String name, int value)
[section "subsection"] name = value
section
- section name, e.g "branch"subsection
- optional subsection value, e.g. a branch namename
- parameter name, e.g. "filemode"value
- parameter valuepublic void setLong(String section, String subsection, String name, long value)
[section "subsection"] name = value
section
- section name, e.g "branch"subsection
- optional subsection value, e.g. a branch namename
- parameter name, e.g. "filemode"value
- parameter valuepublic void setBoolean(String section, String subsection, String name, boolean value)
[section "subsection"] name = value
section
- section name, e.g "branch"subsection
- optional subsection value, e.g. a branch namename
- parameter name, e.g. "filemode"value
- parameter valuepublic <T extends Enum<?>> void setEnum(String section, String subsection, String name, T value)
[section "subsection"] name = value
section
- section name, e.g "branch"subsection
- optional subsection value, e.g. a branch namename
- parameter name, e.g. "filemode"value
- parameter valuepublic void setString(String section, String subsection, String name, String value)
[section "subsection"] name = value
section
- section name, e.g "branch"subsection
- optional subsection value, e.g. a branch namename
- parameter name, e.g. "filemode"value
- parameter value, e.g. "true"public void unset(String section, String subsection, String name)
section
- section name, e.g "branch"subsection
- optional subsection value, e.g. a branch namename
- parameter name, e.g. "filemode"public void unsetSection(String section, String subsection)
section
- section name, e.g "branch"subsection
- optional subsection value, e.g. a branch namepublic void setStringList(String section, String subsection, String name, List<String> values)
[section "subsection"] name = value1 name = value2
section
- section name, e.g "branch"subsection
- optional subsection value, e.g. a branch namename
- parameter name, e.g. "filemode"values
- list of zero or more values for this key.public String toText()
public void fromText(String text) throws ConfigInvalidException
text
- Git style text file listing configuration properties.ConfigInvalidException
- the text supplied is not formatted correctly. No changes were
made to this
.protected byte[] readIncludedConfig(String relPath) throws ConfigInvalidException
relPath
- possibly relative path to the included config, as specified in
this configConfigInvalidException
- if something went wrong while reading the configprotected void clear()
protected boolean isUtf8(byte[] bytes)
bytes
- the bytes to check encoding for.Copyright © 2020 Eclipse JGit Project. All rights reserved.