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

Reply via email to