Class ConfigManager

java.lang.Object
dev.ua.theroer.magicutils.config.ConfigManager

public class ConfigManager extends Object
Platform-agnostic configuration manager using annotation-driven mapping and Jackson (YAML/JSON/JSONC/TOML).
  • Constructor Details

    • ConfigManager

      public ConfigManager(Platform platform)
      Creates a new ConfigManager for the provided platform.
      Parameters:
      platform - platform abstraction
  • Method Details

    • register

      public <T> T register(Class<T> configClass)
      Registers and loads a configuration class.
      Type Parameters:
      T - the type of configuration
      Parameters:
      configClass - the configuration class
      Returns:
      the loaded configuration instance
    • register

      public <T> T register(Class<T> configClass, Map<String,String> placeholders)
      Registers and loads a configuration class with placeholder replacements.
      Type Parameters:
      T - the type of configuration
      Parameters:
      configClass - the configuration class
      placeholders - placeholder replacements for the file path
      Returns:
      the loaded configuration instance
    • registerMigrations

      public void registerMigrations(Class<?> configClass, ConfigMigration... migrations)
      Registers migrations for a config class.
      Parameters:
      configClass - config type to associate with migrations
      migrations - migration steps
    • registerMigration

      public void registerMigration(Class<?> configClass, ConfigMigration migration)
      Registers a single migration for a config class.
      Parameters:
      configClass - config type to associate with migration
      migration - migration step
    • loadConfigFile

      public <T> T loadConfigFile(Class<T> configClass, String... placeholders)
      Registers and loads a configuration class using placeholder pairs. Accepts key, value, key, value... and converts them to a map.
      Type Parameters:
      T - the type of configuration
      Parameters:
      configClass - the configuration class
      placeholders - key/value pairs for placeholders
      Returns:
      loaded configuration instance
    • saveConfigFile

      public <T> void saveConfigFile(Class<T> configClass)
      Saves all registered instances of the given config class.
      Type Parameters:
      T - config type
      Parameters:
      configClass - config type to save
    • saveConfigFile

      public void saveConfigFile(Object configInstance)
      Saves a specific configuration instance.
      Parameters:
      configInstance - instance to persist
    • reloadConfigFile

      public <T> void reloadConfigFile(Class<T> configClass, String... sections)
      Reloads a configuration class with optional sections.
      Type Parameters:
      T - config type
      Parameters:
      configClass - config type to reload
      sections - optional sections
    • reloadConfigFile

      public void reloadConfigFile(Object configInstance)
      Reloads a specific configuration instance.
      Parameters:
      configInstance - instance to reload
    • reloadAll

      public void reloadAll()
      Reload all registered configuration instances from disk.
    • unloadConfigFile

      public void unloadConfigFile(Class<?> configClass)
      Unregisters all instances of a config class.
      Parameters:
      configClass - config type to unload
    • save

      public <T> void save(Class<T> configClass)
      Saves all registered instances of the given config class.
      Type Parameters:
      T - config type
      Parameters:
      configClass - config type to save
    • save

      public void save(Object configInstance)
      Saves the provided configuration instance.
      Parameters:
      configInstance - config instance to persist
    • reload

      public void reload(Object configInstance)
      Reloads the provided configuration instance from disk.
      Parameters:
      configInstance - config instance to reload
    • mergeFromFile

      public void mergeFromFile(Object configInstance)
      Alias for reload(Object).
      Parameters:
      configInstance - config instance to reload
    • mergeToFile

      public void mergeToFile(Object configInstance)
      Alias for save(Object).
      Parameters:
      configInstance - config instance to save
    • unload

      public void unload(Object configInstance)
      Unregisters the configuration and stops tracking file changes.
      Parameters:
      configInstance - config instance to remove
    • getConfig

      public <T> T getConfig(Class<T> configClass)
      Retrieves the primary registered instance of the given config class.
      Type Parameters:
      T - config type
      Parameters:
      configClass - config type to fetch
      Returns:
      primary instance or null if none registered
    • reload

      public <T> void reload(Class<T> configClass)
      Reloads all registered instances of a config class from disk.
      Type Parameters:
      T - config type
      Parameters:
      configClass - config type to reload
    • reload

      public <T> void reload(Class<T> configClass, String... sections)
      Reloads registered instances of a config class, optionally scoping to specific sections.
      Type Parameters:
      T - config type
      Parameters:
      configClass - config type to reload
      sections - sections to reload (empty for full reload)
    • reloadAsync

      public CompletableFuture<Void> reloadAsync(Object configInstance)
      Reloads a configuration instance asynchronously.
      Parameters:
      configInstance - config instance to reload
      Returns:
      future that completes after reload
    • reloadSmart

      public CompletableFuture<Void> reloadSmart(Object configInstance)
      Reloads a configuration instance, auto-switching to async on sensitive threads.
      Parameters:
      configInstance - config instance
      Returns:
      future that completes after reload
    • reloadAsync

      public <T> CompletableFuture<Void> reloadAsync(Class<T> configClass, String... sections)
      Reloads config instances for a class asynchronously.
      Type Parameters:
      T - config type
      Parameters:
      configClass - config type
      sections - optional sections
      Returns:
      future that completes after reload
    • reloadSmart

      public <T> CompletableFuture<Void> reloadSmart(Class<T> configClass, String... sections)
      Reloads config instances for a class, auto-switching to async on sensitive threads.
      Type Parameters:
      T - config type
      Parameters:
      configClass - config class
      sections - optional sections
      Returns:
      future that completes after reload
    • reloadAllAsync

      public CompletableFuture<Void> reloadAllAsync()
      Reloads all registered configs asynchronously.
      Returns:
      future that completes after reload
    • reloadAllSmart

      public CompletableFuture<Void> reloadAllSmart()
      Reloads all registered configs, auto-switching to async on sensitive threads.
      Returns:
      future that completes after reload
    • onChange

      public <T> void onChange(Class<T> configClass, BiConsumer<T, Set<String>> listener)
      Registers a listener that fires when the config changes on disk.
      Type Parameters:
      T - config type
      Parameters:
      configClass - config type to monitor
      listener - callback receiving updated instance and changed sections
    • subscribeChanges

      public <T> ListenerSubscription subscribeChanges(Class<T> configClass, BiConsumer<T, Set<String>> listener)
      Subscribes to config change notifications and returns an unregister handle.
      Type Parameters:
      T - config type
      Parameters:
      configClass - config type to monitor
      listener - callback receiving updated instance and changed sections
      Returns:
      subscription handle that removes the listener when closed
    • shutdown

      public void shutdown()
      Stops the watcher service and releases associated resources.