public abstract class SystemReader
extends java.lang.Object
When writing unit tests, extending this interface with a custom class permits to simulate an access to a system variable or property and permits to control the user's global configuration.
Modifier and Type | Class and Description |
---|---|
private static class |
SystemReader.Default |
Modifier and Type | Field and Description |
---|---|
private static SystemReader |
DEFAULT |
private static SystemReader |
INSTANCE |
private static java.lang.Boolean |
isMacOS |
private static java.lang.Boolean |
isWindows |
private ObjectChecker |
platformChecker |
Constructor and Description |
---|
SystemReader() |
Modifier and Type | Method and Description |
---|---|
void |
checkPath(byte[] path)
Check tree path entry for validity.
|
void |
checkPath(java.lang.String path)
Check tree path entry for validity.
|
MonotonicClock |
getClock()
Get clock instance preferred by this system.
|
abstract long |
getCurrentTime()
Get the current system time
|
java.text.DateFormat |
getDateTimeInstance(int dateStyle,
int timeStyle)
Returns a date/time format instance for the given styles.
|
abstract java.lang.String |
getenv(java.lang.String variable)
Get value of the system variable
|
abstract java.lang.String |
getHostname()
Gets the hostname of the local host.
|
static SystemReader |
getInstance()
Get time since epoch, with up to millisecond resolution.
|
java.util.Locale |
getLocale()
Get the locale to use
|
private java.lang.String |
getOsName() |
abstract java.lang.String |
getProperty(java.lang.String key)
Get value of the system property
|
java.text.SimpleDateFormat |
getSimpleDateFormat(java.lang.String pattern)
Returns a simple date format instance as specified by the given pattern.
|
java.text.SimpleDateFormat |
getSimpleDateFormat(java.lang.String pattern,
java.util.Locale locale)
Returns a simple date format instance as specified by the given pattern.
|
java.util.TimeZone |
getTimeZone()
Get system time zone, possibly mocked for testing
|
abstract int |
getTimezone(long when)
Get the local time zone
|
private void |
init() |
boolean |
isMacOS()
Whether we are running on Mac OS X
|
boolean |
isWindows()
Whether we are running on Windows.
|
abstract FileBasedConfig |
openSystemConfig(Config parent,
FS fs)
Open the gitconfig configuration found in the system-wide "etc" directory
|
abstract FileBasedConfig |
openUserConfig(Config parent,
FS fs)
Open the git configuration found in the user home
|
static void |
setInstance(SystemReader newReader)
Set the new instance to use when accessing properties.
|
protected void |
setPlatformChecker()
Should be used in tests when the platform is explicitly changed.
|
private static final SystemReader DEFAULT
private static java.lang.Boolean isMacOS
private static java.lang.Boolean isWindows
private static SystemReader INSTANCE
private ObjectChecker platformChecker
public static SystemReader getInstance()
public static void setInstance(SystemReader newReader)
newReader
- the new instance to use when accessing properties, or null for
the default instance.private void init()
protected final void setPlatformChecker()
public abstract java.lang.String getHostname()
public abstract java.lang.String getenv(java.lang.String variable)
variable
- system variable to readpublic abstract java.lang.String getProperty(java.lang.String key)
key
- of the system property to readpublic abstract FileBasedConfig openUserConfig(Config parent, FS fs)
parent
- a config with values not found directly in the returned configfs
- the file system abstraction which will be necessary to perform
certain file system operations.public abstract FileBasedConfig openSystemConfig(Config parent, FS fs)
parent
- a config with values not found directly in the returned
config. Null is a reasonable value here.fs
- the file system abstraction which will be necessary to perform
certain file system operations.public abstract long getCurrentTime()
public MonotonicClock getClock()
public abstract int getTimezone(long when)
when
- a system timestamppublic java.util.TimeZone getTimeZone()
public java.util.Locale getLocale()
public java.text.SimpleDateFormat getSimpleDateFormat(java.lang.String pattern)
pattern
- the pattern as defined in
SimpleDateFormat.SimpleDateFormat(String)
public java.text.SimpleDateFormat getSimpleDateFormat(java.lang.String pattern, java.util.Locale locale)
pattern
- the pattern as defined in
SimpleDateFormat.SimpleDateFormat(String)
locale
- locale to be used for the SimpleDateFormat
public java.text.DateFormat getDateTimeInstance(int dateStyle, int timeStyle)
dateStyle
- the date style as specified in
DateFormat.getDateTimeInstance(int, int)
timeStyle
- the time style as specified in
DateFormat.getDateTimeInstance(int, int)
public boolean isWindows()
public boolean isMacOS()
private java.lang.String getOsName()
public void checkPath(java.lang.String path) throws CorruptObjectException
Scans a multi-directory path string such as "src/main.c"
.
path
- path string to scan.CorruptObjectException
- path is invalid.public void checkPath(byte[] path) throws CorruptObjectException
Scans a multi-directory path string such as "src/main.c"
.
path
- path string to scan.CorruptObjectException
- path is invalid.