Sorry for bothering you again....

I use iPOJO annotations like this:

*  @Component(name = "componentName", propagation = true, immediate = true)*
*  @Provides*
*  public class MyClass  {*


I tried the following cast:

*    InstanceManager im = (InstanceManager) this;*

where "this" is an instance of MyClass. The cast doesn't  work since
MyClass is not a sub class of InstanceManager. How do I get hold of a
component instance?

/Bengt




2012/11/28 Bengt Rodehav <[email protected]>

> Thanks a lot, will try this approach.
>
> /Bengt
>
>
> 2012/11/28 Clement Escoffier <[email protected]>
>
>> Hi,
>>
>> The DependencyModel is the parent class of all the iPOJO's service
>> dependencies.  So, the easiest way is to access to your service dependency:
>>
>> InstanceManager im = (InstanceManager) componentInstance;
>> DependencyHandler handler =
>> im.getHandler("org.apache.felix.ipojo:requires");
>> Dependencies[] deps = handler.getDependencies();
>> // Lookup your dependency from deps (by id, by specification…)
>> dep.setFilter(filter);
>>
>> Regards,
>>
>> Clement
>>
>>
>>
>>
>> On 28 nov. 2012, at 13:09, Bengt Rodehav <[email protected]> wrote:
>>
>> > Thanks for you reply Clement,
>> >
>> > So, the following should work (in principal)?
>> >
>> > *  @Property(name = "myProperty" mandatory = true)*
>> > *  public void setMyPropertey(String theProperty) {*
>> > *    // Calculate new filter based on myProperty*
>> > *    String filter = ....*
>> > *
>> > *
>> > *    // How do I get an instance of "DependencyModel"?*
>> > *    DependencyModel.setFilter(filter);*
>> > *  }*
>> >
>> > I've never used the DependencyModel class before. How do I gain access
>> to
>> > the correct instance? What maven artifact do I need for this?
>> >
>> > /Bengt
>> >
>> >
>> > 2012/11/28 Clement Escoffier <[email protected]>
>> >
>> >> Hi,
>> >>
>> >> Using the iPOJO API you can use 'setFilter' to update the LDAP filter
>> of a
>> >> dependency (DependencyModel.setFilter). When changed the set of bound
>> >> services is recomputed. Be aware that it may lead to an invalidation
>> of the
>> >> instance if no providers match the new filter.
>> >>
>> >> What we did in the past is to develop a handler receiving the new
>> >> properties, computing the new filter and applying it to the targeted
>> >> dependency.
>> >>
>> >> Regards,
>> >>
>> >> Clement
>> >>
>> >> On 27 nov. 2012, at 11:41, Bengt Rodehav <[email protected]> wrote:
>> >>
>> >>> I'm using the latest iPOJO version. I'm trying to use configuration
>> >>> properties (via config admin) to make my service wiring dynamic.
>> >>>
>> >>> I have handler services that expose service properties (that tells the
>> >>> world what they can handle). The consumer of these services uses
>> @Require
>> >>> with an LDAP filter to specify what needs to be handled and thus limit
>> >> what
>> >>> handlers can be used.
>> >>>
>> >>> But, I want the LDAP filter to be dynamic so that I can wire up
>> service
>> >>> providers with service consumers by configuration properties on the
>> >>> consumers and providers.
>> >>>
>> >>> I've tried to buld the LDAP filter dynamically (using a configurable
>> >>> property) but I get the compilation error:
>> >>>
>> >>> *  The value for annotation attribute Requires.filter must be a
>> constant
>> >>> expression*
>> >>>
>> >>> I was hoping that if I changed a configuration property, iPOJO would
>> >>> refresh its list of provider services to match the changed LDAP
>> filter.
>> >>>
>> >>> How can I accomplish what I want? Is there a best practice?
>> >>>
>> >>> /Bengt
>> >>
>> >>
>> >> ---------------------------------------------------------------------
>> >> 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