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