Hi, It works like a charm by using a Dictionary (instead of a Map). Sorry for that, I should have seen this :) Thanks a lot !
Regards LP On Fri, Jun 18, 2010 at 5:57 PM, Clement Escoffier < clement.escoff...@gmail.com> wrote: > Hi, > > On 18.06.2010, at 17:02, Loic Petit wrote: > > > Hi everyone, > > > > I want to know if there is a "clean" way to do this thing. > > > > I've got a class with the following form: > > > > @Component > > @Provides > > class A { > > @Requires > > private B[] b; > > } > > > > This component is then created by the iPojo API via its factory. > > What I would like to do: give a ldap filter on the creation of the > instance > > in order to have the array that matches the filter. > > > > It is possible to do that offline by giving a filter in the annotation, > but > > it is impossible to have a dynamic one. > > > > As an example, I use felix/ipojo to manipulate UPnPDevice. I have a > generic > > component that operate on all the devices that matches the ID given by > the > > property. Here is how I could do it. > > > > class A { > > @Requires > > private UPnPDevice[] devices; > > @Property > > private String udn; > > > > public void foo() { > > for all devices that matches the udn { > > bar(); > > } > > } > > } > > > > But this is a bit silly as I subscribe for all kinds of devices and then > I > > do manually the filter while it is possible to subscribe to the context > that > > I want only that filter. The second way, of course, is to ignore iPojo > and > > subscribe on my own with a custom filter and also manage the list. > > > > It's not the first time I encounter this problem and iPojo has all the > tools > > to do such thing. Do you know a "clean" way to do it ? > > Each instance declaration can customize the dependency filters. > Let's imagine a component: > @Component > @Provides > class A { > @Requires(id="B") // I give a name to this dependency > private B[] b; > } > > Then, in the instance declaration, you can set / override the dependency > filter: > <instance component="...A"> > <property name="requires.filters"> <!-- special property to customize > the filters --> > <property name="B" value="(your_filter)"/> <!-- the filter here --> > </property> > </instance> > > (More details on > http://felix.apache.org/site/service-requirement-handler.html#ServiceRequirementHandler-FilteredRequirement > ) > > Unfortunately, this mechanism is only possible if you declare the instance > using the XML formalism or the iPOJO Factory service (API). Indeed, the > config admin does not support maps (requires.filters is a map). > > Regards, > > Clement > > > > > > LP > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: users-unsubscr...@felix.apache.org > For additional commands, e-mail: users-h...@felix.apache.org > >