user5182503
user5182503

Reputation:

OSGI: getting property information from DS

I have the following declarative service:

@Component(
    immediate = false,
    property={"propA=valueA","propB=valueB","propC=valueC"},
    scope=ServiceScope.SINGLETON
)
public class ServiceImpl implements ServiceI{...}

And this the code I do to find this service(manually) by propA:

String filter = "(&(objectClass=" + ServiceI.class.getName() + ")(propA=valueA))";
ServiceReference[] serviceReferences = bundleContext.getServiceReferences((String)null,filter);
ServiceI service=(ServiceI) bundleContext.getService(serviceReferences[0]);

How can I get valueB of propB and valueC of propC of found service?

Upvotes: 2

Views: 71

Answers (2)

Peter Kriens
Peter Kriens

Reputation: 15372

Slightly out of scope. With annotations the code would look like:

 @Reference(target="(propA=valueA)")
 void setI(ServiceI s, Map<String,Object> properties) {
    String propB = properties.get("propB");
    String propC = properties.get("propC");
    ...
 }

Upvotes: 1

J&#233;r&#233;mie B
J&#233;r&#233;mie B

Reputation: 11032

You can use the getProperty of a ServiceReference instance :

Object propBValue = serviceReference.getProperty("propB");

Upvotes: 3

Related Questions