> May I know is there any tutorials/sample for “properties attribute”? I seem 
> not able to search any from the web. I have try to use the @Component 
> attribute “configurationPid” and get the properties value in “activate”  
> method through “Map<String, Object> config”, may I know is this the proper 
> way to retrieve configuration value? And what is the different between this 
> and the “properties” attribute?

Did you read http://enroute.osgi.org/services/org.osgi.service.component.html 
<http://enroute.osgi.org/services/org.osgi.service.component.html>? If you 
could not find the way how to use DS in that text, could you provide me with 
some feedback of what you miss so I can improve it for others?

A trivial example that uses service properties: 
https://github.com/osgi/osgi.enroute.examples/blob/master/osgi.enroute.examples.component.application/src/osgi/enroute/examples/component/examples/EventListener.java
 
<https://github.com/osgi/osgi.enroute.examples/blob/master/osgi.enroute.examples.component.application/src/osgi/enroute/examples/component/examples/EventListener.java>

Kind regards,

        Peter Kriens


> On 17 mei 2016, at 17:05, Timothy Ward <tim.w...@paremus.com> wrote:
> 
> 
> 
>> On 17 May 2016, at 11:46, Chong, Kim Theng <kimtheng.ch...@experian.com 
>> <mailto:kimtheng.ch...@experian.com>> wrote:
>> 
>> Hi Tim,
>>  
>> Thank you very much for your explanation.
>>  
>> Yes, we would like to use the standard annotations.
>>  
>> and I am in the middle of trying the way that you mentioned in the 
>> “dependency injection” and I have some further questions:
>> Register the other component in the service registry. If it is using a 
>> “private” (i.e. not exported) API then nobody else will find it.
>> Does it means that, for the scenario when we want to inject 
>> “serviceRegistry” dependency to “myService”, we need to register both 
>> myService and serviceRegistry as @Component, and then use the @Reference 
>> annotation to reference “serviceRegistry” in “myService”? 
> 
> Yes - you need to register the “serviceRegistry” and then use @Reference to 
> consume it in “myService”. “myService” does not have to be registered as a 
> service for this to work, but it should be for the reset of your use case.
> 
>> May I know is there any tutorials/sample for “properties attribute”? I seem 
>> not able to search any from the web. I have try to use the @Component 
>> attribute “configurationPid” and get the properties value in “activate”  
>> method through “Map<String, Object> config”, may I know is this the proper 
>> way to retrieve configuration value? And what is the different between this 
>> and the “properties” attribute?
> 
> Defining an activate method using @Activate gives you a callback when all of 
> your components dependencies are satisfied, and the component is ready for 
> activation (read up on lazy activation if you’re interested in the difference 
> between these two things).
> 
> Valid arguments to an activate method are zero or more of:
> 
> Map<String, Object> - this will pass in a map of your component’s component 
> properties
> A component property type - this is a type safe view of your component’s 
> component properties
> BundleContext - this will pass in the BundleContext of the bundle which 
> defines the DS component
> ComponentContext - this will pass the SCR ComponentContext for your component
> 
> Using an Activate method is the only recommended way to retrieve component 
> properties in a DS component.
> 
> Whey you set the properties attribute on the @Component annotation you are 
> providing a set of default keys and values that will be set in your 
> component’s component properties. The configuration pid that you’ve set is 
> used for integration with configuration admin. Configuration Admin can be 
> used to set or override component properties, and can also be used to limit a 
> component’s activation by using the configurationPolicy.
> 
> You can see an example of using a type-safe component property type from the 
> OSGi IoT contest here:
> 
> https://github.com/osgi/osgi.iot.contest.sdk/blob/master/osgi.enroute.trains.track.manager.example.provider/src/osgi/enroute/trains/track/manager/example/provider/ExampleTrackManagerImpl.java#L81
>  
> <https://github.com/osgi/osgi.iot.contest.sdk/blob/master/osgi.enroute.trains.track.manager.example.provider/src/osgi/enroute/trains/track/manager/example/provider/ExampleTrackManagerImpl.java#L81>
> 
> https://github.com/osgi/osgi.iot.contest.sdk/blob/master/osgi.enroute.trains.api/src/osgi/enroute/trains/cloud/api/TrackConfiguration.java
>  
> <https://github.com/osgi/osgi.iot.contest.sdk/blob/master/osgi.enroute.trains.api/src/osgi/enroute/trains/cloud/api/TrackConfiguration.java>
> 
> Note that a component property type is defined as an annotation. This lets 
> you set default values, and ensures that only compatible types are used in 
> the configuration.
> 
> Best Regards,
> 
> 
> Tim Ward
> 
> OSGi IoT Expert Group Chair
> tim.w...@paremus.com <mailto:tim.w...@paremus.com>
> 
> 
>> Thank you for your time.
>> Best regards,
>> Kim
>>  
>>  
>>  
>> From: osgi-dev-boun...@mail.osgi.org <mailto:osgi-dev-boun...@mail.osgi.org> 
>> [mailto:osgi-dev-boun...@mail.osgi.org 
>> <mailto:osgi-dev-boun...@mail.osgi.org>] On Behalf Of Timothy Ward
>> Sent: Monday, May 16, 2016 6:15 PM
>> To: OSGi Developer Mail List
>> Subject: Re: [osgi-dev] Question on dependencies injection and config 
>> reading in SCR
>>  
>> Hi Kim,
>>  
>> Declarative Services is a great choice, and should give you a simple way to 
>> do most of the things that you need.
>>  
>>  
>> On 16 May 2016, at 04:52, Chong, Kim Theng <kimtheng.ch...@experian.com 
>> <mailto:kimtheng.ch...@experian.com>> wrote:
>>  
>> Hi all,
>>  
>> Previously we were using Spring DM to perform dependencies injections and 
>> services declaration, and now we would like to migrate to OSGI declarative 
>> services/SCR. May I know is there any ways to perform:
>>  
>> 1.       bean wiring/dependency injection for SCR like Spring DM does? For 
>> example:
>>  
>> ·         @line1: We want to expose “myService” as a service. (This should 
>> be achievable by using @Component, @Service, correct me if I am wrong)
>>  
>> Which annotation set are you using? The standard annotations do not have an 
>> @Service annotation, and I would very strongly suggest that you use the 
>> standard annotations.
>>  
>> By default using @Component exports all of the directly implemented 
>> interfaces of your component class (i.e. the exact list of interfaces after 
>> the implements keyword). This can be modified using the service attribute of 
>> the annotation.
>> 
>> 
>> ·         @line7: We want to inject “serviceRegistry” dependency to 
>> “myService”.
>> ·         Note: “serviceRegistry” is a normal bean class, which does NOT 
>> expose as a service.
>>  
>> <image002.png>
>>  
>> This sort of injection (“private” components) is not supported by 
>> Declarative Services, however this isn’t really a problem. You can either:
>> Register the other component in the service registry. If it is using a 
>> “private” (i.e. not exported) API then nobody else will find it.
>> Just new up the instance in your activate method. If the serviceRegistry 
>> component really is a private detail of a single component then it’s just 
>> part of its behaviour. The new operator isn’t always evil!
>> 
>> 
>>  
>> 2.       Reading properties from a configuration file and binding them into 
>> service? For example
>>  
>> a.       There is a configuration file: service.config with following 
>> properties:
>>  
>> # service type
>> service.type = A
>>  
>>  
>> And we are declaring the service such a way in Spring DM: (the service that 
>> going to be registered is based on the “service.type” value in the config 
>> file).
>> Is this doable in OSGI declarative services?
>>  
>> The @Component annotation has exactly this support using the properties 
>> attribute. 
>>  
>> Best of luck,
>>  
>> Tim Ward
>>  
>> Chief Technology Officer
>> tim.w...@paremus.com <mailto:tim.w...@paremus.com>
>> 
>> 
>>                 
>>                                 <image001.png>
>>  
>>  
>> Thank you so much for your time.
>>  
>> Best regards,
>> Kim
>> _______________________________________________
>> OSGi Developer Mail List
>> osgi-dev@mail.osgi.org <mailto:osgi-dev@mail.osgi.org>
>> https://mail.osgi.org/mailman/listinfo/osgi-dev 
>> <https://urldefense.proofpoint.com/v2/url?u=https-3A__mail.osgi.org_mailman_listinfo_osgi-2Ddev&d=DQMFaQ&c=BNNF-YNv0CLLslhP2Bcx5Q&r=nkTZHXrJs6ajcdXMiKMBUzIVqz19DiWDyUt7fOV9t7Y&m=cX5_qJ5tc0bDm5GylJHffQXTPGGWRqxn31k-Ekn21vU&s=cu2syswbxnkZ_zyepbVpXX5ieX8HY4XI1Aw6Al8foFQ&e=>
>>  
>> _______________________________________________
>> OSGi Developer Mail List
>> osgi-dev@mail.osgi.org <mailto:osgi-dev@mail.osgi.org>
>> https://mail.osgi.org/mailman/listinfo/osgi-dev 
>> <https://mail.osgi.org/mailman/listinfo/osgi-dev>
> _______________________________________________
> OSGi Developer Mail List
> osgi-dev@mail.osgi.org <mailto:osgi-dev@mail.osgi.org>
> https://mail.osgi.org/mailman/listinfo/osgi-dev 
> <https://mail.osgi.org/mailman/listinfo/osgi-dev>

Attachment: smime.p7s
Description: S/MIME cryptographic signature

_______________________________________________
OSGi Developer Mail List
osgi-dev@mail.osgi.org
https://mail.osgi.org/mailman/listinfo/osgi-dev

Reply via email to