Class SystemReader

java.lang.Object
org.eclipse.jgit.util.SystemReader
Direct Known Subclasses:
SystemReader.Default

public abstract class SystemReader extends Object
Interface to read values from the system.

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.

  • Field Details

  • Constructor Details

    • SystemReader

      public SystemReader()
  • Method Details

    • getInstance

      public static SystemReader getInstance()
      Get the current SystemReader instance
      Returns:
      the current SystemReader instance.
    • setInstance

      public static void setInstance(SystemReader newReader)
      Set a new SystemReader instance to use when accessing properties.
      Parameters:
      newReader - the new instance to use when accessing properties, or null for the default instance.
    • init

      private void init()
    • setPlatformChecker

      protected final void setPlatformChecker()
      Should be used in tests when the platform is explicitly changed.
      Since:
      3.6
    • getHostname

      public abstract String getHostname()
      Gets the hostname of the local host. If no hostname can be found, the hostname is set to the default value "localhost".
      Returns:
      the canonical hostname
    • getenv

      public abstract String getenv(String variable)
      Get value of the system variable
      Parameters:
      variable - system variable to read
      Returns:
      value of the system variable
    • getProperty

      public abstract String getProperty(String key)
      Get value of the system property
      Parameters:
      key - of the system property to read
      Returns:
      value of the system property
    • openUserConfig

      public abstract FileBasedConfig openUserConfig(Config parent, FS fs)
      Open the git configuration found in the user home. Use getUserConfig() to get the current git configuration in the user home since it manages automatic reloading when the gitconfig file was modified and avoids unnecessary reloads.
      Parameters:
      parent - a config with values not found directly in the returned config
      fs - the file system abstraction which will be necessary to perform certain file system operations.
      Returns:
      the git configuration found in the user home
    • openSystemConfig

      public abstract FileBasedConfig openSystemConfig(Config parent, FS fs)
      Open the gitconfig configuration found in the system-wide "etc" directory. Use getSystemConfig() to get the current system-wide git configuration since it manages automatic reloading when the gitconfig file was modified and avoids unnecessary reloads.
      Parameters:
      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.
      Returns:
      the gitconfig configuration found in the system-wide "etc" directory
    • openJGitConfig

      public abstract FileBasedConfig openJGitConfig(Config parent, FS fs)
      Open the jgit configuration located at $XDG_CONFIG_HOME/jgit/config. Use getJGitConfig() to get the current jgit configuration in the user home since it manages automatic reloading when the jgit config file was modified and avoids unnecessary reloads.
      Parameters:
      parent - a config with values not found directly in the returned config
      fs - the file system abstraction which will be necessary to perform certain file system operations.
      Returns:
      the jgit configuration located at $XDG_CONFIG_HOME/jgit/config
      Since:
      5.5.2
    • getUserConfig

      public StoredConfig getUserConfig() throws ConfigInvalidException, IOException
      Get the git configuration found in the user home. The configuration will be reloaded automatically if the configuration file was modified. Also reloads the system config if the system config file was modified. If the configuration file wasn't modified returns the cached configuration.
      Returns:
      the git configuration found in the user home
      Throws:
      ConfigInvalidException - if configuration is invalid
      IOException - if something went wrong when reading files
      Since:
      5.1.9
    • getJGitConfig

      public StoredConfig getJGitConfig() throws ConfigInvalidException, IOException
      Get the jgit configuration located at $XDG_CONFIG_HOME/jgit/config. The configuration will be reloaded automatically if the configuration file was modified. If the configuration file wasn't modified returns the cached configuration.
      Returns:
      the jgit configuration located at $XDG_CONFIG_HOME/jgit/config
      Throws:
      ConfigInvalidException - if configuration is invalid
      IOException - if something went wrong when reading files
      Since:
      5.5.2
    • getSystemConfig

      public StoredConfig getSystemConfig() throws ConfigInvalidException, IOException
      Get the gitconfig configuration found in the system-wide "etc" directory. The configuration will be reloaded automatically if the configuration file was modified otherwise returns the cached system level config.
      Returns:
      the gitconfig configuration found in the system-wide "etc" directory
      Throws:
      ConfigInvalidException - if configuration is invalid
      IOException - if something went wrong when reading files
      Since:
      5.1.9
    • updateAll

      private void updateAll(Config config) throws ConfigInvalidException, IOException
      Update config and its parents if they seem modified
      Parameters:
      config - configuration to reload if outdated
      Throws:
      ConfigInvalidException - if configuration is invalid
      IOException - if something went wrong when reading files
    • getCurrentTime

      public abstract long getCurrentTime()
      Get the current system time
      Returns:
      the current system time
    • getClock

      public MonotonicClock getClock()
      Get clock instance preferred by this system.
      Returns:
      clock instance preferred by this system.
      Since:
      4.6
    • getTimezone

      public abstract int getTimezone(long when)
      Get the local time zone
      Parameters:
      when - a system timestamp
      Returns:
      the local time zone
    • getTimeZone

      public TimeZone getTimeZone()
      Get system time zone, possibly mocked for testing
      Returns:
      system time zone, possibly mocked for testing
      Since:
      1.2
    • getLocale

      public Locale getLocale()
      Get the locale to use
      Returns:
      the locale to use
      Since:
      1.2
    • getDefaultCharset

      public Charset getDefaultCharset()
      Retrieves the default Charset depending on the system locale.
      Returns:
      the Charset
      Since:
      6.0
      See Also:
    • getSimpleDateFormat

      public SimpleDateFormat getSimpleDateFormat(String pattern)
      Returns a simple date format instance as specified by the given pattern.
      Parameters:
      pattern - the pattern as defined in SimpleDateFormat(String)
      Returns:
      the simple date format
      Since:
      2.0
    • getSimpleDateFormat

      public SimpleDateFormat getSimpleDateFormat(String pattern, Locale locale)
      Returns a simple date format instance as specified by the given pattern.
      Parameters:
      pattern - the pattern as defined in SimpleDateFormat(String)
      locale - locale to be used for the SimpleDateFormat
      Returns:
      the simple date format
      Since:
      3.2
    • getDateTimeInstance

      public DateFormat getDateTimeInstance(int dateStyle, int timeStyle)
      Returns a date/time format instance for the given styles.
      Parameters:
      dateStyle - the date style as specified in DateFormat.getDateTimeInstance(int, int)
      timeStyle - the time style as specified in DateFormat.getDateTimeInstance(int, int)
      Returns:
      the date format
      Since:
      2.0
    • isWindows

      public boolean isWindows()
      Whether we are running on Windows.
      Returns:
      true if we are running on Windows.
    • isMacOS

      public boolean isMacOS()
      Whether we are running on Mac OS X
      Returns:
      true if we are running on Mac OS X
    • getOsName

      private String getOsName()
    • checkPath

      public void checkPath(String path) throws CorruptObjectException
      Check tree path entry for validity.

      Scans a multi-directory path string such as "src/main.c".

      Parameters:
      path - path string to scan.
      Throws:
      CorruptObjectException - path is invalid.
      Since:
      3.6
    • checkPath

      public void checkPath(byte[] path) throws CorruptObjectException
      Check tree path entry for validity.

      Scans a multi-directory path string such as "src/main.c".

      Parameters:
      path - path string to scan.
      Throws:
      CorruptObjectException - path is invalid.
      Since:
      4.2