package com.liveramp.hank.ui; import com.liveramp.hank.client.HankSmartClient; import com.liveramp.hank.coordinator.Coordinator; import com.liveramp.hank.coordinator.RingGroup; import com.liveramp.hank.generated.SmartClient; import com.liveramp.hank.generated.SmartClient.Iface; import org.apache.thrift.TException; import java.io.IOException; import java.util.HashMap; import java.util.Map; public final class ClientCache implements IClientCache { private static final Map<String, SmartClient.Iface> cachedClients = new HashMap<String, Iface>(); private final Coordinator coordinator; public ClientCache(Coordinator coordinator) { this.coordinator = coordinator; } public synchronized SmartClient.Iface getSmartClient(RingGroup ringGroup) throws IOException, TException { Iface client = cachedClients.get(ringGroup.getName()); if (client == null) { client = new HankSmartClient(coordinator, ringGroup.getName()); cachedClients.put(ringGroup.getName(), client); } return client; } }