Not yet, was travelling (finally back to my office). Will check today or 
tomorrow.
Actually, your use case make me think to a very interesting application I’m 
working on. So, for sure you will get news soon.

Regards,

Clement

On 6 déc. 2013, at 15:25, Bengt Rodehav <[email protected]> wrote:

> Did you have any chance to check this Clement?
> 
> /Bengt
> 
> 
> 2013/12/3 Clement Escoffier <[email protected]>
> 
>> 
>> On 3 déc. 2013, at 19:23, Bengt Rodehav <[email protected]> wrote:
>> 
>>> Yes, I think I'm getting close now but it's been a bit more complicated
>>> than I expected. I learn a lot about iPojo though.
>>> 
>>> About triggering a re-compute...
>>> 
>>> In my case The set of accepted services will not change. But my propety
>>> "extenders" has changed so The services must still be recomputed. I need
>> to
>>> force it.
>> 
>> Then calling mDependencyModel.invalidateSelectedServices() should make it
>> work. I will check why it’s not called.
>> 
>> Regards,
>> 
>> Clement
>> 
>>> 
>>> /Bengt
>>> Den 3 dec 2013 17:32 skrev "Clement Escoffier" <
>> [email protected]
>>>> :
>>> 
>>>> Hi,
>>>> 
>>>> It looks you are making great progresses.
>>>> 
>>>> On 3 déc. 2013, at 17:13, Bengt Rodehav <[email protected]> wrote:
>>>> 
>>>>> Thanks Clement,
>>>>> 
>>>>> When I started using the bundle context retrieved using:
>>>>> 
>>>>> BundleContext bc = model.getComponentInstance().getContext();
>>>>> 
>>>>> then it started to work even without using the "getWrappedReference()".
>>>> Not
>>>>> sure why but it does work.
>>>> 
>>>> Yes, the bundle context retrieved this way is an ‘iPOJO-aware’ bundle
>>>> context, aware of the transformation aspect.
>>>> 
>>>>> 
>>>>> I've now added a configuration listener in the open() method that I
>>>> remove
>>>>> in the close() method. The notifications seem to work as well.
>>>>> 
>>>>> In my  listener I try to trigger a recomputing of the service
>>>> dependencies
>>>>> (that I currently now do in the "getServiceReferences()" method as
>>>> follows:
>>>>> 
>>>>>      mDependencyModel.invalidateMatchingServices();
>>>>>      mDependencyModel.invalidateSelectedServices();
>>>>> 
>>>>> This seems to trigger a new call to accept() but no call to
>>>>> getServiceReferences(). How can I accomplish that?
>>>> 
>>>> First, I think that the first call would be enough. If the set of
>> accepted
>>>> services change, then the getServiceReferences should be called.
>>>> 
>>>> Clement
>>>> 
>>>>> 
>>>>> /Bengt
>>>>> 
>>>>> 
>>>>> 2013/12/3 Clement Escoffier <[email protected]>
>>>>> 
>>>>>> Hi,
>>>>>> 
>>>>>> The error is ‘expected’ as interceptors are dealing with transformed
>>>>>> service references and not (genuine) service references. Try to use
>>>>>> `transformed.getWrappedReference()` to retrieve the original
>> reference.
>>>>>> 
>>>>>> Regards,
>>>>>> 
>>>>>> Clement
>>>>>> 
>>>>>> On 3 déc. 2013, at 10:57, Bengt Rodehav <[email protected]> wrote:
>>>>>> 
>>>>>>> I've tried something like this:
>>>>>>> 
>>>>>>> BundleContext bundleContext =
>>>>>>> FrameworkUtil.getBundle(IRouteExtender.class).getBundleContext();
>>>>>>> 
>>>>>>> for (ServiceReference ref : theMatchingRefs) {
>>>>>>> IRouteExtender extender = (IRouteExtender)
>>>>>> bundleContext.getService(ref);
>>>>>>> // Causes exception
>>>>>>> System.out.println("Found extender with id: " +
>>>>>> extender.getExtenderId());
>>>>>>> }
>>>>>>> 
>>>>>>> But I get the following exception:
>>>>>>> 
>>>>>>> ERROR: Bundle se.digia.connect.services.generic.service [164]
>>>>>>> EventDispatcher: Error during dispatch.
>> (java.lang.ClassCastException:
>>>>>>> 
>> org.apache.felix.ipojo.dependency.impl.TransformedServiceReferenceImpl
>>>>>>> cannot be cast to
>>>>>>> 
>>>> org.apache.felix.framework.ServiceRegistrationImpl$ServiceReferenceImpl)
>>>>>>> java.lang.ClassCastException:
>>>>>>> 
>> org.apache.felix.ipojo.dependency.impl.TransformedServiceReferenceImpl
>>>>>>> cannot be cast to
>>>>>>> 
>> org.apache.felix.framework.ServiceRegistrationImpl$ServiceReferenceImpl
>>>>>>>     at
>>>>>>> 
>>>>>> 
>>>> 
>> org.apache.felix.framework.ServiceRegistry.getService(ServiceRegistry.java:250)
>>>>>>>     at org.apache.felix.framework.Felix.getService(Felix.java:3420)
>>>>>>>     at
>>>>>>> 
>>>>>> 
>>>> 
>> org.apache.felix.framework.BundleContextImpl.getService(BundleContextImpl.java:468)
>>>>>>>     at
>>>>>>> 
>>>>>> 
>>>> 
>> se.digia.connect.service.generic.service.ExtenderInterceptor.__M_calculateExtenders(ExtenderInterceptor.java:104)
>>>>>>>     at
>>>>>>> 
>>>>>> 
>>>> 
>> se.digia.connect.service.generic.service.ExtenderInterceptor.calculateExtenders(ExtenderInterceptor.java)
>>>>>>>     at
>>>>>>> 
>>>>>> 
>>>> 
>> se.digia.connect.service.generic.service.ExtenderInterceptor.__M_getServiceReferences(ExtenderInterceptor.java:84)
>>>>>>>     at
>>>>>>> 
>>>>>> 
>>>> 
>> se.digia.connect.service.generic.service.ExtenderInterceptor.getServiceReferences(ExtenderInterceptor.java)
>>>>>>>     at
>>>>>>> 
>>>>>> 
>>>> 
>> org.apache.felix.ipojo.dependency.interceptors.DefaultServiceRankingInterceptor.onServiceArrival(DefaultServiceRankingInterceptor.java:61)
>>>>>>>     at
>>>>>>> 
>>>>>> 
>>>> 
>> org.apache.felix.ipojo.dependency.impl.ServiceReferenceManager.applyRankingOnArrival(ServiceReferenceManager.java:559)
>>>>>>>     at
>>>>>>> 
>>>>>> 
>>>> 
>> org.apache.felix.ipojo.dependency.impl.ServiceReferenceManager.onNewMatchingService(ServiceReferenceManager.java:510)
>>>>>>>     at
>>>>>>> 
>>>>>> 
>>>> 
>> org.apache.felix.ipojo.dependency.impl.ServiceReferenceManager.addedService(ServiceReferenceManager.java:496)
>>>>>>>     at
>>>>>>> 
>>>> 
>> org.apache.felix.ipojo.util.Tracker$Tracked.trackAdding(Tracker.java:711)
>>>>>>>     at
>>>>>>> org.apache.felix.ipojo.util.Tracker$Tracked.track(Tracker.java:672)
>>>>>>>     at
>>>>>>> 
>>>>>> 
>>>> 
>> org.apache.felix.ipojo.util.Tracker$Tracked.serviceChanged(Tracker.java:633)
>>>>>>>     at
>>>>>>> 
>>>>>> 
>>>> 
>> org.apache.felix.framework.util.EventDispatcher.invokeServiceListenerCallback(EventDispatcher.java:932)
>>>>>>>     at
>>>>>>> 
>>>>>> 
>>>> 
>> org.apache.felix.framework.util.EventDispatcher.fireEventImmediately(EventDispatcher.java:793)
>>>>>>>     at
>>>>>>> 
>>>>>> 
>>>> 
>> org.apache.felix.framework.util.EventDispatcher.fireServiceEvent(EventDispatcher.java:543)
>>>>>>>     at
>>>>>>> org.apache.felix.framework.Felix.fireServiceEvent(Felix.java:4260)
>>>>>>>     at
>>>>>> org.apache.felix.framework.Felix.registerService(Felix.java:3275)
>>>>>>>     at
>>>>>>> 
>>>>>> 
>>>> 
>> org.apache.felix.framework.BundleContextImpl.registerService(BundleContextImpl.java:346)
>>>>>>>     at
>>>>>>> 
>>>>>> 
>>>> 
>> org.apache.felix.ipojo.IPojoContext.registerService(IPojoContext.java:395)
>>>>>>>     at
>>>>>>> 
>>>>>> 
>>>> 
>> org.apache.felix.ipojo.handlers.providedservice.ProvidedService.registerService(ProvidedService.java:338)
>>>>>>>     at
>>>>>>> 
>>>>>> 
>>>> 
>> org.apache.felix.ipojo.handlers.providedservice.ProvidedServiceHandler.__M_stateChanged(ProvidedServiceHandler.java:484)
>>>>>>>     at
>>>>>>> 
>>>>>> 
>>>> 
>> org.apache.felix.ipojo.handlers.providedservice.ProvidedServiceHandler.stateChanged(ProvidedServiceHandler.java)
>>>>>>>     at
>>>>>>> 
>>>> 
>> org.apache.felix.ipojo.InstanceManager.setState(InstanceManager.java:536)
>>>>>>>     at
>>>>>>> 
>> org.apache.felix.ipojo.InstanceManager.start(InstanceManager.java:418)
>>>>>>>     at
>>>>>>> 
>>>>>> 
>>>> 
>> org.apache.felix.ipojo.ComponentFactory.createInstance(ComponentFactory.java:179)
>>>>>>>     at
>>>>>>> 
>>>>>> 
>>>> 
>> org.apache.felix.ipojo.IPojoFactory.createComponentInstance(IPojoFactory.java:319)
>>>>>>>     at
>>>>>>> 
>>>>>> 
>>>> 
>> org.apache.felix.ipojo.IPojoFactory.createComponentInstance(IPojoFactory.java:240)
>>>>>>>     at
>>>>>>> org.apache.felix.ipojo.IPojoFactory.updated(IPojoFactory.java:737)
>>>>>>>     at
>>>>>>> 
>>>>>> 
>>>> 
>> org.apache.felix.ipojo.ConfigurationTracker.registerFactory(ConfigurationTracker.java:100)
>>>>>>>     at
>>>>>>> 
>>>>>> 
>>>> 
>> org.apache.felix.ipojo.IPojoFactory.computeFactoryState(IPojoFactory.java:846)
>>>>>>>     at
>>>>>>> 
>>>>>> 
>>>> 
>> org.apache.felix.ipojo.ComponentFactory.addedService(ComponentFactory.java:400)
>>>>>>>     at
>>>>>>> 
>>>> 
>> org.apache.felix.ipojo.util.Tracker$Tracked.trackAdding(Tracker.java:711)
>>>>>>>     at
>>>>>>> 
>>>>>> 
>>>> 
>> org.apache.felix.ipojo.util.Tracker$Tracked.trackInitialServices(Tracker.java:596)
>>>>>>>     at org.apache.felix.ipojo.util.Tracker.open(Tracker.java:210)
>>>>>>>     at
>>>>>>> 
>>>>>> 
>>>> 
>> org.apache.felix.ipojo.ComponentFactory.starting(ComponentFactory.java:249)
>>>>>>>     at
>>>>>> org.apache.felix.ipojo.IPojoFactory.start(IPojoFactory.java:671)
>>>>>>>     at
>>>>>>> 
>>>>>> 
>>>> 
>> org.apache.felix.ipojo.extender.internal.linker.ManagedType$ExtensionSupport$1.call(ManagedType.java:229)
>>>>>>>     at
>>>>>>> 
>>>>>> 
>>>> 
>> org.apache.felix.ipojo.extender.internal.linker.ManagedType$ExtensionSupport$1.call(ManagedType.java:216)
>>>>>>>     at
>>>>>>> 
>>>>>> 
>>>> 
>> org.apache.felix.ipojo.extender.internal.queue.JobInfoCallable.call(JobInfoCallable.java:114)
>>>>>>>     at
>>>>>>> java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
>>>>>>>     at java.util.concurrent.FutureTask.run(FutureTask.java:138)
>>>>>>>     at
>>>>>>> 
>>>>>> 
>>>> 
>> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
>>>>>>>     at
>>>>>>> 
>>>>>> 
>>>> 
>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
>>>>>>>     at java.lang.Thread.run(Thread.java:662)
>>>>>>> 
>>>>>>> Any ideas?
>>>>>>> 
>>>>>>> BTW, the exception is only logged in the console - not in any log
>>>> files.
>>>>>>> 
>>>>>>> /Bengt
>>>>>>> 
>>>>>>> 
>>>>>>> 
>>>>>>> 
>>>>>>> 2013/12/3 Bengt Rodehav <[email protected]>
>>>>>>> 
>>>>>>>> I've now tested against trunk and I've come a lot further. Another
>>>>>>>> question for you...
>>>>>>>> 
>>>>>>>> I need access to my service object in the getServiceReferences()
>>>> method.
>>>>>>>> It is possible if I have the BundleContext. In the accept() method I
>>>> get
>>>>>>>> the BundleContext passed as a parameter but not in the
>>>>>>>> getServiceReferences(). Why is that?
>>>>>>>> 
>>>>>>>> How can I access the service object from the ServiceReference in the
>>>>>>>> getServiceReferences() method? Perhaps the signature of the
>>>>>>>> getServiceReferences() method should be changed to take a
>>>> BundleContext
>>>>>> as
>>>>>>>> well?
>>>>>>>> 
>>>>>>>> /Bengt
>>>>>>>> 
>>>>>>>> 
>>>>>>>> 2013/11/29 Bengt Rodehav <[email protected]>
>>>>>>>> 
>>>>>>>>> Thanks Clement. I'll check out trunk and see how far I'll get.
>>>>>>>>> 
>>>>>>>>> /Bengt
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> 2013/11/29 Clement Escoffier <[email protected]>
>>>>>>>>> 
>>>>>>>>>> Hi,
>>>>>>>>>> On 29 nov. 2013, at 16:21, Bengt Rodehav <[email protected]>
>> wrote:
>>>>>>>>>> 
>>>>>>>>>>> Thanks Clement!
>>>>>>>>>>> 
>>>>>>>>>>> I compared our code it turns out I had a type: I had specified
>> the
>>>>>>>>>> handler
>>>>>>>>>>> to "org.apache.felix.ipojo.properties" instead of
>>>>>>>>>>> "org.apache.felix.ipojo:properties".. I had a period instead of a
>>>>>>>>>> colon.
>>>>>>>>>>> That explains my NPE.
>>>>>>>>>> 
>>>>>>>>>> I probably did a mistake while explaining. The syntax is
>>>>>>>>>> namespace:handlername.
>>>>>>>>>> 
>>>>>>>>>>> 
>>>>>>>>>>> Now I can also retrieve the property. I can also call the
>>>> getValue()
>>>>>>>>>> method
>>>>>>>>>>> that returns the value in "toString" format. Can't get the
>>>>>>>>>> getObjectValue()
>>>>>>>>>>> to work though. Looking forward to the new getCurrentValue()
>>>> method.
>>>>>>>>>> 
>>>>>>>>>> Unfortunately the getObjectValue only work for immutable
>> properties.
>>>>>>>>>> 
>>>>>>>>>>> 
>>>>>>>>>>> Is it just the org.apache.felix.ipojo artifact I need to check
>> out
>>>>>> and
>>>>>>>>>>> build on trunk?
>>>>>>>>>> 
>>>>>>>>>> The following version contains the new method:
>>>>>>>>>> 
>>>>>>>>>> 
>>>>>> 
>>>> 
>> https://repository.apache.org/content/repositories/snapshots/org/apache/felix/org.apache.felix.ipojo/1.11.1-SNAPSHOT/org.apache.felix.ipojo-1.11.1-20131129.182110-3.jar
>>>>>>>>>> 
>>>>>>>>>> Clement
>>>>>>>>>> 
>>>>>>>>>>> 
>>>>>>>>>>> /Bengt
>>>>>>>>>>> 
>>>>>>>>>>> 
>>>>>>>>>>> 
>>>>>>>>>>> 
>>>>>>>>>>> 2013/11/29 Clement Escoffier <[email protected]>
>>>>>>>>>>> 
>>>>>>>>>>>> Hi,
>>>>>>>>>>>> 
>>>>>>>>>>>> I’ve done some testing:
>>>>>>>>>>>> 
>>>>>>>>>>>> 1) I’m able to retrieve the properties
>>>>>>>>>>>> 2) I’m not able to retrieve the value
>>>>>>>>>>>> 
>>>>>>>>>>>> Here is my accept method:
>>>>>>>>>>>> 
>>>>>>>>>>>> @Override
>>>>>>>>>>>> public <S> TransformedServiceReference<S> accept(DependencyModel
>>>>>>>>>>>> dependency, BundleContext context,
>> TransformedServiceReference<S>
>>>>>>>>>> ref) {
>>>>>>>>>>>>    ConfigurationHandlerDescription h =
>>>>>>>>>>>> (ConfigurationHandlerDescription)
>>>>>>>>>>>> dependency.getComponentInstance().getInstanceDescription()
>>>>>>>>>>>> 
>>>>>>>>>>>> .getHandlerDescription("org.apache.felix.ipojo:properties");
>>>>>>>>>>>> 
>>>>>>>>>>>>    if (h == null) {
>>>>>>>>>>>>        return null;
>>>>>>>>>>>>    }
>>>>>>>>>>>> 
>>>>>>>>>>>>    PropertyDescription description =
>>>>>>>>>> h.getPropertyByName(“extenders");
>>>>>>>>>>>>    if (description == null) {
>>>>>>>>>>>>        return null;
>>>>>>>>>>>>    }
>>>>>>>>>>>> 
>>>>>>>>>>>>    System.out.println(description.getValue() + " / " +
>>>>>>>>>>>> Arrays.toString(
>>>>>>>>>>>>            (String[]) description.getCurrentValue()));
>>>>>>>>>>>> 
>>>>>>>>>>>>    return ref;
>>>>>>>>>>>> }
>>>>>>>>>>>> 
>>>>>>>>>>>> I’ve added the getCurrentValue() to PropertyDescription to
>>>> retrieve
>>>>>>>>>> the
>>>>>>>>>>>> current property value (gonna commit this ASAP).
>>>>>>>>>>>> (full code here: https://gist.github.com/cescoffier/7705901)
>>>>>>>>>>>> 
>>>>>>>>>>>> Clement
>>>>>>>>>>>> 
>>>>>>>>>>>> On 28 nov. 2013, at 15:06, Bengt Rodehav <[email protected]>
>>>> wrote:
>>>>>>>>>>>> 
>>>>>>>>>>>>> Thanks!
>>>>>>>>>>>>> 
>>>>>>>>>>>>> 
>>>>>>>>>>>>> 2013/11/28 Clement Escoffier <[email protected]>
>>>>>>>>>>>>> 
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> On 28 nov. 2013, at 14:36, Bengt Rodehav <[email protected]>
>>>>>> wrote:
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> Hello Clement,
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> I changed to the following line:
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>  PropertyDescription[] propDescs =
>>>>>>>>>>>>>>> configHandlerDescription.getProperties();
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> But I still get an NPE. Have you tried to call these methods
>>>> from
>>>>>>>>>>>> within
>>>>>>>>>>>>>> an
>>>>>>>>>>>>>>> interceptor?
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> Not this method, but I did something pretty similar. Will
>>>>>>>>>> investigate to
>>>>>>>>>>>>>> see why you get an NPE.
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> Clement
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> /Bengt
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> 2013/11/28 Clement Escoffier <[email protected]>
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> On 28 nov. 2013, at 12:17, Bengt Rodehav <[email protected]
>>> 
>>>>>>>>>> wrote:
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>> Hello again Clement!
>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>> I was away on business yesterday which is why I'm late
>>>>>> replying.
>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>> I've come a bit further now but still have problems
>> accessing
>>>>>> my
>>>>>>>>>>>>>>>>> component's "extenders" property. Here is what my code
>> looks
>>>>>> like
>>>>>>>>>>>> now:
>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>> *  public List<ServiceReference>
>>>>>>>>>> getServiceReferences(DependencyModel
>>>>>>>>>>>>>>>>> theDependencyModel,*
>>>>>>>>>>>>>>>>> *      List<ServiceReference> theMatching) {*
>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>> *    ComponentInstance instance =
>>>>>>>>>>>>>>>>> theDependencyModel.getComponentInstance();*
>>>>>>>>>>>>>>>>> *    InstanceDescription instanceDescription =
>>>>>>>>>>>>>>>>> instance.getInstanceDescription();*
>>>>>>>>>>>>>>>>> *    ComponentTypeDescription componentTypeDescription =
>>>>>>>>>>>>>>>>> instanceDescription.getComponentDescription();*
>>>>>>>>>>>>>>>>> *    String factoryName =
>>>>>>>>>>>>>>>>> componentTypeDescription.getFactory().getFactoryName();*
>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>> *    if (FACTORY_NAME.equals(factoryName)) {*
>>>>>>>>>>>>>>>>> *      System.out.println("Found a GenericService2");*
>>>>>>>>>>>>>>>>> *      ConfigurationHandlerDescription
>>>>>> configHandlerDescription =
>>>>>>>>>>>>>>>>> (ConfigurationHandlerDescription) instanceDescription*
>>>>>>>>>>>>>>>>> *
>>>>>>>>>>>>>> .getHandlerDescription("org.apache.felix.ipojo.properties");*
>>>>>>>>>>>>>>>>> *      int state = instanceDescription.getState();*
>>>>>>>>>>>>>>>>> *      System.out.println("State: " + state);*
>>>>>>>>>>>>>>>>> *      if(ComponentInstance.VALID ==
>>>>>>>>>> instanceDescription.getState())
>>>>>>>>>>>> {*
>>>>>>>>>>>>>>>>> *        PropertyDescription propDesc =
>>>>>>>>>>>>>>>>> configHandlerDescription.getPropertyByName("extenders"); //
>>>>>> NPE*
>>>>>>>>>>>>>>>>> *        if(propDesc != null) {*
>>>>>>>>>>>>>>>>> *          String extenders = propDesc.getValue();*
>>>>>>>>>>>>>>>>> *          System.out.println("Extenders: " + extenders);*
>>>>>>>>>>>>>>>>> *        }*
>>>>>>>>>>>>>>>>> *        else {*
>>>>>>>>>>>>>>>>> *          System.out.println("Extenders is null");*
>>>>>>>>>>>>>>>>> *        }*
>>>>>>>>>>>>>>>>> *      }*
>>>>>>>>>>>>>>>>> *    }*
>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>> I check the factory name to determine if this is a
>> component
>>>>>>>>>> that I
>>>>>>>>>>>>>>>> should
>>>>>>>>>>>>>>>>> intercept. Presently I wait until the component is valid
>> but
>>>>>> I'm
>>>>>>>>>> not
>>>>>>>>>>>>>> sure
>>>>>>>>>>>>>>>>> if I can wait since my interceptor has to kick in before
>>>> that.
>>>>>>>>>>>>>> Presently
>>>>>>>>>>>>>>>> I
>>>>>>>>>>>>>>>>> get a null pointer exception when I try to retrieve my
>>>>>> property.
>>>>>>>>>> Do
>>>>>>>>>>>> you
>>>>>>>>>>>>>>>>> have any idea why? It doesn't seem possible to retrieve
>>>>>>>>>> properties at
>>>>>>>>>>>>>>>> this
>>>>>>>>>>>>>>>>> pont.
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> Did you try to inter ate over the set of properties and see
>>>> what
>>>>>>>>>> are
>>>>>>>>>>>>>> they ?
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>> I also noticed that the method
>> PropertyDescription.getValue()
>>>>>>>>>> always
>>>>>>>>>>>>>>>>> returns a String. In my case the underlying object is an
>>>> array
>>>>>> of
>>>>>>>>>>>>>> String
>>>>>>>>>>>>>>>>> (String[]). Is it possible to get the value in the correct
>>>>>> type?
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> Yes, there is a getObjectValue(BundleContext context)
>> method,
>>>>>> but
>>>>>>>>>> you
>>>>>>>>>>>>>> need
>>>>>>>>>>>>>>>> to give a bundle context object used if it needs to load
>>>>>> classes.
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> Clement
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>> /Bengt
>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>> 2013/11/27 Clement Escoffier <[email protected]>
>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>> Hi,
>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>> On 26 nov. 2013, at 16:00, Bengt Rodehav <
>> [email protected]
>>>>> 
>>>>>>>>>> wrote:
>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>> I'm getting a bit closer regarding the interceptors.
>> Still
>>>>>> two
>>>>>>>>>>>>>> problems
>>>>>>>>>>>>>>>>>> for
>>>>>>>>>>>>>>>>>>> me:
>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>> a) I still don't understand how to get hold of my
>>>> intercepted
>>>>>>>>>>>>>> instance
>>>>>>>>>>>>>>>>>> from
>>>>>>>>>>>>>>>>>>> within my interceptor. I get a reference to a
>>>> DependencyModel
>>>>>>>>>> from
>>>>>>>>>>>>>>>> which
>>>>>>>>>>>>>>>>>> I
>>>>>>>>>>>>>>>>>>> can get a ComponentInstance. But how do I go from there
>> to
>>>> my
>>>>>>>>>>>>>>>> ComponentA
>>>>>>>>>>>>>>>>>>> class. I need to access the property "extenders" in order
>>>> for
>>>>>>>>>> my
>>>>>>>>>>>>>>>>>>> interceptor to do its job.
>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>> It depends how how is managed the extender property, let’s
>>>>>>>>>> imagine
>>>>>>>>>>>>>> it’s
>>>>>>>>>>>>>>>> a
>>>>>>>>>>>>>>>>>> @Property. In this case, from the Dependency Model, you
>> can
>>>>>>>>>> retrieve
>>>>>>>>>>>>>> the
>>>>>>>>>>>>>>>>>> component instance. From the instance, you have access to
>>>> the
>>>>>>>>>>>>>>>> introspection
>>>>>>>>>>>>>>>>>> layer (getInstanceDescription()), which let you analyze
>> the
>>>>>>>>>> iPOJO
>>>>>>>>>>>>>>>> container.
>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>> To be a bit more clear, let’s see some code:
>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>> //First retrieve the configuration handler description
>> from
>>>>>> the
>>>>>>>>>>>>>> instance
>>>>>>>>>>>>>>>>>> container:
>>>>>>>>>>>>>>>>>> ConfigurationHandlerDescription description =
>>>>>>>>>>>>>>>>>> (ConfigurationHandlerDescription)
>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> 
>>>>>>>>>>>> 
>>>>>>>>>> 
>>>>>> 
>>>> 
>> model.getComponentInstance().getInstanceDescription().getHandlerDescription("org.apache.felix.ipojo.properties”);
>>>>>>>>>>>>>>>>>> // Find the extenders property
>>>>>>>>>>>>>>>>>> String extenders =
>>>>>>>>>>>>>>>> description.getPropertyByName("extenders").getValue();
>>>>>>>>>>>>>>>>>> // You have your value !
>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>> b) Also, when the property "extenders" is changed, I need
>>>> to
>>>>>>>>>> force
>>>>>>>>>>>>>> the
>>>>>>>>>>>>>>>>>>> interceptor to recalculate the dependencies. How can I
>>>>>>>>>> accomplish
>>>>>>>>>>>>>> that?
>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>> It also depends on how this reconfiguration happen. Let’s
>>>> say
>>>>>>>>>> that
>>>>>>>>>>>> the
>>>>>>>>>>>>>>>>>> instance is reconfigured from the configuration admin or
>>>> iPOJO
>>>>>>>>>>>>>>>>>> reconfiguration abilities. In these case being notified is
>>>>>> quite
>>>>>>>>>>>>>>>> simple, as
>>>>>>>>>>>>>>>>>> you can register a ConfigurationListener on the
>>>>>>>>>>>>>>>>>> ConfigurationHandlerDescription object:
>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>> description.addListener(new ConfigurationListener() {
>>>>>>>>>>>>>>>>>>     public void configurationChanged(ComponentInstance
>>>>>>>>>>>> instance,
>>>>>>>>>>>>>>>>>> Map<String, Object> configuration) {
>>>>>>>>>>>>>>>>>>         // The extender property may have been modified
>>>>>>>>>>>>>>>>>>     }
>>>>>>>>>>>>>>>>>> });
>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>> Don’t forget to unregister the listener when the
>> interceptor
>>>>>> is
>>>>>>>>>>>>>>>> unplugged
>>>>>>>>>>>>>>>>>> from the instance.
>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>> Getting deeper into iPojo than I've been before…
>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>> It’s just the beginning…. (contributions are welcome if
>> you
>>>>>> see
>>>>>>>>>> some
>>>>>>>>>>>>>>>>>> dark(er) area)
>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>> /Bengt
>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>> 2013/11/26 Bengt Rodehav <[email protected]>
>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>> Thanks Clement!
>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>> 2013/11/26 Clement Escoffier <
>> [email protected]
>>>>> 
>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>> Hi,
>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>> On 25 nov. 2013, at 20:19, Bengt Rodehav <
>>>>>> [email protected]>
>>>>>>>>>>>>>> wrote:
>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>> Hello Clement and as always thanks for your detailed
>>>>>> answer!
>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>> You’re welcome.
>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>> It does seem a bit complicated to "require" an
>>>>>> interceptor.
>>>>>>>>>>>>>> Perhaps
>>>>>>>>>>>>>>>> an
>>>>>>>>>>>>>>>>>>>>>> easier way of doing this might be possible in the
>>>> future.
>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>> I think it would be a good addition. Thinking about it.
>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>> Anyway, I'm not
>>>>>>>>>>>>>>>>>>>>>> exactly sure that I understood what you meant. Just to
>>>>>>>>>> clarify:
>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>> My Component A (the component to be intercepted) has
>> the
>>>>>>>>>>>> following
>>>>>>>>>>>>>>>>>> code:
>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>> @Property(name = "extenders", mandatory = false)
>>>>>>>>>>>>>>>>>>>>>> private String[] mExtenderIds;
>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>> @Requires(optional = true, id = "extenders")
>>>>>>>>>>>>>>>>>>>>>> private IExtender[] mExtenders;
>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>> Do you mean that I should put a filter on the
>> @Requires
>>>>>> with
>>>>>>>>>>>>>>>>>>>>> id="extenders"
>>>>>>>>>>>>>>>>>>>>>> (the intercepted = true) so that it can only be
>>>> satisfied
>>>>>>>>>> if my
>>>>>>>>>>>>>>>>>>>>> interceptor
>>>>>>>>>>>>>>>>>>>>>> has added that property?
>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>> Exactly.
>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>> But how do I then handle the situation where my
>>>> Component
>>>>>> A
>>>>>>>>>> does
>>>>>>>>>>>>>> not
>>>>>>>>>>>>>>>>>>>>>> require any extenders? In that case I was planning on
>>>>>>>>>> setting
>>>>>>>>>>>> the
>>>>>>>>>>>>>>>>>>>>>> dependency to optional to make my instance valid
>> without
>>>>>> any
>>>>>>>>>>>>>>>>>> extenders.
>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>> Or, perhaps I could first set the @Requires to
>> mandatory
>>>>>>>>>> (with
>>>>>>>>>>>> the
>>>>>>>>>>>>>>>>>>>>> filter):
>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>> @Requires(optional = false, id = "extenders",
>>>>>>>>>>>>>>>>>>>>> filter="(intercepted=true)")
>>>>>>>>>>>>>>>>>>>>>> private IExtender[] mExtenders;
>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>> Then, if my interceptor sees that the instance does
>> not
>>>>>>>>>> require
>>>>>>>>>>>>>> any
>>>>>>>>>>>>>>>>>>>>>> extenders it can set the dependency to become
>> optional.
>>>>>> This
>>>>>>>>>>>> way I
>>>>>>>>>>>>>>>>>> both
>>>>>>>>>>>>>>>>>>>>>> require the interceptor (via the filter) and I ensure
>>>> that
>>>>>>>>>> the
>>>>>>>>>>>>>> only
>>>>>>>>>>>>>>>>>> way
>>>>>>>>>>>>>>>>>>>>> to
>>>>>>>>>>>>>>>>>>>>>> allow the instance to be valid without the dependency
>> is
>>>>>> if
>>>>>>>>>> the
>>>>>>>>>>>>>>>>>>>>> interceptor
>>>>>>>>>>>>>>>>>>>>>> has explicitly set the dependency to optional.
>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>> That would work. You can change the optionality status
>> of
>>>>>> the
>>>>>>>>>>>>>>>>>> dependency
>>>>>>>>>>>>>>>>>>>>> from the dependency model you get in the interceptor.
>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>> Regards,
>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>> Clement
>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>> /Bengt
>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>> 2013/11/25 Clement Escoffier <
>>>> [email protected]
>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>>> Hi,
>>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>>> On 25 nov. 2013, at 11:04, Bengt Rodehav <
>>>>>>>>>> [email protected]>
>>>>>>>>>>>>>>>> wrote:
>>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>>>> I've started to investigate using iPojo
>> interceptors.
>>>>>> I'm
>>>>>>>>>>>> using
>>>>>>>>>>>>>>>>>> iPojo
>>>>>>>>>>>>>>>>>>>>>>>> version 1.11.0. I want to accomplish the following:
>>>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>>>> Component A can be "extended" by specifying a list
>> of
>>>>>>>>>>>> (required)
>>>>>>>>>>>>>>>>>>>>>>>> "extenders" (actually their id's), like this:
>>>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>>>> @Property(name = "extenders", mandatory = false)
>>>>>>>>>>>>>>>>>>>>>>>> private String[] mExtenderIds;
>>>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>>>> @Requires(optional = true, id = "extenders")
>>>>>>>>>>>>>>>>>>>>>>>> private IExtender[] mExtenders;
>>>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>>>> The property is optional but if any extenderId's are
>>>>>>>>>> listed
>>>>>>>>>>>> then
>>>>>>>>>>>>>>>> the
>>>>>>>>>>>>>>>>>>>>>>>> @Requires should require that IExtender's with the
>>>>>>>>>>>> corresponding
>>>>>>>>>>>>>>>>>>>>>>> extenderId
>>>>>>>>>>>>>>>>>>>>>>>> is started.
>>>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>>>> The IExtender interface contains the following
>> method:
>>>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>>>> public String getExtenderId();
>>>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>>>> Thus, every extender has an extenderId and if that
>> id
>>>> is
>>>>>>>>>>>> listed
>>>>>>>>>>>>>>>> in a
>>>>>>>>>>>>>>>>>>>>>>>> components "extender" property then the
>> corresponding
>>>>>>>>>> service
>>>>>>>>>>>>>>>> should
>>>>>>>>>>>>>>>>>>>>> be
>>>>>>>>>>>>>>>>>>>>>>>> required, otherwise not.
>>>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>>>> My idea (actually Clement's idea from a previous
>>>>>>>>>> conversation
>>>>>>>>>>>> on
>>>>>>>>>>>>>>>>>> this
>>>>>>>>>>>>>>>>>>>>>>>> list). is to use a RankingInterceptor that returns
>> an
>>>>>>>>>> empty
>>>>>>>>>>>>>> array
>>>>>>>>>>>>>>>>>>>>> until
>>>>>>>>>>>>>>>>>>>>>>> all
>>>>>>>>>>>>>>>>>>>>>>>> required services are present.
>>>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>>>> I think this is doable but in order for my
>>>>>>>>>> RankingInterceptor
>>>>>>>>>>>> to
>>>>>>>>>>>>>>>>>>>>> work, it
>>>>>>>>>>>>>>>>>>>>>>>> must have access to the component's "extenders"
>>>>>> property.
>>>>>>>>>> It
>>>>>>>>>>>>>> would
>>>>>>>>>>>>>>>>>>>>> then
>>>>>>>>>>>>>>>>>>>>>>> go
>>>>>>>>>>>>>>>>>>>>>>>> through all the services implementing the IExtender
>>>>>>>>>> interface
>>>>>>>>>>>>>> and
>>>>>>>>>>>>>>>> if
>>>>>>>>>>>>>>>>>>>>>>> there
>>>>>>>>>>>>>>>>>>>>>>>> are extenders corresponding to the required
>>>> extenderId's
>>>>>>>>>> it
>>>>>>>>>>>>>> would
>>>>>>>>>>>>>>>>>>>>> return
>>>>>>>>>>>>>>>>>>>>>>>> all of those, otherwise it would return an empty
>> list.
>>>>>>>>>> Also,
>>>>>>>>>>>> if
>>>>>>>>>>>>>> a
>>>>>>>>>>>>>>>>>>>>> list of
>>>>>>>>>>>>>>>>>>>>>>>> extenderId's was specified, then the service
>>>> dependency
>>>>>>>>>> is set
>>>>>>>>>>>>>> to
>>>>>>>>>>>>>>>>>>>>>>>> mandatory, otherwise to optional.
>>>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>>>> My problem is how to gain access to the
>> configuration
>>>>>>>>>> property
>>>>>>>>>>>>>>>> (the
>>>>>>>>>>>>>>>>>>>>>>>> "extenders" property) of my component from the
>>>>>>>>>> interceptor.
>>>>>>>>>>>> How
>>>>>>>>>>>>>>>> can
>>>>>>>>>>>>>>>>>> I
>>>>>>>>>>>>>>>>>>>>> do
>>>>>>>>>>>>>>>>>>>>>>>> this?
>>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>>> When the interceptor is hooked to a dependency, it
>>>>>>>>>> receives the
>>>>>>>>>>>>>>>>>>>>> dependency
>>>>>>>>>>>>>>>>>>>>>>> model object. From this object you can retrieve the
>>>>>>>>>> component
>>>>>>>>>>>>>>>>>> instance
>>>>>>>>>>>>>>>>>>>>> and
>>>>>>>>>>>>>>>>>>>>>>> get the introspection metadata.
>>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>>>> Another question I have is how to make sure that the
>>>>>>>>>>>> interceptor
>>>>>>>>>>>>>>>> is
>>>>>>>>>>>>>>>>>>>>>>> active.
>>>>>>>>>>>>>>>>>>>>>>>> If the interceptor is not active then my component
>>>> could
>>>>>>>>>>>> become
>>>>>>>>>>>>>>>>>>>>>>> erroneously
>>>>>>>>>>>>>>>>>>>>>>>> valid. Would it be feasible to have a mandatory
>>>>>>>>>> dependency on
>>>>>>>>>>>>>> the
>>>>>>>>>>>>>>>>>>>>>>>> interceptor?
>>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>>> Unfortunately not, at least not easily. What you can
>> do
>>>>>> is
>>>>>>>>>> a
>>>>>>>>>>>>>>>>>>>>> combination
>>>>>>>>>>>>>>>>>>>>>>> between a filter and two interceptors: the ranking
>>>>>>>>>> interceptors
>>>>>>>>>>>>>> as
>>>>>>>>>>>>>>>>>> you
>>>>>>>>>>>>>>>>>>>>> did,
>>>>>>>>>>>>>>>>>>>>>>> and a tracking interceptor. Let me explain:
>>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>>> Let’s imagine your consumer with your service
>>>> dependency.
>>>>>>>>>> Add a
>>>>>>>>>>>>>>>>>> filter
>>>>>>>>>>>>>>>>>>>>>>> that will be resolved only if your interceptor is
>>>> there,
>>>>>>>>>>>>>> something
>>>>>>>>>>>>>>>>>>>>> like:
>>>>>>>>>>>>>>>>>>>>>>> (intercepted=true).
>>>>>>>>>>>>>>>>>>>>>>> Your interceptor implement both tracking and ranking
>>>>>>>>>>>>>> interceptors.
>>>>>>>>>>>>>>>>>> When
>>>>>>>>>>>>>>>>>>>>>>> the accept method is called on your interceptor, it
>>>> can
>>>>>>>>>>>>>>>> ‘transform’
>>>>>>>>>>>>>>>>>>>>> the
>>>>>>>>>>>>>>>>>>>>>>> original service reference to add the ‘intercepted’
>>>>>>>>>> property
>>>>>>>>>>>>>>>>>>>>>>> (ref.addProperty(“intercepted”, true);) This modified
>>>>>>>>>> service
>>>>>>>>>>>>>>>>>> reference
>>>>>>>>>>>>>>>>>>>>>>> matches your filter. Then, do your ranking policy are
>>>> we
>>>>>>>>>>>>>> discussed.
>>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>>> This solution ensure that your dependency can only be
>>>>>>>>>> resolved
>>>>>>>>>>>> if
>>>>>>>>>>>>>>>>>> your
>>>>>>>>>>>>>>>>>>>>>>> interceptor is there. Indeed without the interceptor,
>>>> the
>>>>>>>>>>>> filter
>>>>>>>>>>>>>>>> does
>>>>>>>>>>>>>>>>>>>>> not
>>>>>>>>>>>>>>>>>>>>>>> match.
>>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>>> Regards,
>>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>>> Clement
>>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>>>> /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]
>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>> 
>>>>>> ---------------------------------------------------------------------
>>>>>>>>>>>>>>>>>> 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]
>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>> 
>>>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> ---------------------------------------------------------------------
>>>>>> 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]

Reply via email to