Class Constants

java.lang.Object
org.springframework.core.Constants

public class Constants extends Object
This class can be used to parse other classes containing constant definitions in public static final members. The asXXXX methods of this class allow these constant values to be accessed via their string names.

Consider class Foo containing public final static int CONSTANT1 = 66; An instance of this class wrapping Foo.class will return the constant value of 66 from its asNumber method given the argument "CONSTANT1".

This class is ideal for use in PropertyEditors, enabling them to recognize the same names as the constants themselves, and freeing them from maintaining their own mapping.

Since:
16.03.2003
Author:
Rod Johnson, Juergen Hoeller
  • Constructor Details

    • Constants

      public Constants(Class<?> clazz)
      Create a new Constants converter class wrapping the given class.

      All public static final variables will be exposed, whatever their type.

      Parameters:
      clazz - the class to analyze
      Throws:
      IllegalArgumentException - if the supplied clazz is null
  • Method Details

    • getClassName

      public final String getClassName()
      Return the name of the analyzed class.
    • getSize

      public final int getSize()
      Return the number of constants exposed.
    • getFieldCache

      protected final Map<String,Object> getFieldCache()
      Exposes the field cache to subclasses: a Map from String field name to object value.
    • asNumber

      public Number asNumber(String code) throws Constants.ConstantException
      Return a constant value cast to a Number.
      Parameters:
      code - the name of the field (never null)
      Returns:
      the Number value
      Throws:
      Constants.ConstantException - if the field name wasn't found or if the type wasn't compatible with Number
      See Also:
    • asString

      public String asString(String code) throws Constants.ConstantException
      Return a constant value as a String.
      Parameters:
      code - the name of the field (never null)
      Returns:
      the String value Works even if it's not a string (invokes toString()).
      Throws:
      Constants.ConstantException - if the field name wasn't found
      See Also:
    • asObject

      public Object asObject(String code) throws Constants.ConstantException
      Parse the given String (upper or lower case accepted) and return the appropriate value if it's the name of a constant field in the class that we're analysing.
      Parameters:
      code - the name of the field (never null)
      Returns:
      the Object value
      Throws:
      Constants.ConstantException - if there's no such field
    • getNames

      public Set<String> getNames(@Nullable String namePrefix)
      Return all names of the given group of constants.

      Note that this method assumes that constants are named in accordance with the standard Java convention for constant values (i.e. all uppercase). The supplied namePrefix will be uppercased (in a locale-insensitive fashion) prior to the main logic of this method kicking in.

      Parameters:
      namePrefix - prefix of the constant names to search (may be null)
      Returns:
      the set of constant names
    • getNamesForProperty

      public Set<String> getNamesForProperty(String propertyName)
      Return all names of the group of constants for the given bean property name.
      Parameters:
      propertyName - the name of the bean property
      Returns:
      the set of values
      See Also:
    • getNamesForSuffix

      public Set<String> getNamesForSuffix(@Nullable String nameSuffix)
      Return all names of the given group of constants.

      Note that this method assumes that constants are named in accordance with the standard Java convention for constant values (i.e. all uppercase). The supplied nameSuffix will be uppercased (in a locale-insensitive fashion) prior to the main logic of this method kicking in.

      Parameters:
      nameSuffix - suffix of the constant names to search (may be null)
      Returns:
      the set of constant names
    • getValues

      public Set<Object> getValues(@Nullable String namePrefix)
      Return all values of the given group of constants.

      Note that this method assumes that constants are named in accordance with the standard Java convention for constant values (i.e. all uppercase). The supplied namePrefix will be uppercased (in a locale-insensitive fashion) prior to the main logic of this method kicking in.

      Parameters:
      namePrefix - prefix of the constant names to search (may be null)
      Returns:
      the set of values
    • getValuesForProperty

      public Set<Object> getValuesForProperty(String propertyName)
      Return all values of the group of constants for the given bean property name.
      Parameters:
      propertyName - the name of the bean property
      Returns:
      the set of values
      See Also:
    • getValuesForSuffix

      public Set<Object> getValuesForSuffix(@Nullable String nameSuffix)
      Return all values of the given group of constants.

      Note that this method assumes that constants are named in accordance with the standard Java convention for constant values (i.e. all uppercase). The supplied nameSuffix will be uppercased (in a locale-insensitive fashion) prior to the main logic of this method kicking in.

      Parameters:
      nameSuffix - suffix of the constant names to search (may be null)
      Returns:
      the set of values
    • toCode

      public String toCode(Object value, @Nullable String namePrefix) throws Constants.ConstantException
      Look up the given value within the given group of constants.

      Will return the first match.

      Parameters:
      value - constant value to look up
      namePrefix - prefix of the constant names to search (may be null)
      Returns:
      the name of the constant field
      Throws:
      Constants.ConstantException - if the value wasn't found
    • toCodeForProperty

      public String toCodeForProperty(Object value, String propertyName) throws Constants.ConstantException
      Look up the given value within the group of constants for the given bean property name. Will return the first match.
      Parameters:
      value - constant value to look up
      propertyName - the name of the bean property
      Returns:
      the name of the constant field
      Throws:
      Constants.ConstantException - if the value wasn't found
      See Also:
    • toCodeForSuffix

      public String toCodeForSuffix(Object value, @Nullable String nameSuffix) throws Constants.ConstantException
      Look up the given value within the given group of constants.

      Will return the first match.

      Parameters:
      value - constant value to look up
      nameSuffix - suffix of the constant names to search (may be null)
      Returns:
      the name of the constant field
      Throws:
      Constants.ConstantException - if the value wasn't found
    • propertyToConstantNamePrefix

      public String propertyToConstantNamePrefix(String propertyName)
      Convert the given bean property name to a constant name prefix.

      Uses a common naming idiom: turning all lower case characters to upper case, and prepending upper case characters with an underscore.

      Example: "imageSize" → "IMAGE_SIZE"
      Example: "imagesize" → "IMAGESIZE".
      Example: "ImageSize" → "_IMAGE_SIZE".
      Example: "IMAGESIZE" → "_I_M_A_G_E_S_I_Z_E"

      Parameters:
      propertyName - the name of the bean property
      Returns:
      the corresponding constant name prefix
      See Also: