Re: NullPointerException only after first call to batchFetchRelationship
Kaj Hejer <[email protected]> Tue, 16 Dec 2003 09:27:05 +0100
| Newsgroups | gmane.comp.web.webobjects.eof |
|---|---|
| Message-ID | <p06020405bc04643e6286@[10.29.0.58]> |
Hi!
Thanks for answering!
I have multiple EOF stacks in two components in this application, but
these components are not releated to the place I get this exception.
At 19:54 -0800 15-12-03, Chuck Hill wrote:
>Yeah, that was probably me on about locking. ;-)
>
>Good catch on the original problem! I couldn't figure out what was
>different at first then AAARAUGH - multiple EOF stacks. How many times can
>one person forget the same thing? EOModelGroup().defaultGroup() is not
>safe to use when there are multiple stacks. I'm not using them in the app
>where I'm prefetching which would explain why I've not seen this bug yet.
>
>If anyone's interested, related to this problem with
>EOModelGroup.defaultGroup() are the methods:
>EOModelGroup.modelGroupForObjectStoreCoordinator(EOObjectStoreCoordinator)
>EOUtilities.modelGroup(EOEditingContext)
>EOUtilities.databaseContextForModelNamed(EOEditingContext, String)
>
>Kaj, do you have multiple EOF stacks?
>
>I've added a little code here with a twist on Lenny's implementation (just
>'cause I like to play with all the different ways from point A to point B
>in EOF):
>http://wodev.spearway.com/cgi-bin/WebObjects/WODev.woa/wa/Main?wikiPage=EODa
>tabaseContext.batchFetchRelationship
>
>
>Chuck
>
>
>At 09:45 PM 15/12/2003 -0500, Lenny Marks wrote:
>>Sorry, I'd gotten mixed up on which list this was from.
>>
>>On Monday, Dec 15, 2003, at 20:49 America/New_York, Lenny Marks wrote:
>>
>>> I had tracked it down in my case, see if this helps you any.
>>>
>>> http://www.omnigroup.com/mailman/archive/eof/2003-August/003393.html
>>
>>Of course the EOObjectStoreCoordinator should be manually locked and
>>unlocked in the code from that posting. (As originally pointed out by
>>Chuck if I remember correctly)
>>
>>-lenny
>>
>>EOObjectStoreCoordinator osc =
>>(EOObjectStoreCoordinator)ec.rootObjectStore();
>>
>>osc.lock();
>>try {
>> EODatabaseContext dbContext = (EODatabaseContext)
>> osc.objectStoreForObject(this);
>>
>> EOEntity correspondenceEntity =
>> EOUtilities.entityNamed(ec, "CorrespondenceEvent");
>>
>> EORelationship corrRelationship =
>> correspondenceEntity.relationshipNamed("correspondence");
>>
>> dbContext.batchFetchRelationship
>> (corrRelationship, correspondenceEvents, ec);
>>} finally {
>> osc.unlock();
>>}
>>
>>>
>>> On Sunday, Dec 14, 2003, at 12:08 America/New_York, Kaj Hejer wrote:
>>>
>>>> At 08:57 -0400 17-08-03, Lenny Marks wrote:
>>>>> I have a direct action to render all information for a specified
>>>>> 'Manuscript' in our database. The rendering of this page traces deep
>>>>> into
>>>>> the manuscript's relationships and was slow so I was attempting to
>>>>> use
>>>>> EODatabaseContext.batchFetchRelationship to limit the hits to the
>>>>> database. I added a method batchFetchManuscriptEvents(the root of
>>>>> the deep
>>>>> relationships) to my Manuscript EOEnterpriseObject class. I was
>>>>> hoping
>>>>> that the application could call this in anticipation of its
>>>>> particular
>>>>> display needs. The method would batchFetch all the relationships so
>>>>> that
>>>>> by the time the WOComponent was generating its response, all the
>>>>> relationships would have already been faulted. This actually worked,
>>>>> but
>>>>> only the first time the method is invoked on a Manuscript instance
>>>>> within
>>>>> a single EOF stack. The first time I access the direct action for a
>>>>> manuscript, it works, but if I hit reload I get the exception below.
>>>>>
>>>>> Any clues would be greatly appreciated!
>>>>>
>>>>> -Lenny Marks
>>>>>
>>>>> <ManView>[2003-08-17 07:49:16 EDT] <Thread-6>
>>>>> java.lang.NullPointerException
>>>>> at
>>>>> com.webobjects.eocontrol._EOMutableKnownKeyDictionary.<init>(_EOMutab
>>>>> leKnownKeyDictionary.java:90)
>>>>> at
>>>>> com.webobjects.eoaccess.EORelationship._foreignKeyForSourceRow(EORela
>>>>> tionship.java:1094)
> >>>
>>>>
>>>>
>>>>
>>>> Hi!
>>>>
>>>> I now saw the same exception when using prefetching.
>>>>
>>>> The stacktrace and the method where I get this exception can be found
> >>> at http://folk.uio.no/kajh/tmp/wo20031214.txt
>>>>
>>>> Has anybody else here seen this?
>>>>
>>>> The ec I use here is a childEC of session.defaulteditingContext and
>>>> this childEC has been locked.
>>>>
>>>> I have only managed to reproduced this issue two times while testing
>>>> this application for about an hour, so it seems that it does not
>>>> appear so very often.
>>>>
>>>>
>>>> -Kaj :)
>>>
>>> _______________________________________________
>>> WebObjects-dev mailing list
>>> [email protected]
>>> http://www.omnigroup.com/mailman/listinfo/webobjects-dev
>>
>>_______________________________________________
>>EOF mailing list
>>[email protected]
>>http://www.omnigroup.com/mailman/listinfo/eof
>>
>
>--
>
>Chuck Hill [email protected]
>Global Village Consulting Inc. http://www.global-village.net