@Nullable
private static ImmutableMap<String, ImmutableList<String>>
createRetryCodesDefinitionFromConfigProto(
DiagCollector diagCollector, InterfaceConfigProto interfaceConfigProto) {
ImmutableMap.Builder<String, ImmutableList<String>> builder = ImmutableMap.builder();
for (RetryCodesDefinitionProto retryDef : interfaceConfigProto.getRetryCodesDefList()) {
Set<String> codes = new TreeSet<>();
for (String codeText : retryDef.getRetryCodesList()) {
try {
codes.add(String.valueOf(codeText));
} catch (IllegalArgumentException e) {
diagCollector.addDiag(
Diag.error(
SimpleLocation.TOPLEVEL,
"status code not found: '%s' (in interface %s)",
codeText,
interfaceConfigProto.getName()));
}
}
builder.put(retryDef.getName(), ImmutableList.copyOf(codes));
}
if (diagCollector.getErrorCount() > 0) {
return null;
}
return builder.build();
}