Re: EOEditingContext.isDisposed() ... ?
Re: EOEditingContext.isDisposed() ... ?
- Subject: Re: EOEditingContext.isDisposed() ... ?
- From: Chuck Hill <email@hidden>
- Date: Fri, 3 Sep 2010 21:56:09 -0400
On Sep 3, 2010, at 7:16 PM, Farrukh Ijaz wrote:
> On 2010-09-04, at 2:04 AM, Chuck Hill wrote:
>> On Sep 3, 2010, at 2:53 PM, Farrukh Ijaz wrote:
>>
>>> Hi,
>>>
>>> Is there a way to check if the editingContext is disposed?
>>
>> There is, but it is not exposed.
>>
>>
>>> I guess there should be something called isDisposed(), it is useful for following scenario.
>>>
>>> private EOEditingContext _editingContext;
>>>
>>> public EOEditingContext editingContext() {
>>> if(_editingContext == null || _editingContext.isDisposed()) {
>>> _editingContext = ERXEC.newEditingContext();
>>> }
>>> return _editingContext;
>>> }
>>>
>>> This ensures that whenever the call is made to editingContext(), the editing context will be valid.
>>>
>>> Just a thought.
>>
>>
>> I can't think of a good coding practice that would want that code. dispose() is normally called by finalization. If you dispose of your ECs manually, earlier, you should either null the reference or replace the EC. That would be good coding practice. Keeping a reference to a disposed EC seems... undesirable.
>
> I've seen this in practice (good or bad I don't know) when we needed to process large amount of data and nullifying EC or replacing EC was not releasing the memory consumed by original EC (monitored using JConsole), the call to dispose() released the memory. What would be the reason then? Perhaps terribly bad code or are there any strong references to EC?
I did not say that calling dispose() was bad practice. I said that keeping a reference around to a disposed EC was bad practice. I can think of stronger words for it. :-)
What you should be doing:
...
if (haveProcessedALotOfObjects) {
_editingContext.dispose();
_editingContext = null;
}
...
public EOEditingContext editingContext() {
if(_editingContext == null) {
_editingContext = ERXEC.newEditingContext();
}
return _editingContext;
}
Simple, totally safe, and no need for additional API.
Chuck
--
Chuck Hill Senior Consultant / VP Development
Practical WebObjects - for developers who want to increase their overall knowledge of WebObjects or who are trying to solve specific problems.
http://www.global-village.net/products/practical_webobjects
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden