imo the correct fix is as follows:
..
// ECER: assure it will notify all being removed, necessary for RemovalAware classes...
if (isLoaded())
{
getData().clear();
}
..
otherwise the clear will fire a load.
jakob
Edson Carlos Ericksson Richter wrote:
Sorry, I don't wanna be boring...
Armin Waibel wrote:
Hi Edson,
I'm not familiar with the proxy stuff, so be patience...
[EMAIL PROTECTED] wrote:
Is this already in CVS? This fix is correct?
Thanks,
Edson Richter
After some research, I've found an implementation that works:
public void clear() { Collection coll;
if(getData()instanceof ManageableCollection) {
getData() will materialize the whole collection on each clear call. Is this the expected behaviour or should we check loading status before perfrom your changes?
regards, Armin
getData().clear(); // ECER: assure it will notify all being removed, necessary for RemovalAware classes... } else { // BRJ: use an empty collection so isLoaded will return true try { coll = (Collection) getCollectionClass().newInstance(); } catch (Exception e) { coll = new ArrayList(); } setData(coll); _size = 0; } }
Could someone cofirm/fix this in CVS?
Thanks,
Edson Richter
Edson Carlos Ericksson Richter wrote:
I think I and a co-worker (Igor) found a little bug in collection proxy. When using RemovalAware... as class for a collection descriptor, calling clear() in the collection don't register the objects for deletion. The answer is the clear implementation in CollectionProxyDefaultImpl:
public void clear() { Collection coll;
// BRJ: use an empty collection so isLoaded will return true try { coll = (Collection) getCollectionClass().newInstance(); } catch (Exception e) { coll = new ArrayList(); } setData(coll); _size = 0;
}
I think the right method should be:
public void clear() { Collection coll; getData().clear(); // ECER: assure it will notify all being removed, necessary for RemovalAware classes...
// BRJ: use an empty collection so isLoaded will return true try { coll = (Collection) getCollectionClass().newInstance(); } catch (Exception e) { coll = new ArrayList(); } setData(coll); _size = 0;
}
Could you analize and report if this is right?
Thanks,
Edson Richter
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]