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]



Reply via email to