Interface ConfigFilter

  • All Known Implementing Classes:
    EncryptionFilter, EncryptionFilterService
    Functional Interface:
    This is a functional interface and can therefore be used as the assignment target for a lambda expression or method reference.

    @FunctionalInterface
    public interface ConfigFilter
    Filter that can transform elementary configuration (String) values before they are returned via the Config API.

    The application can register filters with a builder by invoking Config.Builder.addFilter(ConfigFilter) or Config.Builder.addFilter(java.util.function.Function). The config system also locates filters using the Java ServiceLoader mechanism and automatically adds them to every Builder unless the application disables this feature for a given Builder by invoking Config.Builder.disableFilterServices().

    A filter can specify a Priority. If no priority is explicitly assigned, the value of 100 is assumed.

    Initializing Filters

    Any filter that uses the Config instance during its initialization should do so in its init(Config) method, not in its constructor. The Config.Builder.build() method invokes each filter's `init` method according to the filters' priority order and just before returning the new Config instance to the application.

    If a filter's init method uses Config#get to retrieve config information, then -- as always -- the config system will invoke the apply method on every filter which the application added to the builder. But the init methods of filters with lower priority than the current filter will not have executed. Developers should keep this in mind while writing filter init methods.

    See Also:
    Config.Builder.addFilter(ConfigFilter), Config.Builder.addFilter(java.util.function.Function)
    • Field Summary

      Fields 
      Modifier and Type Field Description
      static int PRIORITY
      Default priority of the filter if registered by Config.Builder automatically.
    • Method Summary

      All Methods Instance Methods Abstract Methods Default Methods 
      Modifier and Type Method Description
      String apply​(Config.Key key, String stringValue)
      Filters an elementary config value before it is made available to the application via the Config API.
      default void init​(Config config)
      Initializes the filter using the Config instance which the filter will affect once Config.Builder.build completes.
    • Method Detail

      • apply

        String apply​(Config.Key key,
                     String stringValue)
        Filters an elementary config value before it is made available to the application via the Config API.
        Parameters:
        key - configuration key associated with the Config node
        stringValue - original value to be filtered, never null
        Returns:
        original value or filtered (changed) value, never null
      • init

        default void init​(Config config)
        Initializes the filter using the Config instance which the filter will affect once Config.Builder.build completes.

        The config system propagates any thrown exception to the application so its invocation of Config.Builder#build fails.

        Parameters:
        config - Config instance under construction