Package org.apache.tapestry5.beanmodel.internal.beanmodel

## Class BeanModelImpl<T>

- java.lang.Object
- - org.apache.tapestry5.beanmodel.internal.beanmodel.BeanModelImpl<T>

- All Implemented Interfaces:
    `BeanModel<T>`

      public class BeanModelImpl<T>
      extends java.lang.Object
      implements BeanModel<T>

- - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `BeanModelImpl​(java.lang.Class<T> beanType, PropertyConduitSource propertyConduitSource, TypeCoercer typeCoercer, Messages messages, ObjectLocator locator)` |

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `PropertyModel` | `add​(java.lang.String propertyName)` | Adds a new property to the model, returning its mutable model for further refinement.
    `PropertyModel` | `add​(java.lang.String propertyName, PropertyConduit conduit)` | Adds a new, synthetic property to the model, returning its mutable model for further refinement.
    `PropertyModel` | `add​(RelativePosition position, java.lang.String existingPropertyName, java.lang.String propertyName)` | Adds a new property to the model (as with `BeanModel.add(String)`), ordered before or after an existing property.
    `PropertyModel` | `add​(RelativePosition position, java.lang.String existingPropertyName, java.lang.String propertyName, PropertyConduit conduit)` | Adds a new property to the model, ordered before or after an existing property.
    `PropertyModel` | `addEmpty​(java.lang.String propertyName)` | Adds an empty property (one with no property conduit).
    `PropertyModel` | `addExpression​(java.lang.String propertyName, java.lang.String expression)` | Adds a new synthetic property to the model, returning its mutable model for further refinement.
    `BeanModel<T>` | `exclude​(java.lang.String... propertyNames)` | Removes the named properties from the model, if present.
    `PropertyModel` | `get​(java.lang.String propertyName)` | Returns the named model.
    `java.lang.Class<T>` | `getBeanType()` | Returns the type of bean for which this model was initially created.
    `PropertyModel` | `getById​(java.lang.String propertyId)` | Returns the identified model.
    `java.util.List<java.lang.String>` | `getPropertyNames()` | Returns a list of the editable properties of the bean, in presentation order.
    `BeanModel<T>` | `include​(java.lang.String... propertyNames)` | Re-orders the properties of the model into the specified order.
    `T` | `newInstance()` | Creates a new bean instance.
    `BeanModel<T>` | `reorder​(java.lang.String... propertyNames)` | Re-orders the properties of the model into the specified order.
    `java.lang.String` | `toString()` |

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

