Hi Carsten,

Thanks for your quick answer.

I've just tested with latest karaf 4.0.8 which ships with scr 2.0.6
=> It is working now without changing any piece of code.
It seems that a fix has been provided between 2.0.2 and 2.0.6.

Thanks for you advice

Kind Regards,
Christian

On Mon, Jan 9, 2017 at 10:38 AM, Carsten Ziegeler <cziege...@apache.org>
wrote:

> Hi,
>
> I think this should be possible the way you do it, so that's a "yes" to
> the first two of your questions at the end :)
>
> Before we start to look for a bug in the implementation, could you
> please check the scr 2.0.6 release and see whether it's already fixed
> there?
> If not, please open a jira ticket.
>
> Regards
> Carsten
>
> Christian Wolf wrote
> > Hi,
> >
> > I am using DS @Component and trying to get notified through @Modified
> when
> > a shared pid file is updated (using felix scr 2.0.2 in karaf 4.0.5)
> >
> > I defined a configuration interface such as:
> >
> > @ObjectClassDefinition(pid = "foo.bar")
> > public @interface MyConfig {
> >     String username() default "myuser";
> >     String url() default "http://localhost:8080";;
> > }
> >
> > Then, I have 3 differents classes with @Component annotation. All of them
> > are mapped to this pid "foo.bar".
> > Please note that each component is defined in separated bundles.
> >
> > @Component(configurationPid = "foo.bar", immediate = true)
> > @Designate(ocd = MyConfig.class)
> > public class CompA implements MyInterfaceA {
> >
> >     @Activate
> >     public void activate(MyConfig myConfig) {
> > ...
> >     }
> >
> >     @Modified
> >     public synchronized void modify(MyConfig myConfig) {
> > ...
> >     }
> > }
> >
> > @Component(configurationPid = "foo.bar")
> > @Designate(ocd = MyConfig.class)
> > public class CompB implements MyInterfaceB {
> >
> >     @Activate
> >     public void activate(MyConfig myConfig) {
> > ...
> >     }
> >
> >     @Modified
> >     public synchronized void modify(MyConfig myConfig) {
> > ...
> >     }
> > }
> >
> > @Component(configurationPid = "foo.bar")
> > @Designate(ocd = MyConfig.class)
> > public class CompC implements MyInterfaceC {
> >
> >     @Activate
> >     public void activate(MyConfig myConfig) {
> > ...
> >     }
> >
> >     @Modified
> >     public synchronized void modify(MyConfig myConfig) {
> > ...
> >     }
> > }
> >
> > All these 3 components are activated.
> > When the corresponding pid file foo.bar.cfg is updated, the
> > modify(MyConfig) method surrounded with the @Modified annotations is
> > invoked only for one of them.
> > Moreover, the component that get updated randomly change when restarting
> > the application.
> >
> > Question:
> > - Can @Component(s) of separate bundles be notified through @Modified
> > annotated methods when a shared pid file is updated?
> > - Is it possible to achieve this using annotation configuration classes
> as
> > I did here with MyConfig class (with DS 1.3)?
> > - If not possible, is there any alternative solution to achieve this?
> >
> > Thanks for your help.
> > Kind Regards,
> > Christian
> >
>
>
>
>
> --
> Carsten Ziegeler
> Adobe Research Switzerland
> cziege...@apache.org
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscr...@felix.apache.org
> For additional commands, e-mail: users-h...@felix.apache.org
>
>

Reply via email to