Class RioConfig

  • All Implemented Interfaces:
    java.io.Serializable
    Direct Known Subclasses:
    ParserConfig, WriterConfig

    public class RioConfig
    extends java.lang.Object
    implements java.io.Serializable
    Superclass for ParserConfig and WriterConfig.

    A RioConfig is a container for several RioSetting objects, each of which has a default value. You can override the default value for a RioSetting in one of two ways:

    1. You can programmatically set its value using set(RioSetting, Object)
    2. You can set a Java system property (e.g. by means of a -D jvm command line switch). The property name should corresponds to the key of the setting. Note that this method is not supported by every type of RioSetting: boolean values, strings, and numeric (long) values are supported, but more complex types are not
    See Also:
    RioSetting, Serialized Form
    • Field Summary

      Fields 
      Modifier and Type Field Description
      protected org.slf4j.Logger log  
      private static long serialVersionUID  
      protected java.util.concurrent.ConcurrentMap<RioSetting<java.lang.Object>,​java.lang.Object> settings
      A map containing mappings from settings to their values.
      protected java.util.concurrent.ConcurrentMap<RioSetting<java.lang.Object>,​java.lang.Object> systemPropertyCache
      A map containing mappings from settings to system properties that have been discovered since the last call to useDefaults().
    • Constructor Summary

      Constructors 
      Constructor Description
      RioConfig()  
    • Field Detail

      • settings

        protected final java.util.concurrent.ConcurrentMap<RioSetting<java.lang.Object>,​java.lang.Object> settings
        A map containing mappings from settings to their values.
      • systemPropertyCache

        protected final java.util.concurrent.ConcurrentMap<RioSetting<java.lang.Object>,​java.lang.Object> systemPropertyCache
        A map containing mappings from settings to system properties that have been discovered since the last call to useDefaults().
      • log

        protected final org.slf4j.Logger log
    • Constructor Detail

      • RioConfig

        public RioConfig()
    • Method Detail

      • get

        public <T> T get​(RioSetting<T> setting)
        Return the value for a given RioSetting or the default value if it has not been set.
        Parameters:
        setting - The RioSetting to fetch a value for.
        Returns:
        The value for the parser setting, or the default value if it is not set.
      • set

        public <T> RioConfig set​(RioSetting<T> setting,
                                 T value)
        Sets a RioSetting to have a new value. If the value is null, the parser setting is removed and the default will be used instead.
        Parameters:
        setting - The setting to set a new value for.
        value - The value for the parser setting, or null to reset the parser setting to use the default value.
        Returns:
        Either a copy of this config, if it is immutable, or this object, to allow chaining of method calls.
      • isSet

        public <T> boolean isSet​(RioSetting<T> setting)
        Checks for whether a RioSetting has been explicitly set by a user.

        A setting can be set via set(RioSetting, Object), or via use of a system property.

        Parameters:
        setting - The setting to check for.
        Returns:
        True if the setting has been explicitly set, or false otherwise.
      • hasSystemPropertyOverride

        private boolean hasSystemPropertyOverride​(RioSetting<?> setting)
      • useDefaults

        public RioConfig useDefaults()
        Resets all settings back to their default values.
        Returns:
        Either a copy of this config, if it is immutable, or this object, to allow chaining of method calls.