Uploaded image for project: 'Cayenne'
  1. Cayenne
  2. CAY-1512

Change in Behaviour with "Read Property" Methods

    XMLWordPrintableJSON

Details

    • Improvement
    • Status: Closed
    • Major
    • Resolution: Not A Problem
    • 3.0
    • 3.0.3
    • Core Library
    • None

    Description

      There is an issue that a data object (DO) uses the "readProperty()" method in its accessors such as "getStartTimestamp()"/"getArtist()" etc... The "readNestedProperty()" does some extra things like using reflection to get at non-modelled accessors, but "readProperty()" does not. This is an inconsistency.

      Simply adding the additional reflection to "readProperty()" is not a good idea because in the case where an object is not yet related to the model, an infinite loop can result. Particularly in the case where a data object is not yet added to an object context, the logical condition around stopping this infinite loop is not able to be identified.

      My suggestion is to add a protected "readPropertyStored()" which will be used by the accessors such as "getStartTimestamp()"/"getArtist()". This method will not use reflection, but "readProperty()" will do the additional reflection if necessary. The "readPropertyStored()" will continue to invoke "readPropertyDirectly()".

      In addition, the "extra reflection" from "readProperty()" would be serviced through two additional methods on the data object;

      readPropertyDerived(..)

      For the case of the "readNestedProperty(..)" the use of reflection into an object which is not a data object will be serviced through;

      readNestedPropertyFromNonDataObject(..)

      Together these changes will allow for consistenecy in the 'read property' behaviour and will also allow third parties to more easily extend Cayenne's 'read property' behaviors in order to support more sophisticated 'ready property' behaviour.

      This is a change in behavior and generated DAO classes would need to be modified to use 'readPropertyStored()' instead of 'readProperty()'.

      Attachments

        Activity

          People

            Unassigned Unassigned
            apl Andrew Ponsonby Lindesay
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: