From: "Chuck Daniels" <[EMAIL PROTECTED]> > > sc.add(""); > > Sends event OK - BUT eventCollection == oc. > > This is a problem, as if the listener then uses the collection, > > it will not > > be synchronized. Big problem. > > I don't think this will actually be a problem. If calls to sc are > synchronized, then anything that the listener does to the backing collection > (oc in this case) is still within the context of the synchronized call on > sc. Therefore, access to the backing collection is indirectly synchronized. > Or am I missing something here?
Intruiging. Yes, you are probably correct, so long as the listener operates in the same thread in a normal fashion. I was thinking of trying to spot if the ObservedCollection was being decorated and inform it, but maybe thats over zealous, and javadoc will do. Stephen > > ----- Original Message ----- > > From: "Michael Heuer" <[EMAIL PROTECTED]> > > To: "Jakarta Commons Developers List" <[EMAIL PROTECTED]> > > Cc: <[EMAIL PROTECTED]> > > Sent: Thursday, August 14, 2003 11:02 PM > > Subject: Re: [collections] NotifyingCollections - capturing rich > > non-uniform > > data > > > > > > > > > > On Thu, 14 Aug 2003, Stephen Colebourne wrote: > > > > > > > <snip> > > > > > > > > The biggest problem with all this is that the collection returned by > > > > getSource() on the event. If the observed collection is > > wrapped (eg. by > > a > > > > SyncronizedCollection) then getSource() SHOULD return the wrapped > > > > collection, but it can't as it doesn't know about it. This problem > > applies > > > > to all designs so far. > > > > > > Is this also a problem? It's general to all of the delegation > > > implementations. > > > > > > > > > private boolean heardChange = false; > > > > > > public void testChangeToBackingCollection() > > > { > > > Collection c = new ArrayList(); > > > ObservableCollection oc = CollectionUtils.observableCollection(c); > > > oc.addListener(new CollectionListener() > > > { > > > public void changed(CollectionEvent e) { heardChange = true; } > > > }); > > > > > > c.add("hello"); > > > > > > assertTrue("heardChange == true", heardChange == true); > > > } > > > > > > > > > I don't think it's possible to make this test pass -- just a > > > shortcoming of the wrapper design. That's why I was looking into > > > aspect-based implementations. > > > > > > michael > > > > > > > > > --------------------------------------------------------------------- > > > 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]