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 gitonfig 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 SimpleDateFormatpublic 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.