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

    All Methods Instance Methods Abstract Methods Deprecated Methods
    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 Detail

    - #### 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