Great to hear there a workaround. Object structure is a pretty fundamental 
issue, so I was afraid we may get stuck here.

Cheers,
Andrus 

On Dec 11, 2011, at 8:49 PM, Kevin Meyer - KMZ wrote:

> On 11 Dec 2011 at 20:28, Andrus Adamchik wrote:
> 
>> 
>> On Dec 11, 2011, at 7:00 PM, Kevin Meyer - KMZ wrote:
>> 
>>> I wish it were this simple. But the problem lies in
>>>     DataContext#newObject(String entityName)
>>> once it has created an instance of my POJO, it type casts it to 
>>> Persistent:
>>>           object = (Persistent) descriptor.createObject();
>>> 
>>> This *forces* my POJO to implement Persistent.
>> 
>> You may have to do the wrapping on your own after that I guess... If it is 
>> at all possible.
>> 
>> IIRC elsewhere in this thread you said you were OK with Isis objects
>> extending CayenneDataObject. CayenneDataObject implements Persistent
>> of course. So maybe there was some misunderstanding earlier in this
>> discussion? If your object really has to be a POJO (as in Java class
>> with no special superclass and data contained in the user-defined
>> fields), we need to backtrack quite a bit and reevaluate the
>> problem. 
> 
> I'm learning as I go along.
> 
> Initially, I did not realise there would be a problem with the Isis 
> introspector and CayenneDataObject.
> 
> Fortunately, Isis provides a mechanism to bypass introspecting certain 
> classes, so I am making my POJO extend CayenneDataObject and 
> am on to the next stage.
> 
> So - to recap: I have my POJO that Isis can introspect. I have 
> examined the fields and created:
> DbEntity, ObjEntity for each POJO.
> For each property, I have created:
> DbAttribute, ObjAttribute
> and set the appropriate setEntity() to the entities created above.
> 
> 
> 
> I can create an instance of my POJO with newInstance().
> 
> I'm now getting a null pointer assignment when I try and commit!
> 
> So far, I have tracked into:
>                createPermIds(descriptor, objects);
> in DataDomainInsertBucket#appendQueriesInternal
> 
>> 
>>> Why doesn't Cayenne support composition over inheritance? I think 
>>> the idea of containing the CayenneDataObject as suggested provides 
>>> much greater flexibility... and you generate these classes, anyway.
>> 
>> In the Isis integration case - maybe. I don't think we've ever
>> considered using a delegate to give persistent objects a semblance
>> of a POJO by removing a requirement for a superclass, but still
>> forcing our own internal structure. So it is probably worth a
>> discussion, although I am cautiously pessimistic about it being done
>> easily at Cayenne level. 
> 
> Indeed - I started putting together something in the DataContext that'll 
> fetch the container via a getPersistent or equivalent, and realised that 
> some additional wrappers will be needed to access the POJO again.
> 
> I'll put that on the back-burner for a while.
> 
> Regards,
> Kevin
> 
> 

Reply via email to