Tapestry
  1. Tapestry
  2. TAPESTRY-1932

Extend PropertyModel to allow access to annotations associated with the property

    Details

    • Type: Improvement Improvement
    • Status: Closed
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: 5.0.6
    • Fix Version/s: 5.0.11
    • Component/s: Framework
    • Labels:
      None

      Description

      Oftentimes I have to work with beans that I do not have the source for. These beans come out of a library that is shared amongst other apps or out of a third party library. As such, annotating fields with the "Validate" annotation or the proposed "PropertyType" annotation (see TAPESTRY-1931) are not possible.

      What would be great is if the PropertyModel exposed these customizations via API additions. Then, during model customization, one could do something similar to the following:

      model.add("some_text_property").addValidation("required")

      Or:

      model.add("some_text_property").setType("longtext")

        Activity

        Hide
        Howard M. Lewis Ship added a comment -

        This really went into a different direction, where PropertyModel implements AnnotationProvider and logic related to annotations can move right into the components themselves, where appropriate. For example, got rid of the width() and getWidth() methods on PropertyModel, and put logic related to @Width into AbstractTextField.

        Show
        Howard M. Lewis Ship added a comment - This really went into a different direction, where PropertyModel implements AnnotationProvider and logic related to annotations can move right into the components themselves, where appropriate. For example, got rid of the width() and getWidth() methods on PropertyModel, and put logic related to @Width into AbstractTextField.
        Hide
        Howard M. Lewis Ship added a comment -

        I've been of two minds on this, for instance, when I was working on adding support for @Width. It's a question of where logic should live (to avoid duplication). Ultimately, support for @Width maybe wasn't implemented the correct way and that logic should be inside AbstractTextField rather than inside BeanModelSourceImpl/PropertyModelImpl.

        Show
        Howard M. Lewis Ship added a comment - I've been of two minds on this, for instance, when I was working on adding support for @Width. It's a question of where logic should live (to avoid duplication). Ultimately, support for @Width maybe wasn't implemented the correct way and that logic should be inside AbstractTextField rather than inside BeanModelSourceImpl/PropertyModelImpl.
        Hide
        Howard M. Lewis Ship added a comment -

        Most of the things you want to do, outside of validation, are already supported by BeanModel and PropertyModel.

        Show
        Howard M. Lewis Ship added a comment - Most of the things you want to do, outside of validation, are already supported by BeanModel and PropertyModel.

          People

          • Assignee:
            Howard M. Lewis Ship
            Reporter:
            Kevin Menard
          • Votes:
            2 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved:

              Development