Class ConfigurationPath

java.lang.Object
org.jline.builtins.ConfigurationPath

public class ConfigurationPath extends Object
Manages configuration file paths for JLine applications.

This class provides a way to manage application and user configuration directories and locate configuration files within them. It follows the common pattern of looking for configuration files first in the user's configuration directory, then falling back to the application's configuration directory.

This class also supports loading configuration files from the classpath. The application configuration directory can be a classpath resource path, which will be resolved using the ClasspathResourceUtil class.

  • Field Details

    • appConfig

      private final Path appConfig
    • userConfig

      private final Path userConfig
  • Constructor Details

    • ConfigurationPath

      public ConfigurationPath(Path appConfig, Path userConfig)
      Configuration class constructor.
      Parameters:
      appConfig - Application configuration directory
      userConfig - User private configuration directory
    • ConfigurationPath

      public ConfigurationPath(String classpathResource, Path userConfig)
      Configuration class constructor with classpath resource support.
      Parameters:
      classpathResource - Classpath resource path (e.g., "/nano")
      userConfig - User private configuration directory
  • Method Details

    • getConfig

      public Path getConfig(String name)
      Search configuration file first from userConfig, then appConfig directory, and finally from classpath. Returns null if file is not found.
      Parameters:
      name - Configuration file name.
      Returns:
      Configuration file.
    • getUserConfig

      public Path getUserConfig(String name) throws IOException
      Search configuration file from userConfig directory. Returns null if file is not found.
      Parameters:
      name - Configuration file name.
      Returns:
      Configuration file.
      Throws:
      IOException - When we do not have read access to the file or directory.
    • getUserConfig

      public Path getUserConfig(String name, boolean create) throws IOException
      Search configuration file from userConfig directory. Returns null if file is not found.
      Parameters:
      name - Configuration file name
      create - When true configuration file is created if not found.
      Returns:
      Configuration file.
      Throws:
      IOException - When we do not have read/write access to the file or directory.
    • confine

      private static Path confine(Path base, String name)
      Resolves name against base and keeps the result inside base. Returns null when base is null, when the base directory cannot be resolved, or when the resolved path would escape base through an absolute path, .. segments, or symlink indirection.
    • fromClasspath

      public static ConfigurationPath fromClasspath(String classpathResource)
      Creates a ConfigurationPath from a classpath resource.
      Parameters:
      classpathResource - The classpath resource path (e.g., "/nano")
      Returns:
      A ConfigurationPath that will look for resources in the specified classpath location