[
https://issues.apache.org/jira/browse/CAY-1512?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Andrus Adamchik updated CAY-1512:
---------------------------------
Fix Version/s: (was: 3.0.2)
3.0.3
> Change in Behaviour with "Read Property" Methods
> ------------------------------------------------
>
> Key: CAY-1512
> URL: https://issues.apache.org/jira/browse/CAY-1512
> Project: Cayenne
> Issue Type: Improvement
> Components: Core Library
> Affects Versions: 3.0
> Reporter: Andrew Lindesay
> Fix For: 3.0.3
>
>
> 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()'.
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira