Uploaded image for project: 'Isis'
  1. Isis
  2. ISIS-804

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

    Details

    • Type: Improvement
    • Status: Closed
    • Priority: Major
    • Resolution: Invalid
    • Affects Version/s: core-1.5.0
    • Fix Version/s: 1.16.1
    • Component/s: Core
    • Labels:
      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

            • Assignee:
              Unassigned
              Reporter:
              danhaywood Dan Haywood
            • Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: