You can use dynamic references
@Component(...,specVersion="1.1")
@References({
@Reference(
name = "CheckReference",
referenceInterface = CheckReference.class,
cardinality = ReferenceCardinality.OPTIONAL_MULTIPLE,
policy = ReferencePolicy.DYNAMIC)
})
public class LoadReference {
And then have bind methods like
private Map<String,CheckReference> references = new
ConcurrentHashmap<String,CheckReference>()
private void bindCheckReference(CheckReference ref,Map config) {
String domain = (String)config.get("domain");
references.put(domain,ref);
}
private void unbindCheckReference(CheckReference ref,Map config) {
String domain = (String)config.get("domain");
references.remove(domain);
}
And then in your implementation lookup the appropriate impl from the
references map
Chetan Mehrotra