use of com.google.api.tools.framework.model.Field in project toolkit by googleapis.
the class ProtoTypeRef method getFields.
@Override
public List<? extends FieldModel> getFields() {
if (this.fields != null) {
return this.fields;
}
ImmutableList.Builder<ProtoField> fields = ImmutableList.builder();
for (Field field : typeRef.getMessageType().getFields()) {
fields.add(new ProtoField(field));
}
this.fields = fields.build();
return this.fields;
}
use of com.google.api.tools.framework.model.Field in project toolkit by googleapis.
the class ResourceNameMessageConfigs method createMessageResourceTypesConfig.
@Nullable
public static ResourceNameMessageConfigs createMessageResourceTypesConfig(Model model, ConfigProto configProto, String defaultPackage) {
ImmutableMap.Builder<String, ResourceNameMessageConfig> builder = ImmutableMap.builder();
for (ResourceNameMessageConfigProto messageResourceTypesProto : configProto.getResourceNameGenerationList()) {
ResourceNameMessageConfig messageResourceTypeConfig = ResourceNameMessageConfig.createResourceNameMessageConfig(model.getDiagCollector(), messageResourceTypesProto, defaultPackage);
builder.put(messageResourceTypeConfig.messageName(), messageResourceTypeConfig);
}
ImmutableMap<String, ResourceNameMessageConfig> messageResourceTypeConfigMap = builder.build();
ListMultimap<String, FieldModel> fieldsByMessage = ArrayListMultimap.create();
Set<String> seenProtoFiles = new HashSet<>();
for (ProtoFile protoFile : model.getFiles()) {
if (!seenProtoFiles.contains(protoFile.getSimpleName())) {
seenProtoFiles.add(protoFile.getSimpleName());
for (MessageType msg : protoFile.getMessages()) {
ResourceNameMessageConfig messageConfig = messageResourceTypeConfigMap.get(msg.getFullName());
if (messageConfig == null) {
continue;
}
for (Field field : msg.getFields()) {
if (messageConfig.getEntityNameForField(field.getSimpleName()) != null) {
fieldsByMessage.put(msg.getFullName(), new ProtoField(field));
}
}
}
}
}
return new AutoValue_ResourceNameMessageConfigs(messageResourceTypeConfigMap, fieldsByMessage);
}
use of com.google.api.tools.framework.model.Field in project toolkit by googleapis.
the class ProtoFileView method protoFiles.
private Set<ProtoFile> protoFiles(Field field) {
Set<ProtoFile> fields = new HashSet<ProtoFile>();
if (field.getType().getKind() != Type.TYPE_MESSAGE) {
return fields;
}
MessageType messageType = field.getType().getMessageType();
fields.add(messageType.getFile());
for (Field f : messageType.getNonCyclicFields()) {
fields.addAll(protoFiles(f));
}
return fields;
}
use of com.google.api.tools.framework.model.Field in project toolkit by googleapis.
the class GrpcStreamingConfig method createGrpcStreaming.
/**
* Creates an instance of GrpcStreamingConfig for gRPC response streaming, based on
* PageStreamingConfigProto, linking it up with the provided method. On errors, null will be
* returned, and diagnostics are reported to the diag collector.
*
* <p>TODO: Create a separate GrpcStreamingConfigProto
*/
@Nullable
public static GrpcStreamingConfig createGrpcStreaming(DiagCollector diagCollector, PageStreamingConfigProto pageStreaming, Method method) {
String resourcesFieldName = pageStreaming.getResponse().getResourcesField();
Field resourcesField = method.getOutputType().getMessageType().lookupField(resourcesFieldName);
GrpcStreamingType type = getGrpcStreamingType(diagCollector, method);
if (type == null) {
return null;
}
return new GrpcStreamingConfig(resourcesField, type);
}
Aggregations