Folks, The following proposal [1] impacts domain logic, comments welcome on this thread or on the JIRA issue itself.
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 demos, 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. Cheers Dan [1] https://issues.apache.org/jira/browse/ISIS-804
