static ResourceNameMessageConfigs createMessageResourceTypesConfig(
DiscoApiModel model, ConfigProto configProto, String defaultPackage) {
ImmutableMap.Builder<String, ResourceNameMessageConfig> builder = ImmutableMap.builder();
for (ResourceNameMessageConfigProto messageResourceTypesProto :
configProto.getResourceNameGenerationList()) {
ResourceNameMessageConfig messageResourceTypeConfig =
ResourceNameMessageConfig.createResourceNameMessageConfig(
messageResourceTypesProto, defaultPackage);
builder.put(messageResourceTypeConfig.messageName(), messageResourceTypeConfig);
}
ImmutableMap<String, ResourceNameMessageConfig> messageResourceTypeConfigMap = builder.build();
ListMultimap<String, FieldModel> fieldsByMessage = ArrayListMultimap.create();
DiscoGapicNamer discoGapicNamer = new DiscoGapicNamer();
for (Method method : model.getDocument().methods()) {
String fullName = discoGapicNamer.getRequestMessageFullName(method, defaultPackage);
ResourceNameMessageConfig messageConfig = messageResourceTypeConfigMap.get(fullName);
if (messageConfig == null) {
continue;
}
for (Schema property : method.parameters().values()) {
if (messageConfig.getEntityNameForField(property.getIdentifier()) != null) {
fieldsByMessage.put(fullName, DiscoveryField.create(property, model));
}
}
}
return new AutoValue_ResourceNameMessageConfigs(messageResourceTypeConfigMap, fieldsByMessage);
}