Class PropertyResolverUtils


  • public final class PropertyResolverUtils
    extends java.lang.Object
    • Field Summary

      Fields 
      Modifier and Type Field Description
      static java.util.NavigableSet<java.lang.String> FALSE_VALUES
      Case insensitive NavigableSet of values considered false by parseBoolean(String)
      static java.lang.String NONE_VALUE  
      static java.util.NavigableSet<java.lang.String> TRUE_VALUES
      Case insensitive NavigableSet of values considered true by parseBoolean(String)
    • Method Summary

      All Methods Static Methods Concrete Methods 
      Modifier and Type Method Description
      static java.lang.Boolean getBoolean​(java.util.Map<java.lang.String,​?> props, java.lang.String name)  
      static java.lang.Boolean getBoolean​(PropertyResolver resolver, java.lang.String name)  
      static boolean getBooleanProperty​(java.util.Map<java.lang.String,​?> props, java.lang.String name, boolean defaultValue)  
      static boolean getBooleanProperty​(PropertyResolver resolver, java.lang.String name, boolean defaultValue)  
      static java.nio.charset.Charset getCharset​(java.util.Map<java.lang.String,​?> props, java.lang.String name, java.nio.charset.Charset defaultValue)  
      static java.nio.charset.Charset getCharset​(PropertyResolver resolver, java.lang.String name, java.nio.charset.Charset defaultValue)  
      static java.lang.Integer getInteger​(java.util.Map<java.lang.String,​?> props, java.lang.String name)  
      static java.lang.Integer getInteger​(PropertyResolver resolver, java.lang.String name)  
      static int getIntProperty​(java.util.Map<java.lang.String,​?> props, java.lang.String name, int defaultValue)  
      static int getIntProperty​(PropertyResolver resolver, java.lang.String name, int defaultValue)  
      static java.lang.Long getLong​(java.util.Map<java.lang.String,​?> props, java.lang.String name)  
      static java.lang.Long getLong​(PropertyResolver resolver, java.lang.String name)  
      static long getLongProperty​(java.util.Map<java.lang.String,​?> props, java.lang.String name, long defaultValue)  
      static long getLongProperty​(PropertyResolver resolver, java.lang.String name, long defaultValue)  
      static java.lang.Object getObject​(java.util.Map<java.lang.String,​?> props, java.lang.String name)  
      static java.lang.Object getObject​(PropertyResolver resolver, java.lang.String name)  
      static java.lang.Object getObject​(PropertyResolver resolver, java.lang.String name, java.lang.Object defaultValue)  
      static java.lang.String getString​(java.util.Map<java.lang.String,​?> props, java.lang.String name)  
      static java.lang.String getString​(PropertyResolver resolver, java.lang.String name)  
      static java.lang.String getStringProperty​(java.util.Map<java.lang.String,​?> props, java.lang.String name, java.lang.String defaultValue)  
      static java.lang.String getStringProperty​(PropertyResolver resolver, java.lang.String name, java.lang.String defaultValue)  
      static boolean isNoneValue​(java.lang.String v)  
      static java.lang.Boolean parseBoolean​(java.lang.String value)
      Converts a string to a Boolean value by looking for it in either the TRUE_VALUES or FALSE_VALUES
      static java.util.Map<java.lang.String,​java.lang.Object> resolvePropertiesSource​(PropertyResolver resolver, java.lang.String name)
      Unwinds the resolvers hierarchy until found one with a non-null value for the requested property or reached top.
      static java.lang.Object resolvePropertyValue​(java.util.Map<java.lang.String,​?> props, java.lang.String name)  
      static java.lang.Object resolvePropertyValue​(PropertyResolver resolver, java.lang.String name)
      Unwinds the resolvers hierarchy until found one with a non-null value for the requested property or reached top.
      static java.lang.Boolean toBoolean​(java.lang.Object value)
      Attempts to convert the object into a Boolean value as follows:
      static boolean toBoolean​(java.lang.Object value, boolean defaultValue)  
      static java.nio.charset.Charset toCharset​(java.lang.Object value)  
      static <E extends java.lang.Enum<E>>
      E
      toEnum​(java.lang.Class<E> enumType, java.lang.Object value, boolean failIfNoMatch, java.util.Collection<E> available)
      Converts an enumerated configuration value:
      static java.lang.Integer toInteger​(java.lang.Object value)  
      static int toInteger​(java.lang.Object value, int defaultValue)  
      static java.lang.Long toLong​(java.lang.Object value)
      Converts a generic object into a Long: If the value is null then returns null. If the value is already a Long then it is returned as such. If value is a Number then its Number.longValue() is wrapped as a Long Otherwise, the value's toString() is parsed as a Long
      static long toLong​(java.lang.Object value, long defaultValue)
      Converts a generic object value to a long if possible: If value is null the default is returned If value is a Number then its Number.longValue() is returned Otherwise, the value's toString() is parsed as a long
      static PropertyResolver toPropertyResolver​(java.util.Map<java.lang.String,​?> props)
      Wraps a Map into a PropertyResolver so it can be used with these utilities
      static PropertyResolver toPropertyResolver​(java.util.Map<java.lang.String,​?> props, PropertyResolver parent)  
      static PropertyResolver toPropertyResolver​(java.util.Properties props)  
      static java.lang.Object updateProperty​(java.util.Map<java.lang.String,​java.lang.Object> props, java.lang.String name, boolean value)  
      static java.lang.Object updateProperty​(java.util.Map<java.lang.String,​java.lang.Object> props, java.lang.String name, int value)  
      static java.lang.Object updateProperty​(java.util.Map<java.lang.String,​java.lang.Object> props, java.lang.String name, long value)  
      static java.lang.Object updateProperty​(java.util.Map<java.lang.String,​java.lang.Object> props, java.lang.String name, java.lang.Object value)  
      static java.lang.Object updateProperty​(PropertyResolver resolver, java.lang.String name, boolean value)  
      static java.lang.Object updateProperty​(PropertyResolver resolver, java.lang.String name, int value)  
      static java.lang.Object updateProperty​(PropertyResolver resolver, java.lang.String name, long value)  
      static java.lang.Object updateProperty​(PropertyResolver resolver, java.lang.String name, java.lang.Object value)  
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • TRUE_VALUES

        public static final java.util.NavigableSet<java.lang.String> TRUE_VALUES
        Case insensitive NavigableSet of values considered true by parseBoolean(String)
      • FALSE_VALUES

        public static final java.util.NavigableSet<java.lang.String> FALSE_VALUES
        Case insensitive NavigableSet of values considered false by parseBoolean(String)
    • Constructor Detail

      • PropertyResolverUtils

        private PropertyResolverUtils()
    • Method Detail

      • isNoneValue

        public static boolean isNoneValue​(java.lang.String v)
        Parameters:
        v - Value to examine
        Returns:
        true if equals to "none" - case insensitive
      • getLongProperty

        public static long getLongProperty​(PropertyResolver resolver,
                                           java.lang.String name,
                                           long defaultValue)
        Parameters:
        resolver - The PropertyResolver instance - ignored if null
        name - The property name
        defaultValue - The default value to return if the specified property does not exist in the properties map
        Returns:
        The resolved property
        Throws:
        java.lang.NumberFormatException - if malformed value
        See Also:
        toLong(Object, long)
      • getLongProperty

        public static long getLongProperty​(java.util.Map<java.lang.String,​?> props,
                                           java.lang.String name,
                                           long defaultValue)
      • toLong

        public static long toLong​(java.lang.Object value,
                                  long defaultValue)
        Converts a generic object value to a long if possible:
        • If value is null the default is returned
        • If value is a Number then its Number.longValue() is returned
        • Otherwise, the value's toString() is parsed as a long
        Parameters:
        value - The resolved value - may be null
        defaultValue - The default to use if null resolved value
        Returns:
        The resolved value
        Throws:
        java.lang.NumberFormatException - if malformed value
        See Also:
        Long.parseLong(String)
      • getLong

        public static java.lang.Long getLong​(PropertyResolver resolver,
                                             java.lang.String name)
        Parameters:
        resolver - The PropertyResolver instance - ignored if null
        name - The property name
        Returns:
        The Long value or null if property not found
        Throws:
        java.lang.NumberFormatException - if malformed value
        See Also:
        toLong(Object)
      • getLong

        public static java.lang.Long getLong​(java.util.Map<java.lang.String,​?> props,
                                             java.lang.String name)
      • toLong

        public static java.lang.Long toLong​(java.lang.Object value)
        Converts a generic object into a Long:
        • If the value is null then returns null.
        • If the value is already a Long then it is returned as such.
        • If value is a Number then its Number.longValue() is wrapped as a Long
        • Otherwise, the value's toString() is parsed as a Long
        Parameters:
        value - The resolved value - may be null
        Returns:
        The Long value or null if property not found
        Throws:
        java.lang.NumberFormatException - if malformed value
        See Also:
        Long.valueOf(long), Long.valueOf(String)
      • toEnum

        public static <E extends java.lang.Enum<E>> E toEnum​(java.lang.Class<E> enumType,
                                                             java.lang.Object value,
                                                             boolean failIfNoMatch,
                                                             java.util.Collection<E> available)
        Converts an enumerated configuration value:

        • If value is null then return null
        • If value already of the expected type then simply cast and return it.
        • If value is a CharSequence then convert it to a string and look for a matching enumerated value name - case insensitive.
        • >
        Type Parameters:
        E - Type of enumerated value
        Parameters:
        enumType - The enumerated class type
        value - The configured value - ignored if null
        failIfNoMatch - Whether to fail if no matching name found
        available - The available values to compare the name
        Returns:
        The matching enumerated value - null if no match found
        Throws:
        java.lang.IllegalArgumentException - If value is neither null, nor the enumerated type nor a CharSequence
        java.util.NoSuchElementException - If no matching string name found and failIfNoMatch is true
      • updateProperty

        public static java.lang.Object updateProperty​(PropertyResolver resolver,
                                                      java.lang.String name,
                                                      long value)
      • updateProperty

        public static java.lang.Object updateProperty​(java.util.Map<java.lang.String,​java.lang.Object> props,
                                                      java.lang.String name,
                                                      long value)
      • getIntProperty

        public static int getIntProperty​(PropertyResolver resolver,
                                         java.lang.String name,
                                         int defaultValue)
      • getIntProperty

        public static int getIntProperty​(java.util.Map<java.lang.String,​?> props,
                                         java.lang.String name,
                                         int defaultValue)
      • toInteger

        public static int toInteger​(java.lang.Object value,
                                    int defaultValue)
      • getInteger

        public static java.lang.Integer getInteger​(PropertyResolver resolver,
                                                   java.lang.String name)
      • getInteger

        public static java.lang.Integer getInteger​(java.util.Map<java.lang.String,​?> props,
                                                   java.lang.String name)
      • toInteger

        public static java.lang.Integer toInteger​(java.lang.Object value)
      • updateProperty

        public static java.lang.Object updateProperty​(PropertyResolver resolver,
                                                      java.lang.String name,
                                                      int value)
      • updateProperty

        public static java.lang.Object updateProperty​(java.util.Map<java.lang.String,​java.lang.Object> props,
                                                      java.lang.String name,
                                                      int value)
      • getBooleanProperty

        public static boolean getBooleanProperty​(PropertyResolver resolver,
                                                 java.lang.String name,
                                                 boolean defaultValue)
      • getBooleanProperty

        public static boolean getBooleanProperty​(java.util.Map<java.lang.String,​?> props,
                                                 java.lang.String name,
                                                 boolean defaultValue)
      • toBoolean

        public static boolean toBoolean​(java.lang.Object value,
                                        boolean defaultValue)
        Parameters:
        value - The value to convert
        defaultValue - The default value to return if value is null or and empty string, then returns the default value.
        Returns:
        The resolved value
        See Also:
        toBoolean(Object)
      • getBoolean

        public static java.lang.Boolean getBoolean​(PropertyResolver resolver,
                                                   java.lang.String name)
      • getBoolean

        public static java.lang.Boolean getBoolean​(java.util.Map<java.lang.String,​?> props,
                                                   java.lang.String name)
      • toBoolean

        public static java.lang.Boolean toBoolean​(java.lang.Object value)

        Attempts to convert the object into a Boolean value as follows:


        • If null or an empty string then return null.
        • If already a Boolean then return as-is
        • If a CharSequence then invoke parseBoolean(String)
        • Otherwise, throws an UnsupportedOperationException
        Parameters:
        value - The value to be converted
        Returns:
        The result - null if null or an empty string
        Throws:
        java.lang.UnsupportedOperationException - If value cannot be converted to a boolean - e.g., a number.
        See Also:
        parseBoolean(String)
      • parseBoolean

        public static java.lang.Boolean parseBoolean​(java.lang.String value)
        Converts a string to a Boolean value by looking for it in either the TRUE_VALUES or FALSE_VALUES
        Parameters:
        value - The value to parse
        Returns:
        The result - null if value is null/empty
        Throws:
        java.lang.IllegalArgumentException - If non-empty string that does not match (case insensitive) either of the known values for boolean.
      • updateProperty

        public static java.lang.Object updateProperty​(PropertyResolver resolver,
                                                      java.lang.String name,
                                                      boolean value)
      • updateProperty

        public static java.lang.Object updateProperty​(java.util.Map<java.lang.String,​java.lang.Object> props,
                                                      java.lang.String name,
                                                      boolean value)
      • getStringProperty

        public static java.lang.String getStringProperty​(PropertyResolver resolver,
                                                         java.lang.String name,
                                                         java.lang.String defaultValue)
        Parameters:
        resolver - The PropertyResolver to use - ignored if null
        name - The property name
        defaultValue - The default value to return if property not set or empty
        Returns:
        The set value (if not null/empty) or default one
      • getStringProperty

        public static java.lang.String getStringProperty​(java.util.Map<java.lang.String,​?> props,
                                                         java.lang.String name,
                                                         java.lang.String defaultValue)
      • getCharset

        public static java.nio.charset.Charset getCharset​(PropertyResolver resolver,
                                                          java.lang.String name,
                                                          java.nio.charset.Charset defaultValue)
      • getCharset

        public static java.nio.charset.Charset getCharset​(java.util.Map<java.lang.String,​?> props,
                                                          java.lang.String name,
                                                          java.nio.charset.Charset defaultValue)
      • toCharset

        public static java.nio.charset.Charset toCharset​(java.lang.Object value)
      • getString

        public static java.lang.String getString​(PropertyResolver resolver,
                                                 java.lang.String name)
      • getString

        public static java.lang.String getString​(java.util.Map<java.lang.String,​?> props,
                                                 java.lang.String name)
      • getObject

        public static java.lang.Object getObject​(PropertyResolver resolver,
                                                 java.lang.String name)
      • getObject

        public static java.lang.Object getObject​(PropertyResolver resolver,
                                                 java.lang.String name,
                                                 java.lang.Object defaultValue)
      • getObject

        public static java.lang.Object getObject​(java.util.Map<java.lang.String,​?> props,
                                                 java.lang.String name)
      • resolvePropertyValue

        public static java.lang.Object resolvePropertyValue​(java.util.Map<java.lang.String,​?> props,
                                                            java.lang.String name)
      • updateProperty

        public static java.lang.Object updateProperty​(PropertyResolver resolver,
                                                      java.lang.String name,
                                                      java.lang.Object value)
        Parameters:
        resolver - The PropertyResolver instance
        name - The property name
        value - The new value - if null or an empty CharSequence the property is removed
        Returns:
        The previous value - null if none
      • updateProperty

        public static java.lang.Object updateProperty​(java.util.Map<java.lang.String,​java.lang.Object> props,
                                                      java.lang.String name,
                                                      java.lang.Object value)
      • resolvePropertyValue

        public static java.lang.Object resolvePropertyValue​(PropertyResolver resolver,
                                                            java.lang.String name)
        Unwinds the resolvers hierarchy until found one with a non-null value for the requested property or reached top. If still no value found and the key starts with "org.apache.sshd" then the system properties are also consulted
        Parameters:
        resolver - The PropertyResolver to start from - ignored if null
        name - The requested property name
        Returns:
        The found value or null
      • resolvePropertiesSource

        public static java.util.Map<java.lang.String,​java.lang.Object> resolvePropertiesSource​(PropertyResolver resolver,
                                                                                                     java.lang.String name)
        Unwinds the resolvers hierarchy until found one with a non-null value for the requested property or reached top.
        Parameters:
        resolver - The PropertyResolver to start from - ignored if null
        name - The requested property name
        Returns:
        The found properties Map or null
      • toPropertyResolver

        public static PropertyResolver toPropertyResolver​(java.util.Properties props)
      • toPropertyResolver

        public static PropertyResolver toPropertyResolver​(java.util.Map<java.lang.String,​?> props)
        Wraps a Map into a PropertyResolver so it can be used with these utilities
        Parameters:
        props - The properties map - may be null/empty if no properties are updated
        Returns:
        The resolver wrapper