Reputation:
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
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
Reputation: 11032
You can use the getProperty
of a ServiceReference
instance :
Object propBValue = serviceReference.getProperty("propB");
Upvotes: 3