Hi Holly, This sounds like a bug. I agree that "For reference-list callbacks, the service proxy is guaranteed to be available in the collection before a bind callback is invoked" strongly suggests that the new reference should have been injected before bind() was called.
Regards, Mark On 8 May 2011 13:55, Holly Cummins <[email protected]> wrote: > Hi all, > > I'm hitting a problem with reference listeners which feels like a mini-bug > to me, but I thought I'd see what everyone else thinks. I've got a bean with > a blueprint-injected reference list. The same bean also has a reference > listener. When the system is initializing, the bind() method is called > before the reference list has been injected. > > The specification says: "For reference-list callbacks, the service proxy is > guaranteed to be available in the collection before a bind callback > is invoked, and to remain in the collection until after an unbind callback > has completed." > > The specification doesn't actually say that anyone has to have been told > about the collection which is being modified, so technically our behaviour > is within the letter of the spec. However, it feels like the *intention* of > the specification is that if the bind() method is called consumers of the > service should have access to a collection which accurately represents the > final state of the reference list. > > On the other hand, relying on the system being in a particularly consistent > state during initialisation is obviously unwise, and against the more > general spirit of OSGi dynamism, so maybe what we're doing is perfectly > reasonable! > > What do people think? > > The code I'm using is: > > <bean id=*"thingAggregator" *class=*"..."*> > <property name=*"things"* ref=*"thinglist"* /> > </bean> > > <reference-list > id=*"thinglist"* > interface=*"Thing"*> > <reference-listener > ref=*"thingAggregator"* > bind-method=*"bind"*/> > </reference-list> > > > *public* *void* bind(Thing thing) { > System.out.println("DEBUG: bind called, things is " + > things); > } > > > Regards, > Holly > > -- > Holly Cummins > IBM Hursley, UK > [email protected] > > > > ------------------------------ > > * > * > > *Unless stated otherwise above: > IBM United Kingdom Limited - Registered in England and Wales with number > 741598. > Registered office: PO Box 41, North Harbour, Portsmouth, Hampshire PO6 3AU > * > > > > > > >
