package com.workshare.msnos.usvc.api.routing.strategies;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import com.workshare.msnos.usvc.IMicroservice;
import com.workshare.msnos.usvc.RemoteMicroservice;
import com.workshare.msnos.usvc.api.routing.ApiEndpoint;
import com.workshare.msnos.usvc.api.routing.RoutingStrategy;
public class SkipFaultiesRoutingStrategy implements RoutingStrategy {
@Override
public List<ApiEndpoint> select(IMicroservice from, List<ApiEndpoint> apis) {
final Set<RemoteMicroservice> faulties = new HashSet<RemoteMicroservice>();
for (ApiEndpoint api : apis) {
if (api.isFaulty())
faulties.add(api.service());
}
if (faulties.isEmpty())
return apis;
final List<ApiEndpoint> result = new ArrayList<ApiEndpoint>();
for (ApiEndpoint api : apis) {
if (!faulties.contains(api.service()))
result.add(api);
}
return result;
}
}