On 2 Jan 2014, at 04:20, Steve Ebersole <steve(a)hibernate.org> wrote:
I have heard no more comments, so I will move forward with this as
stated earlier.
Sorry for the late reply. I had a read through and what you describe is what I would
expect (in fact I hope
I basically implemented it this way on the metamodel branch).
There is a typo in example 4:
@Entity
@Access(PROPERTY)
public class PublishedDocument extends Document
Should be @Access(FIELD)
Additionally, I started working the a PoC for the idea of making this
resolution pluggable. Here is the initial stroke for the contract:
/**
* Contract responsible for resolving the members that identify the persistent
* attributes for a given class descriptor representing a managed type.
*
* These members (field or method) would be where we look for mapping annotations
* for the attribute.
*
* Additionally, whether the member is a field or method would tell us the default
* runtime access strategy
*
* @author Steve Ebersole
*/
public interface PersistentAttributeMemberResolver {
/**
* Given the ManagedType Java type descriptor and the implicit AccessType
* to use, resolve the members that indicate persistent attributes.
*
* @param managedTypeDescriptor The ManagedType Java type descriptor
* @param implicitAccessType The implicit AccessType for the resolution
*
* @return The list of "backing members"
*/
public List<MemberDescriptor> resolveMembers(
JavaTypeDescriptor managedTypeDescriptor,
AccessType implicitAccessType);
}
Where MemberDescriptor and JavaTypeDescriptor are the descriptors from the new reflite
layer, right?
This should work.
—Hardy