Hi,

On 23.01.2012, at 16:50, Gay David (Annecy) wrote:

> Hi,
>  
> I have some problems with the iPojo composite.
> I made a simple project to illustrate what’s happen. See in attachment.
> There are 2 bundles : one that define a service, one other that define a 
> composite.
>  
> Just compile and install theses 2 bundles in a Felix runtime.
> You should have this bundles :
>  
> g! lb
> START LEVEL 1
>    ID|State      |Level|Name
>     0|Active     |    0|System Bundle (4.0.2)
>     1|Active     |    1|Apache Felix Bundle Repository (1.6.6)
>     2|Active     |    1|Apache Felix Configuration Admin Service (1.2.8)
>     3|Active     |    1|Apache Felix EventAdmin (1.2.14)
>     4|Active     |    1|Apache Felix File Install (3.1.10)
>     5|Active     |    1|Apache Felix Gogo Command (0.12.0)
>     6|Active     |    1|Apache Felix Gogo Runtime (0.10.0)
>     7|Active     |    1|Apache Felix Gogo Shell (0.10.0)
>     8|Active     |    1|Apache Felix iPOJO (1.8.0)
>     9|Active     |    1|Apache Felix iPOJO API (1.6.0)
>    10|Active     |    1|Apache Felix iPOJO Gogo Command (1.0.1)
>    11|Active     |    1|Apache Felix iPOJO Composite (1.8.0)
>    12|Active     |    1|Apache Felix Metatype Service (1.0.4)
>    13|Active     |    1|foo-provider (1.0.0.SNAPSHOT)
>    14|Active     |    1|foo-composite (1.0.0.SNAPSHOT)
>  
> I use the file install to create the services instances.
>  
> 1- @Updated not call
>  
> Don’t know if there is a problem in my code but if I create an instance, 
> thanks to FileInstall in
> <FELIX_RUN>/load/foo.provider.impl.FooServiceImpl-0.cfg with this content : 
> job.name=ADummyValue
>  
> The service is well create: no problem.
> The configuration is well inject : no problem
>  
> For example :
> g! instance 
> foo.provider.impl.FooServiceImpl.bc404b98-4118-418e-84cb-deba273eb309
> instance 
> name="foo.provider.impl.FooServiceImpl.bc404b98-4118-418e-84cb-deba273eb309" 
> component.type="foo.provider.impl.FooServiceImpl" state="valid" bundle="13"
>         handler name="org.apache.felix.ipojo:properties" state="valid"
>                 property name="job.name" value="ADummyValue"
>         handler name="org.apache.felix.ipojo:provides" state="valid"
>                 provides service.id="40" state="registered" 
> specifications="[foo.provider.FooService]"
>                         property name="service.pid" 
> value="foo.provider.impl.FooServiceImpl.bc404b98-4118-418e-84cb-deba273eb309"
>                         property name="factory.name" 
> value="foo.provider.impl.FooServiceImpl"
>                         property name="instance.name" 
> value="foo.provider.impl.FooServiceImpl.bc404b98-4118-418e-84cb-deba273eb309"
>         handler name="org.apache.felix.ipojo:architecture" state="valid"
>  
> If I change the content of the .cfg with job.name= ADummyValue2 : is working 
> also.
>  
> But, the lifecycle callback @Updated is never called !

That seems to be a bug. I will have a look. We recently 'enhanced' the 
condition to call @Updated. Maybe we're a bit too strict :-)


>  
>  
> 2- Composite
>  
> I try the same with the composite.
> Create a file <FELIX_RUN>/load/foo.compo-0.cfg with content 
> job.name=DummyCompo
>  
> It’s working very well, I even see my System.out : “Configuration updated 
> :DummyCompo”, great !
>  
> But, if I update the job.name with job.name=DummyCompo2 …. I have an 
> exception :
>  
> *ERROR* [org.apache.felix.ipojo.Factory, 
> org.osgi.service.cm.ManagedServiceFactory, id=38, bundle=14]: Unexpected 
> problem updating Configuration 
> PID=foo.compo.26ec176f-6860-4100-a538-b5fb523d4a1f, fac
> toryPID=foo.compo, 
> bundleLocation=file:../foo-composite/target/foo-composite-1.0.0-SNAPSHOT.jar
> java.lang.ClassCastException: 
> org.apache.felix.ipojo.composite.CompositeManager cannot be cast to 
> org.apache.felix.ipojo.InstanceManager
>         at org.apache.felix.ipojo.IPojoFactory.updated(IPojoFactory.java:627)
>         at 
> org.apache.felix.cm.impl.ConfigurationManager$UpdateConfiguration.run(ConfigurationManager.java:1567)
>         at org.apache.felix.cm.impl.UpdateThread.run(UpdateThread.java:104)
>         at java.lang.Thread.run(Unknown Source)
>  
> Also, did I do something wrong ?
>  

This is definitely a bug. Could you open a jira issue ?

Regards,

Clement

>  
>  
> Thanks all for your help.
> WBR // David G.
>  
>  
> <composite.zip>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [email protected]
> For additional commands, e-mail: [email protected]

Reply via email to