Class Configuration


  • public class Configuration
    extends java.lang.Object

    Stores runtime configuration information for application parameters that may vary on restarting. This implements the Singleton pattern, but through static methods. That is, the first time Configuration is used, the properties are loaded into the Singleton instance. Subsequent calls to valueFor() retrieve values from the Singleton. To look up a property, use valueFor(String).

    Properties may be overridden using a second properties file, or individually using System properties specified on the command line. To override using a second properties file, specify the System property xr-conf. This should be the location of the second file relative to the CLASSPATH, or else a file path, e.g.

    java -Dxr-conf=resources/conf/myprops.conf

    You can also place your override properties file in your user home directory, in

    ${user.home}/.flyingsaucer/local.xhtmlrenderer.conf

    To override a property using the System properties, just re-define the property on the command line. e.g.

    java -Dxr.property-name=new_value

    The order in which these will be read is: default properties (bundled with the core, in the jar; override configuration properties; properties file in user.home; and system properties.

    You can override as many properties as you like.

    Note that overrides are driven by the property names in the default configuration file. Specifying a property name not in that file will have no effect--the property will not be loaded or available for lookup. Configuration is NOT used to control logging levels or output; see LogStartupConfig.

    There are convenience converstion method for all the primitive types, in methods like valueAsInt(String, int). A default must always be provided for these methods. The default is returned if the value is not found, or if the conversion from String fails. If the value is not present, or the conversion fails, a warning message is written to the log.

    Author:
    Patrick Wright
    • Method Summary

      All Methods Static Methods Concrete Methods 
      Modifier and Type Method Description
      static boolean hasValue​(java.lang.String key)  
      static boolean isFalse​(java.lang.String key, boolean defaultVal)
      Returns true if the value is not "true" (ignores case), or the default provided value if not found or if the value is not a valid boolean (true or false, ignores case).
      static boolean isTrue​(java.lang.String key, boolean defaultVal)
      Returns true if the value is "true" (ignores case), or the default provided value if not found or if the value is not a valid boolean (true or false, ignores case).
      static java.util.Iterator keysByPrefix​(java.lang.String prefix)
      Returns all configuration keys that start with prefix.
      static void main​(java.lang.String[] args)
      Command-line execution for testing.
      static void setConfigLogger​(java.util.logging.Logger logger)
      Sets the logger which we use for Configuration-related logging.
      static int valueAsByte​(java.lang.String key, byte defaultVal)
      Returns the value for key in the Configuration as a byte, or the default provided value if not found or if the value is not a valid byte.
      static double valueAsDouble​(java.lang.String key, double defaultVal)
      Returns the value for key in the Configuration as a double, or the default provided value if not found or if the value is not a valid double.
      static float valueAsFloat​(java.lang.String key, float defaultVal)
      Returns the value for key in the Configuration as a float, or the default provided value if not found or if the value is not a valid float.
      static int valueAsInt​(java.lang.String key, int defaultVal)
      Returns the value for key in the Configuration as an integer, or a default value if not found or if the value is not a valid integer.
      static long valueAsLong​(java.lang.String key, long defaultVal)
      Returns the value for key in the Configurationas a long, or the default provided value if not found or if the value is not a valid long.
      static int valueAsShort​(java.lang.String key, short defaultVal)
      Returns the value for key in the Configuration as a short, or the default provided value if not found or if the value is not a valid short.
      static java.lang.String valueFor​(java.lang.String key)
      Returns the value for key in the Configuration.
      static java.lang.String valueFor​(java.lang.String key, java.lang.String defaultVal)
      Returns the value for key in the Configuration, or the default provided value if not found.
      static java.lang.Object valueFromClassConstant​(java.lang.String key, java.lang.Object defaultValue)
      Given a property, resolves the value to a public constant field on some class, where the field is of type Object.
      • Methods inherited from class java.lang.Object

        equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Method Detail

      • setConfigLogger

        public static void setConfigLogger​(java.util.logging.Logger logger)
        Sets the logger which we use for Configuration-related logging. Before this is called the first time, all internal log records are queued up; they are flushed to the logger when this method is first called. Afterwards, all log events are written to this logger. This queueing behavior helps avoid order-of-operations bugs related to loading configuration information related to logging.
        Parameters:
        logger - Logger used for Configuration-related messages
      • valueFor

        public static java.lang.String valueFor​(java.lang.String key)
        Returns the value for key in the Configuration. A warning is issued to the log if the property is not defined.
        Parameters:
        key - Name of the property.
        Returns:
        Value assigned to the key, as a String.
      • hasValue

        public static boolean hasValue​(java.lang.String key)
      • valueAsByte

        public static int valueAsByte​(java.lang.String key,
                                      byte defaultVal)
        Returns the value for key in the Configuration as a byte, or the default provided value if not found or if the value is not a valid byte. A warning is issued to the log if the property is not defined, or if the conversion from String fails.
        Parameters:
        key - Name of the property.
        defaultVal - PARAM
        Returns:
        Value assigned to the key, as a String.
      • valueAsShort

        public static int valueAsShort​(java.lang.String key,
                                       short defaultVal)
        Returns the value for key in the Configuration as a short, or the default provided value if not found or if the value is not a valid short. A warning is issued to the log if the property is not defined, or if the conversion from String fails.
        Parameters:
        key - Name of the property.
        defaultVal - PARAM
        Returns:
        Value assigned to the key, as a String.
      • valueAsInt

        public static int valueAsInt​(java.lang.String key,
                                     int defaultVal)
        Returns the value for key in the Configuration as an integer, or a default value if not found or if the value is not a valid integer. A warning is issued to the log if the property is not defined, or if the conversion from String fails.
        Parameters:
        key - Name of the property.
        defaultVal - PARAM
        Returns:
        Value assigned to the key, as a String.
      • valueAsLong

        public static long valueAsLong​(java.lang.String key,
                                       long defaultVal)
        Returns the value for key in the Configurationas a long, or the default provided value if not found or if the value is not a valid long. A warning is issued to the log if the property is not defined, or if the conversion from String fails.
        Parameters:
        key - Name of the property.
        defaultVal - PARAM
        Returns:
        Value assigned to the key, as a String.
      • valueAsFloat

        public static float valueAsFloat​(java.lang.String key,
                                         float defaultVal)
        Returns the value for key in the Configuration as a float, or the default provided value if not found or if the value is not a valid float. A warning is issued to the log if the property is not defined, or if the conversion from String fails.
        Parameters:
        key - Name of the property.
        defaultVal - PARAM
        Returns:
        Value assigned to the key, as a String.
      • valueAsDouble

        public static double valueAsDouble​(java.lang.String key,
                                           double defaultVal)
        Returns the value for key in the Configuration as a double, or the default provided value if not found or if the value is not a valid double. A warning is issued to the log if the property is not defined, or if the conversion from String fails.
        Parameters:
        key - Name of the property.
        defaultVal - PARAM
        Returns:
        Value assigned to the key, as a String.
      • valueFor

        public static java.lang.String valueFor​(java.lang.String key,
                                                java.lang.String defaultVal)
        Returns the value for key in the Configuration, or the default provided value if not found. A warning is issued to the log if the property is not defined, and if the default is null.
        Parameters:
        key - Name of the property.
        defaultVal - PARAM
        Returns:
        Value assigned to the key, as a String.
      • keysByPrefix

        public static java.util.Iterator keysByPrefix​(java.lang.String prefix)
        Returns all configuration keys that start with prefix. Iterator will be empty if no such keys are found.
        Parameters:
        prefix - Prefix to filter on. No regex.
        Returns:
        Returns Iterator, see description.
      • main

        public static void main​(java.lang.String[] args)
        Command-line execution for testing. No arguments.
        Parameters:
        args - Ignored
      • isTrue

        public static boolean isTrue​(java.lang.String key,
                                     boolean defaultVal)
        Returns true if the value is "true" (ignores case), or the default provided value if not found or if the value is not a valid boolean (true or false, ignores case). A warning is issued to the log if the property is not defined, and if the default is null.
        Parameters:
        key - Name of the property.
        defaultVal - PARAM
        Returns:
        Value assigned to the key, as a String.
      • isFalse

        public static boolean isFalse​(java.lang.String key,
                                      boolean defaultVal)
        Returns true if the value is not "true" (ignores case), or the default provided value if not found or if the value is not a valid boolean (true or false, ignores case). A warning is issued to the log if the property is not defined, or the value is not a valid boolean.
        Parameters:
        key - Name of the property.
        defaultVal - PARAM
        Returns:
        Value assigned to the key, as a String.
      • valueFromClassConstant

        public static java.lang.Object valueFromClassConstant​(java.lang.String key,
                                                              java.lang.Object defaultValue)
        Given a property, resolves the value to a public constant field on some class, where the field is of type Object. The property value must the the FQN of the class and field, e.g. aKey=java.awt.RenderingHints.VALUE_INTERPOLATION_NEAREST_NEIGHBOR will return the value of the VALUE_INTERPOLATION_NEAREST_NEIGHBOR constant on the RendingHints class.
        Parameters:
        key - Name of the property
        defaultValue - Returned in case of error.
        Returns:
        Value of the constant, or defaultValue in case of error.