Class DynaBeanPropertyMapDecorator

  • All Implemented Interfaces:
    java.util.Map<java.lang.String,​java.lang.Object>

    public class DynaBeanPropertyMapDecorator
    extends BaseDynaBeanMapDecorator<java.lang.String>

    Decorates a DynaBean to provide Map behavior.

    The motivation for this implementation is to provide access to DynaBean properties in technologies that are unaware of BeanUtils and DynaBeans - such as the expression languages of JSTL and JSF.

    This can be achieved either by wrapping the DynaBean prior to providing it to the technology to process or by providing a Map accessor method on the DynaBean implementation:

             public Map<String, Object> getMap() {
                 return new DynaBeanPropertyMapDecorator(this);
             }

    This, for example, could be used in JSTL in the following way to access a DynaBean's fooProperty:

    • ${myDynaBean.map.fooProperty}
    Usage

    To decorate a DynaBean simply instantiate this class with the target DynaBean:

    • Map<String, Object> fooMap = new DynaBeanPropertyMapDecorator(fooDynaBean);

    The above example creates a read only Map. To create a Map which can be modified, construct a DynaBeanPropertyMapDecorator with the read only attribute set to false:

    • Map<String, Object> fooMap = new DynaBeanPropertyMapDecorator(fooDynaBean, false);
    Limitations

    In this implementation the entrySet(), keySet() and values() methods create an unmodifiable Set and it does not support the Map's clear() and remove() operations.

    Since:
    BeanUtils 1.9.0
    • Constructor Detail

      • DynaBeanPropertyMapDecorator

        public DynaBeanPropertyMapDecorator​(DynaBean dynaBean)
        Constructs a read only Map for the specified DynaBean.
        Parameters:
        dynaBean - The dyna bean being decorated
        Throws:
        java.lang.IllegalArgumentException - if the DynaBean is null.
      • DynaBeanPropertyMapDecorator

        public DynaBeanPropertyMapDecorator​(DynaBean dynaBean,
                                            boolean readOnly)
        Construct a Map for the specified DynaBean.
        Parameters:
        dynaBean - The dyna bean being decorated
        readOnly - true if the Map is read only otherwise false
        Throws:
        java.lang.IllegalArgumentException - if the DynaBean is null.
    • Method Detail

      • convertKey

        protected java.lang.String convertKey​(java.lang.String propertyName)
        Description copied from class: BaseDynaBeanMapDecorator
        Converts the name of a property to the key type of this decorator.
        Specified by:
        convertKey in class BaseDynaBeanMapDecorator<java.lang.String>
        Parameters:
        propertyName - the name of a property
        Returns:
        the converted key to be used in the decorated map