cayenne-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jeff Rorison <jeff_rori...@sra.com>
Subject Re: objectFromDataRow NPE
Date Thu, 07 Oct 2010 16:01:43 GMT
Andrus Adamchik <andrus <at> objectstyle.org> writes:

> 
> Hi Jeff,
> 
> From the lines in the stack trace, looks like 
context.getObjectStore().getDataRowCache() returns
> null, causing an NPE downstream. Now wondering why that can happen... Are you
> serializaing/deserializaing your DataContext?
> 
> Andrus
> 
> On Oct 6, 2010, at 9:04 PM, Rorison, Jeff wrote:
> 
> > I am using 3.0 (final) and am having some issues using
> > context.createFromDataRow(...)
> > 
> > ObjectResolver is throwing an NPE on what looks like updating snapshots.
> > Code:
> > 
> >     SQLTemplate template = .....
> >     template.setFetchingDataRows(true);
> >     ...
> >     List res = this.dataContext.performQuery(template);
> >     Subject sub = (Subject)context.objectFromDataRow(Subject.class,
> > (DataRow)res.get(0), true);
> > 
> > Err:
> > java.lang.NullPointerException at
> > org.apache.cayenne.access.ObjectResolver.objectsFromDataRows(ObjectResol
> > ver.java:117)
> >                at
> > org.apache.cayenne.access.ObjectResolver.synchronizedObjectsFromDataRows
> > (ObjectResolver.java:94)
> >                at
> > org.apache.cayenne.access.DataContext.objectsFromDataRows(DataContext.ja
> > va:597)
> >                at
> > org.apache.cayenne.access.DataContext.objectFromDataRow(DataContext.java
> > :646)
> >                ...........
> > 
> > What, if anything am I doing incorrectly here? I have tried changing the
> > refresh, and most of the other API calls with no success?
> > 
> > Has this changed any in 3.0, as I see a few differences between the API
> > and the docs?
> 

Andrus,

We are running in the Felix OSGi container and are using a Java Proxy object 
(ObjectContext) to provide the context from a service, no 
serialization/deserialization.

Since the proxy object disallows anything except the interface even a cast to 
DataContext is disallowed. In most cases the ObjectContext is all we want to 
provide, but in a few we need a DataContext to perform a little more magic.

So, from the original we create a child ObjectContext which we can cast to 
DataContext so we can do some Cayenne magic.

This is where the errors came in to play with ...objectFromDataRow().

cheers,
jeff




Mime
View raw message