Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [eclipselink-users] Virtual Metlhods | questions

Hello Gaurav,

I think there is some confusion on what a ValueHolder instance is since your set method seems to believe that a ValueHolderInterface can be an instance of PhoneNumber. instead, A valueholder will contain the phonenumber - and the map will contain a Valueholder instance that contains a PhoneNumber.

EclipseLink needs to set/get the valueholders within the map, but the getters/setters you've provided are taking/returning PhoneNumber instances instead. This is why you get the exception.

To get around this and still keep your app from seeing and having to deal directly with valueholders you would create two sets of get/set methods. The first set would be the ones EclipseLink would use to access what is in the map - it will return exactly what is in there such as the valueholders etc. You can call them something like getForEclipseLink/setForEclipseLink if you would like to make it clear, and specify these method names in the VirtualAttributeAccessor.

You would then use the second set of get/set method to return the data the application requires - such as the unwrapped data within the valueholders, much as you seem to be doing in the get/set methods you posted earlier.

Regards,
Chris


On 17/07/2012 1:19 PM, Gaurav Malhotra wrote:

Hi tom,
    It will be fine, if we uses some internal method for value holders. But
please give hint, how different attribute accessor will work as chris
suggested.

Gaurav


tware wrote:

Hi Gaurav,

    Chris is right here.  The way indirection works for 1-1 mappings in
EclipseLink, means that EclipseLink needs access to a method that will
return
the valueholder itself.  With weaving enabled, we weave a special method
into
the object for each mapping.

    The question here is whether the same method needs to be used to access
the
map from Groovy or if you could have an internal method EclipseLink uses
to
store the valueholders and a public method that is used to retrieve the
values?

-Tom

On 17/07/2012 10:43 AM, Gaurav Malhotra wrote:

Christopher,
    I am trying to implement "Dynamic Fields" i.e. extension to
table/entity
which could be used in groovy logic as we call it dynamic logic.Dynamic
fields can be added dynamically at runtime (deployed cluster application
which also uses TLG). Currently in my sample code I use "EntryProcessor"
which is trigger the creation of mapping on all the nodes in the cluster.

    Example, if we add dynamic field - "phoneNumber" to the Eomployee, it
should be possible to access it like employee.phoneNumber.number. Hence
Map
suit our use case (its simple) and  we would not like to weave
getPhoneNumber method/attribute etc magically into the entity using asm.

    Hence VirtualMethods implementation best suits our business usage
case.

   So I think I cannot use any other attribute accessor.

~GM

_______________________________________________
eclipselink-users mailing list
eclipselink-users@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/eclipselink-users





Back to the top