[ 
https://issues.apache.org/jira/browse/CAY-1512?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Andrew Lindesay closed CAY-1512.
--------------------------------

    Resolution: Not A Problem

Hi Andrus; Actually I have worked around this along the lines of discussion on 
the mailing list.  So I will close this ticket and if anybody else opens 
something like this then they can re-open a new ticket.

> 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

        

Reply via email to