Class LocaleBeanUtilsBean

java.lang.Object
org.apache.commons.beanutils.BeanUtilsBean
org.apache.commons.beanutils.locale.LocaleBeanUtilsBean

public class LocaleBeanUtilsBean extends BeanUtilsBean

Utility methods for populating JavaBeans properties via reflection in a locale-dependent manner.

Since:
1.7
Version:
$Id$
  • Field Details

    • LOCALE_BEANS_BY_CLASSLOADER

      private static final ContextClassLoaderLocal<LocaleBeanUtilsBean> LOCALE_BEANS_BY_CLASSLOADER
      Contains LocaleBeanUtilsBean instances indexed by context classloader.
    • log

      private final org.apache.commons.logging.Log log
      All logging goes through this logger
    • localeConvertUtils

      private final LocaleConvertUtilsBean localeConvertUtils
      Convertor used by this class
  • Constructor Details

    • LocaleBeanUtilsBean

      public LocaleBeanUtilsBean()
      Construct instance with standard conversion bean
    • LocaleBeanUtilsBean

      public LocaleBeanUtilsBean(LocaleConvertUtilsBean localeConvertUtils, ConvertUtilsBean convertUtilsBean, PropertyUtilsBean propertyUtilsBean)
      Construct instance that uses given locale conversion
      Parameters:
      localeConvertUtils - use this localeConvertUtils to perform conversions
      convertUtilsBean - use this for standard conversions
      propertyUtilsBean - use this for property conversions
    • LocaleBeanUtilsBean

      public LocaleBeanUtilsBean(LocaleConvertUtilsBean localeConvertUtils)
      Construct instance that uses given locale conversion
      Parameters:
      localeConvertUtils - use this localeConvertUtils to perform conversions
  • Method Details

    • getLocaleBeanUtilsInstance

      public static LocaleBeanUtilsBean getLocaleBeanUtilsInstance()
      Gets singleton instance
      Returns:
      the singleton instance
    • setInstance

      public static void setInstance(LocaleBeanUtilsBean newInstance)
      Sets the instance which provides the functionality for LocaleBeanUtils. This is a pseudo-singleton - an single instance is provided per (thread) context classloader. This mechanism provides isolation for web apps deployed in the same container.
      Parameters:
      newInstance - a new singleton instance
    • getLocaleConvertUtils

      public LocaleConvertUtilsBean getLocaleConvertUtils()
      Gets the bean instance used for conversions
      Returns:
      the locale converter bean instance
    • getDefaultLocale

      public Locale getDefaultLocale()
      Gets the default Locale
      Returns:
      the default locale
    • setDefaultLocale

      public void setDefaultLocale(Locale locale)
      Sets the default Locale.
      Parameters:
      locale - the default locale
    • getApplyLocalized

      public boolean getApplyLocalized()
      Is the pattern to be applied localized (Indicate whether the pattern is localized or not)
      Returns:
      true if pattern is localized, otherwise false
    • setApplyLocalized

      public void setApplyLocalized(boolean newApplyLocalized)
      Sets whether the pattern is applied localized (Indicate whether the pattern is localized or not)
      Parameters:
      newApplyLocalized - true if pattern is localized, otherwise false
    • getIndexedProperty

      public String getIndexedProperty(Object bean, String name, String pattern) throws IllegalAccessException, InvocationTargetException, NoSuchMethodException
      Return the value of the specified locale-sensitive indexed property of the specified bean, as a String. The zero-relative index of the required value must be included (in square brackets) as a suffix to the property name, or IllegalArgumentException will be thrown.
      Parameters:
      bean - Bean whose property is to be extracted
      name - propertyname[index] of the property value to be extracted
      pattern - The conversion pattern
      Returns:
      The indexed property's value, converted to a String
      Throws:
      IllegalAccessException - if the caller does not have access to the property accessor method
      InvocationTargetException - if the property accessor method throws an exception
      NoSuchMethodException - if an accessor method for this propety cannot be found
    • getIndexedProperty

      Return the value of the specified locale-sensitive indexed property of the specified bean, as a String using the default conversion pattern of the corresponding LocaleConverter. The zero-relative index of the required value must be included (in square brackets) as a suffix to the property name, or IllegalArgumentException will be thrown.
      Overrides:
      getIndexedProperty in class BeanUtilsBean
      Parameters:
      bean - Bean whose property is to be extracted
      name - propertyname[index] of the property value to be extracted
      Returns:
      The indexed property's value, converted to a String
      Throws:
      IllegalAccessException - if the caller does not have access to the property accessor method
      InvocationTargetException - if the property accessor method throws an exception
      NoSuchMethodException - if an accessor method for this propety cannot be found
    • getIndexedProperty

      public String getIndexedProperty(Object bean, String name, int index, String pattern) throws IllegalAccessException, InvocationTargetException, NoSuchMethodException
      Return the value of the specified locale-sensetive indexed property of the specified bean, as a String using the specified conversion pattern. The index is specified as a method parameter and must *not* be included in the property name expression
      Parameters:
      bean - Bean whose property is to be extracted
      name - Simple property name of the property value to be extracted
      index - Index of the property value to be extracted
      pattern - The conversion pattern
      Returns:
      The indexed property's value, converted to a String
      Throws:
      IllegalAccessException - if the caller does not have access to the property accessor method
      InvocationTargetException - if the property accessor method throws an exception
      NoSuchMethodException - if an accessor method for this propety cannot be found
    • getIndexedProperty

      public String getIndexedProperty(Object bean, String name, int index) throws IllegalAccessException, InvocationTargetException, NoSuchMethodException
      Return the value of the specified locale-sensetive indexed property of the specified bean, as a String using the default conversion pattern of the corresponding LocaleConverter. The index is specified as a method parameter and must *not* be included in the property name expression
      Overrides:
      getIndexedProperty in class BeanUtilsBean
      Parameters:
      bean - Bean whose property is to be extracted
      name - Simple property name of the property value to be extracted
      index - Index of the property value to be extracted
      Returns:
      The indexed property's value, converted to a String
      Throws:
      IllegalAccessException - if the caller does not have access to the property accessor method
      InvocationTargetException - if the property accessor method throws an exception
      NoSuchMethodException - if an accessor method for this propety cannot be found
    • getSimpleProperty

      public String getSimpleProperty(Object bean, String name, String pattern) throws IllegalAccessException, InvocationTargetException, NoSuchMethodException
      Return the value of the specified simple locale-sensitive property of the specified bean, converted to a String using the specified conversion pattern.
      Parameters:
      bean - Bean whose property is to be extracted
      name - Name of the property to be extracted
      pattern - The conversion pattern
      Returns:
      The property's value, converted to a String
      Throws:
      IllegalAccessException - if the caller does not have access to the property accessor method
      InvocationTargetException - if the property accessor method throws an exception
      NoSuchMethodException - if an accessor method for this property cannot be found
    • getSimpleProperty

      Return the value of the specified simple locale-sensitive property of the specified bean, converted to a String using the default conversion pattern of the corresponding LocaleConverter.
      Overrides:
      getSimpleProperty in class BeanUtilsBean
      Parameters:
      bean - Bean whose property is to be extracted
      name - Name of the property to be extracted
      Returns:
      The property's value, converted to a String
      Throws:
      IllegalAccessException - if the caller does not have access to the property accessor method
      InvocationTargetException - if the property accessor method throws an exception
      NoSuchMethodException - if an accessor method for this property cannot be found
    • getMappedProperty

      public String getMappedProperty(Object bean, String name, String key, String pattern) throws IllegalAccessException, InvocationTargetException, NoSuchMethodException
      Return the value of the specified mapped locale-sensitive property of the specified bean, as a String using the specified conversion pattern. The key is specified as a method parameter and must *not* be included in the property name expression.
      Parameters:
      bean - Bean whose property is to be extracted
      name - Simple property name of the property value to be extracted
      key - Lookup key of the property value to be extracted
      pattern - The conversion pattern
      Returns:
      The mapped property's value, converted to a String
      Throws:
      IllegalAccessException - if the caller does not have access to the property accessor method
      InvocationTargetException - if the property accessor method throws an exception
      NoSuchMethodException - if an accessor method for this property cannot be found
    • getMappedProperty

      public String getMappedProperty(Object bean, String name, String key) throws IllegalAccessException, InvocationTargetException, NoSuchMethodException
      Return the value of the specified mapped locale-sensitive property of the specified bean, as a String The key is specified as a method parameter and must *not* be included in the property name expression
      Overrides:
      getMappedProperty in class BeanUtilsBean
      Parameters:
      bean - Bean whose property is to be extracted
      name - Simple property name of the property value to be extracted
      key - Lookup key of the property value to be extracted
      Returns:
      The mapped property's value, converted to a String
      Throws:
      IllegalAccessException - if the caller does not have access to the property accessor method
      InvocationTargetException - if the property accessor method throws an exception
      NoSuchMethodException - if an accessor method for this property cannot be found
    • getMappedPropertyLocale

      public String getMappedPropertyLocale(Object bean, String name, String pattern) throws IllegalAccessException, InvocationTargetException, NoSuchMethodException
      Return the value of the specified locale-sensitive mapped property of the specified bean, as a String using the specified pattern. The String-valued key of the required value must be included (in parentheses) as a suffix to the property name, or IllegalArgumentException will be thrown.
      Parameters:
      bean - Bean whose property is to be extracted
      name - propertyname(index) of the property value to be extracted
      pattern - The conversion pattern
      Returns:
      The mapped property's value, converted to a String
      Throws:
      IllegalAccessException - if the caller does not have access to the property accessor method
      InvocationTargetException - if the property accessor method throws an exception
      NoSuchMethodException - if an accessor method for this property cannot be found
    • getMappedProperty

      Return the value of the specified locale-sensitive mapped property of the specified bean, as a String using the default conversion pattern of the corresponding LocaleConverter. The String-valued key of the required value must be included (in parentheses) as a suffix to the property name, or IllegalArgumentException will be thrown.
      Overrides:
      getMappedProperty in class BeanUtilsBean
      Parameters:
      bean - Bean whose property is to be extracted
      name - propertyname(index) of the property value to be extracted
      Returns:
      The mapped property's value, converted to a String
      Throws:
      IllegalAccessException - if the caller does not have access to the property accessor method
      InvocationTargetException - if the property accessor method throws an exception
      NoSuchMethodException - if an accessor method for this property cannot be found
    • getNestedProperty

      public String getNestedProperty(Object bean, String name, String pattern) throws IllegalAccessException, InvocationTargetException, NoSuchMethodException
      Return the value of the (possibly nested) locale-sensitive property of the specified name, for the specified bean, as a String using the specified pattern.
      Parameters:
      bean - Bean whose property is to be extracted
      name - Possibly nested name of the property to be extracted
      pattern - The conversion pattern
      Returns:
      The nested property's value, converted to a String
      Throws:
      IllegalAccessException - if the caller does not have access to the property accessor method
      IllegalArgumentException - if a nested reference to a property returns null
      InvocationTargetException - if the property accessor method throws an exception
      NoSuchMethodException - if an accessor method for this property cannot be found
    • getNestedProperty

      Return the value of the (possibly nested) locale-sensitive property of the specified name, for the specified bean, as a String using the default conversion pattern of the corresponding LocaleConverter.
      Overrides:
      getNestedProperty in class BeanUtilsBean
      Parameters:
      bean - Bean whose property is to be extracted
      name - Possibly nested name of the property to be extracted
      Returns:
      The nested property's value, converted to a String
      Throws:
      IllegalAccessException - if the caller does not have access to the property accessor method
      IllegalArgumentException - if a nested reference to a property returns null
      InvocationTargetException - if the property accessor method throws an exception
      NoSuchMethodException - if an accessor method for this property cannot be found
    • getProperty

      Return the value of the specified locale-sensitive property of the specified bean, no matter which property reference format is used, as a String using the specified conversion pattern.
      Parameters:
      bean - Bean whose property is to be extracted
      name - Possibly indexed and/or nested name of the property to be extracted
      pattern - The conversion pattern
      Returns:
      The nested property's value, converted to a String
      Throws:
      IllegalAccessException - if the caller does not have access to the property accessor method
      InvocationTargetException - if the property accessor method throws an exception
      NoSuchMethodException - if an accessor method for this property cannot be found
    • getProperty

      Return the value of the specified locale-sensitive property of the specified bean, no matter which property reference format is used, as a String using the default conversion pattern of the corresponding LocaleConverter.
      Overrides:
      getProperty in class BeanUtilsBean
      Parameters:
      bean - Bean whose property is to be extracted
      name - Possibly indexed and/or nested name of the property to be extracted
      Returns:
      The property's value, converted to a String
      Throws:
      IllegalAccessException - if the caller does not have access to the property accessor method
      InvocationTargetException - if the property accessor method throws an exception
      NoSuchMethodException - if an accessor method for this property cannot be found
    • setProperty

      public void setProperty(Object bean, String name, Object value) throws IllegalAccessException, InvocationTargetException
      Set the specified locale-sensitive property value, performing type conversions as required to conform to the type of the destination property using the default conversion pattern of the corresponding LocaleConverter.
      Overrides:
      setProperty in class BeanUtilsBean
      Parameters:
      bean - Bean on which setting is to be performed
      name - Property name (can be nested/indexed/mapped/combo)
      value - Value to be set
      Throws:
      IllegalAccessException - if the caller does not have access to the property accessor method
      InvocationTargetException - if the property accessor method throws an exception
    • setProperty

      public void setProperty(Object bean, String name, Object value, String pattern) throws IllegalAccessException, InvocationTargetException
      Set the specified locale-sensitive property value, performing type conversions as required to conform to the type of the destination property using the specified conversion pattern.
      Parameters:
      bean - Bean on which setting is to be performed
      name - Property name (can be nested/indexed/mapped/combo)
      value - Value to be set
      pattern - The conversion pattern
      Throws:
      IllegalAccessException - if the caller does not have access to the property accessor method
      InvocationTargetException - if the property accessor method throws an exception
    • definePropertyType

      protected Class<?> definePropertyType(Object target, String name, String propName) throws IllegalAccessException, InvocationTargetException
      Calculate the property type.
      Parameters:
      target - The bean
      name - The property name
      propName - The Simple name of target property
      Returns:
      The property's type
      Throws:
      IllegalAccessException - if the caller does not have access to the property accessor method
      InvocationTargetException - if the property accessor method throws an exception
    • convert

      protected Object convert(Class<?> type, int index, Object value, String pattern)
      Convert the specified value to the required type using the specified conversion pattern.
      Parameters:
      type - The Java type of target property
      index - The indexed subscript value (if any)
      value - The value to be converted
      pattern - The conversion pattern
      Returns:
      The converted value
    • convert

      protected Object convert(Class<?> type, int index, Object value)
      Convert the specified value to the required type.
      Parameters:
      type - The Java type of target property
      index - The indexed subscript value (if any)
      value - The value to be converted
      Returns:
      The converted value
    • invokeSetter

      protected void invokeSetter(Object target, String propName, String key, int index, Object newValue) throws IllegalAccessException, InvocationTargetException
      Invoke the setter method.
      Parameters:
      target - The bean
      propName - The Simple name of target property
      key - The Mapped key value (if any)
      index - The indexed subscript value (if any)
      newValue - The value to be set
      Throws:
      IllegalAccessException - if the caller does not have access to the property accessor method
      InvocationTargetException - if the property accessor method throws an exception
    • calculate

      Deprecated.
      Property name expressions are now processed by the configured Resolver implementation and this method is no longer used by BeanUtils.
      Resolve any nested expression to get the actual target property.
      Parameters:
      bean - The bean
      name - The property name
      Returns:
      The property's descriptor
      Throws:
      IllegalAccessException - if the caller does not have access to the property accessor method
      InvocationTargetException - if the property accessor method throws an exception