Package org.apache.tapestry5.model

# Interface MutableComponentModel

All Superinterfaces:
  `ComponentModel`

All Known Implementing Classes:
  `MutableComponentModelImpl`

public interface MutableComponentModel extends ComponentModel
Mutable version of `ComponentModel` used during the transformation phase.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `MutableEmbeddedComponentModel`
  `addEmbeddedComponent(String id, String type, String componentClassName, boolean inheritInformalParameters, Location location)`
  Defines a new embedded component.
  `void`
  `addEventHandler(String eventType)`
  Identifies that the component includes an event handler for the indicated event type.
  `void`
  `addMixinClassName(String mixinClassName, String... order)`
  Adds a mixin to the component's implementation, optionally specifying ordering constraints, as per OrderedConfiguration.
  `void`
  `addParameter(String name, boolean required, boolean allowNull, String defaultBindingPrefix)`
  Deprecated.
  Use `addParameter(String, boolean, boolean, String, boolean)` instead.
  `void`
  `addParameter(String name, boolean required, boolean allowNull, String defaultBindingPrefix, boolean cached)`
  Adds a new formal parameter to the model.
  `void`
  `addRenderPhase(Class renderPhase)`
  Identifies that the component does handle the render phase.
  `void`
  `doHandleActivationEventContext()`
  Relevant for pages only, identifies that the component handle `EventConstants.ACTIVATE` events supporting one of the three special case for catch all rules: ``Object`[]` ``List`` ``EventContext``
  `void`
  `enableSupportsInformalParameters()`
  Sets the internal flag to indicate that this model (and all models that extend from it) support informal parameters.
  `String`
  `setFieldPersistenceStrategy(String fieldName, String strategy)`
  Used to define the field persistence strategy for a particular field name.
  `void`
  `setMeta(String key, String value)`
  Stores a meta data value under the indicated key.
  `void`
  `setMixinAfter(boolean mixinAfter)`
  Changes the value of the mixinAfter flag.

  ### Methods inherited from interface org.apache.tapestry5.model.ComponentModel

  `getBaseResource, getComponentClassName, getDeclaredParameterNames, getEmbeddedComponentIds, getEmbeddedComponentModel, getFieldPersistenceStrategy, getHandledRenderPhases, getLibraryName, getLogger, getMeta, getMixinClassNames, getOrderForMixin, getParameterModel, getParameterNames, getParentModel, getPersistentFieldNames, getSupportsInformalParameters, handleActivationEventContext, handlesEvent, isFormalParameter, isMixinAfter, isPage, isRootClass`

- ## Method Details

  - ### addParameter

    void addParameter(String name, boolean required, boolean allowNull, String defaultBindingPrefix)
    Deprecated.
    Use `addParameter(String, boolean, boolean, String, boolean)` instead.
    Adds a new formal parameter to the model. Each parameter has a unique name (though access to parameters is case insensitive).
    Parameters:
      `name` - new, unique name for the parameter
      `required` - if true, the parameter must be bound
      `allowNull` - if true, then parameter may be bound to null, if false a null check will be added
      `defaultBindingPrefix` - the default binding prefix for this parameter @throws IllegalArgumentException if a parameter with the given name has already been defined for this model
    See Also:
      - `Parameter`

  - ### addParameter

    void addParameter(String name, boolean required, boolean allowNull, String defaultBindingPrefix, boolean cached)
    Adds a new formal parameter to the model. Each parameter has a unique name (though access to parameters is case insensitive).
    Parameters:
      `name` - new, unique name for the parameter
      `required` - if true, the parameter must be bound
      `allowNull` - if true, then parameter may be bound to null, if false a null check will be added
      `defaultBindingPrefix` - the default binding prefix for this parameter @throws IllegalArgumentException if a parameter with the given name has already been defined for this model
      `cached` - if true, the parameter value should be cached within the component during rendering
    Since:
      5.2.0.0
    See Also:
      - `Parameter`

  - ### addEmbeddedComponent

    MutableEmbeddedComponentModel addEmbeddedComponent(String id, String type, String componentClassName, boolean inheritInformalParameters, Location location)
    Defines a new embedded component.
    Parameters:
      `id` - the unique id for the embedded component, which must not already exist.
      `type` - the type of the component (posslibly blank)
      `componentClassName` - the fully qualified class name (derived from the field), used if the type is blank
      `inheritInformalParameters` - if true, then the component will inherit informal parameters provided to its container
      `location` - where the component is defined @return a mutable model allowing parameters to be set

  - ### setFieldPersistenceStrategy

    String setFieldPersistenceStrategy(String fieldName, String strategy)
    Used to define the field persistence strategy for a particular field name. Returns a logical name for the field, which is guaranteed to be unique (this is necessary for handling the case where a subclass has a persistent field with the same name as a persistent field from a super-class).
    Parameters:
      `fieldName` - the name of the field which is to be made persistent
      `strategy` - the strategy for persisting the field, from `Persist.value()`. This value may be blank, in which case the stategy is inherited from the component, or the component's container.
    Returns:
      a logical name for the field, to be used with `ComponentModel.getFieldPersistenceStrategy(String)`, and with `InternalComponentResources.persistFieldChange(String, Object)`, etc.

  - ### addMixinClassName

    void addMixinClassName(String mixinClassName, String... order)
    Adds a mixin to the component's implementation, optionally specifying ordering constraints, as per OrderedConfiguration.
    Since:
      5.2.0.0

  - ### enableSupportsInformalParameters

    void enableSupportsInformalParameters()
    Sets the internal flag to indicate that this model (and all models that extend from it) support informal parameters.

  - ### setMixinAfter

    void setMixinAfter(boolean mixinAfter)
    Changes the value of the mixinAfter flag. The default value is false.

  - ### setMeta

    void setMeta(String key, String value)
    Stores a meta data value under the indicated key.

  - ### addRenderPhase

    void addRenderPhase(Class renderPhase)
    Identifies that the component does handle the render phase.
    Parameters:
      `renderPhase` - annotation class corresponding to the render phase
    Since:
      5.0.19, 5.1.0.0
    See Also:
      - `ComponentModel.getHandledRenderPhases()`

  - ### addEventHandler

    void addEventHandler(String eventType)
    Identifies that the component includes an event handler for the indicated event type.
    Parameters:
      `eventType` - of handled event
    Since:
      5.1.0.0

  - ### doHandleActivationEventContext

    void doHandleActivationEventContext()
    Relevant for pages only, identifies that the component handle `EventConstants.ACTIVATE` events supporting one of the three special case for catch all rules:
    - ``Object`[]`
    - ``List``
    - ``EventContext``
    Since:
      5.4