- - ### Constructor Detail

    - #### BeanModelImpl

          public BeanModelImpl​(java.lang.Class<T> beanType,
                               PropertyConduitSource propertyConduitSource,
                               TypeCoercer typeCoercer,
                               Messages messages,
                               ObjectLocator locator)

  - ### Method Detail

    - #### getBeanType

          public java.lang.Class<T> getBeanType()

      Description copied from interface: `BeanModel`
      Returns the type of bean for which this model was initially created.
      Specified by:
        `getBeanType` in interface `BeanModel<T>`

    - #### newInstance

          public T newInstance()

      Description copied from interface: `BeanModel`
      Creates a new bean instance. This is based on `ObjectLocator.autobuild(Class)`, so a public constructor will be used, and dependencies injected.
      Specified by:
        `newInstance` in interface `BeanModel<T>`
      Returns:
        new instance of the bean

    - #### add

          public PropertyModel add​(java.lang.String propertyName)

      Description copied from interface: `BeanModel`
      Adds a new property to the model, returning its mutable model for further refinement. The property is added to the end of the list of properties. The property must be real (but may have been excluded if there was no datatype associated with the property). To add a synthetic property, use `BeanModel.add(String, org.apache.tapestry5.beanmodel.PropertyConduit)`
      Specified by:
        `add` in interface `BeanModel<T>`
      Parameters:
        `propertyName` - name of property to add
      Returns:
        the new property model (for further configuration)

    - #### addEmpty

          public PropertyModel addEmpty​(java.lang.String propertyName)

      Description copied from interface: `BeanModel`
      Adds an empty property (one with no property conduit).
      Specified by:
        `addEmpty` in interface `BeanModel<T>`
      Parameters:
        `propertyName` - name of property to add
      Returns:
        the new property model (for further configuration)

    - #### addExpression

          public PropertyModel addExpression​(java.lang.String propertyName,
                                             java.lang.String expression)

      Description copied from interface: `BeanModel`
      Adds a new synthetic property to the model, returning its mutable model for further refinement. The property is added to the end of the list of properties.
      Specified by:
        `addExpression` in interface `BeanModel<T>`
      Parameters:
        `propertyName` - name of property to add
        `expression` - expression for the property
      Returns:
        the new property model (for further configuration)

    - #### add

          public PropertyModel add​(RelativePosition position,
                                   java.lang.String existingPropertyName,
                                   java.lang.String propertyName,
                                   PropertyConduit conduit)

      Description copied from interface: `BeanModel`
      Adds a new property to the model, ordered before or after an existing property.
      Specified by:
        `add` in interface `BeanModel<T>`
      Parameters:
        `position` - controls whether the new property is ordered before or after the existing property
        `existingPropertyName` - the name of an existing property (this must exist)
        `propertyName` - the new property to add
        `conduit` - conduit used to read or update the property; this may be null for a synthetic or placeholder property
      Returns:
        the new property model (for further configuration)

    - #### add

          public PropertyModel add​(RelativePosition position,
                                   java.lang.String existingPropertyName,
                                   java.lang.String propertyName)

      Description copied from interface: `BeanModel`
      Adds a new property to the model (as with `BeanModel.add(String)`), ordered before or after an existing property.
      Specified by:
        `add` in interface `BeanModel<T>`
      Parameters:
        `position` - controls whether the new property is ordered before or after the existing property
        `existingPropertyName` - the name of an existing property (this must exist)
        `propertyName` - the new property to add
      Returns:
        the new property model (for further configuration)

    - #### add

          public PropertyModel add​(java.lang.String propertyName,
                                   PropertyConduit conduit)

      Description copied from interface: `BeanModel`
      Adds a new, synthetic property to the model, returning its mutable model for further refinement.
      Specified by:
        `add` in interface `BeanModel<T>`
      Parameters:
        `propertyName` - name of property to add
        `conduit` - the conduit used to read or update the property; this may be null for a synthetic or placeholder property. Instead of passing null, please invoke `BeanModel.addEmpty(String)`.
      Returns:
        the model for the property
      See Also:
        `BeanModel.addExpression(String, String)`

    - #### get

          public PropertyModel get​(java.lang.String propertyName)

      Description copied from interface: `BeanModel`
      Returns the named model.
      Specified by:
        `get` in interface `BeanModel<T>`
      Parameters:
        `propertyName` - name of property to retrieve model for (case is ignored)
      Returns:
        the model for the property

    - #### getById

          public PropertyModel getById​(java.lang.String propertyId)

      Description copied from interface: `BeanModel`
      Returns the identified model. Property ids are a stripped version of the property name. Case is ignored.
      Specified by:
        `getById` in interface `BeanModel<T>`
      Parameters:
        `propertyId` - matched caselessly against `PropertyModel.getId()`

    - #### getPropertyNames

          public java.util.List<java.lang.String> getPropertyNames()

      Description copied from interface: `BeanModel`
      Returns a list of the editable properties of the bean, in presentation order.
      Specified by:
        `getPropertyNames` in interface `BeanModel<T>`

    - #### exclude

          public BeanModel<T> exclude​(java.lang.String... propertyNames)

      Description copied from interface: `BeanModel`
      Removes the named properties from the model, if present. It is not considered an error to remove a property that does not exist.
      Specified by:
        `exclude` in interface `BeanModel<T>`
      Parameters:
        `propertyNames` - the names of properties to be removed (case insensitive)
      Returns:
        the model for further modifications

    - #### reorder

          public BeanModel<T> reorder​(java.lang.String... propertyNames)

      Description copied from interface: `BeanModel`
      Re-orders the properties of the model into the specified order. Existing properties that are not indicated are retained, but ordered to the end of the list.
      Specified by:
        `reorder` in interface `BeanModel<T>`
      Parameters:
        `propertyNames` - property names in order they should be displayed (case insensitive)
      Returns:
        the model for further modifications

    - #### include

          public BeanModel<T> include​(java.lang.String... propertyNames)

      Description copied from interface: `BeanModel`
      Re-orders the properties of the model into the specified order. Existing properties that are not indicated are removed.
      Specified by:
        `include` in interface `BeanModel<T>`
      Parameters:
        `propertyNames` - the names of properties to be retained
      Returns:
        the model for further modifications

    - #### toString

          public java.lang.String toString()

      Overrides:
        `toString` in class `java.lang.Object`