Uploaded image for project: 'Causeway'
  1. Causeway
  2. CAUSEWAY-804

[INVALID] Make (entity) properties read-only by default.

    XMLWordPrintableJSON

Details

    • Improvement
    • Status: Closed
    • Major
    • Resolution: Invalid
    • core-1.5.0
    • 1.16.1
    • Core
    • None

    Description

      Currently properties are read/write by default; the programmer has to annotate with @Disabled (or equivalent) to make read-only.

      While this "subtractive programming" approach is nice for demo's, the truth is that with larger applications, if not rigorously and completely tested, the end-user may get the opportunity to change something that they ought not; potentially corrupting data.

      It would be better (and safer) for properties to be read-only by default.

      The presence of the modifyXxx(...)/clearXxx() supporting methods would then indicate that they are read-write.

      Another possible benefit is that - if we implement ISIS-273 (to read from fields) then the amount of boilerplate would substantially be reduced if a tool like Lombok was used. That is, read-only properties would consist solely of a private field; read-write properties would be the field plus the modify/clear.

      It might also make sense for the clearXxx() method to be optional; that is, to allow modifyXxx(..) to be called with null.

      NB: for view models, properties could (perhaps) remain as read-write; there are no side-effects.

      This change requires discussion on the mailing list.

      Attachments

        Activity

          People

            Unassigned Unassigned
            danhaywood Daniel Keir Haywood
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: