Class ConfigValue<T,U>

java.lang.Object
cc.carm.lib.configuration.value.ValueManifest<T,U>
cc.carm.lib.configuration.value.ConfigValue<T,U>
Direct Known Subclasses:
CachedConfigValue

public abstract class ConfigValue<T,U> extends ValueManifest<T,U>
Represents a configurable value with type safety and null-handling capabilities.

This abstract class provides core functionalities for managing configuration values, including value retrieval with fallback defaults, null safety enforcement, and value persistence controls. It serves as the foundation for type-specific configuration implementations.

Functions:

Persistence Behavior:

Value modifications via set(Object) or setDefault() methods do NOT automatically persist to configuration sources. Explicit calls to ConfigurationHolder.save() are required for permanent storage.
See Also:
  • Constructor Details

    • ConfigValue

      protected ConfigValue(@NotNull @NotNull ValueManifest<T,U> manifest)
  • Method Details

    • get

      @Nullable public abstract T get()
      Gets the configured value (i.e., the value read from the source).
      If no default value was written during initialization, you can use the getOrDefault() method to obtain the default value when this value is empty.
      Returns:
      Configured value
    • getOrDefault

      public T getOrDefault()
      Gets the configured value, or returns the default value if not present.
      Returns:
      Configured value or default value
    • resolve

      @NotNull public T resolve()
      Gets the non-null value of this configuration.
      Returns:
      Non-null value
      Throws:
      NullPointerException - Thrown when the corresponding data is null
    • getNotNull

      @NotNull public T getNotNull()
      Gets the non-null value of this configuration.
      Returns:
      Non-null value
      Throws:
      NullPointerException - Thrown when the corresponding data is null
      See Also:
    • optional

      @NotNull public @NotNull Optional<@Nullable T> optional()
      Gets the value of this configuration as an Optional.
      Returns:
      Optional value
    • set

      public abstract void set(@Nullable T value)
      Sets the value of this configuration.
      After setting, the configuration file will NOT be saved automatically. To save, call ConfigurationHolder.save().
      Parameters:
      value - The value to set
    • setDefault

      public void setDefault()
      Initializes the default value for this configuration.
      After setting, the configuration file will NOT be saved automatically. To save, call ConfigurationHolder.save().
    • setDefault

      public void setDefault(boolean override)
      Sets the configuration value to its default.
      After setting, the configuration file will NOT be saved automatically. To save, call ConfigurationHolder.save().
      Parameters:
      override - Whether to overwrite existing configured value
    • isDefault

      public boolean isDefault()
      Checks if the loaded configuration value matches the default value.
      Returns:
      Whether the current value is the default value
    • save

      public void save() throws Exception
      Try to save the configuration.
      To save multiple modifications, it is recommended to call ConfigurationHolder.save() after all modifications are completed instead of this.
      Throws:
      Exception - Thrown when an error occurs during saving