package io.airlift.discovery.client; import io.airlift.node.NodeInfo; import static java.util.Objects.requireNonNull; public class MergingServiceSelectorFactory implements ServiceSelectorFactory { private final ServiceSelectorFactory selectorFactory; private final Announcer announcer; private final NodeInfo nodeInfo; public MergingServiceSelectorFactory(ServiceSelectorFactory selectorFactory, Announcer announcer, NodeInfo nodeInfo) { this.selectorFactory = requireNonNull(selectorFactory, "selectorFactory is null"); this.announcer = requireNonNull(announcer, "announcer is null"); this.nodeInfo = requireNonNull(nodeInfo, "nodeInfo is null"); } @Override public ServiceSelector createServiceSelector(String type, ServiceSelectorConfig selectorConfig) { ServiceSelector selector = selectorFactory.createServiceSelector(type, selectorConfig); return new MergingServiceSelector(selector, announcer, nodeInfo); } }