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 ?

LP

Reply via email to