Search in sources :

Example 6 with Field

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;
}
Also used : Field(com.google.api.tools.framework.model.Field) ImmutableList(com.google.common.collect.ImmutableList)

Example 7 with Field

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);
}
Also used : ProtoFile(com.google.api.tools.framework.model.ProtoFile) ImmutableMap(com.google.common.collect.ImmutableMap) Field(com.google.api.tools.framework.model.Field) ResourceNameMessageConfigProto(com.google.api.codegen.ResourceNameMessageConfigProto) MessageType(com.google.api.tools.framework.model.MessageType) HashSet(java.util.HashSet) Nullable(javax.annotation.Nullable)

Example 8 with Field

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;
}
Also used : Field(com.google.api.tools.framework.model.Field) ProtoFile(com.google.api.tools.framework.model.ProtoFile) MessageType(com.google.api.tools.framework.model.MessageType) HashSet(java.util.HashSet)

Example 9 with Field

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);
}
Also used : Field(com.google.api.tools.framework.model.Field) Nullable(javax.annotation.Nullable)

Aggregations

Field (com.google.api.tools.framework.model.Field)9 ImmutableList (com.google.common.collect.ImmutableList)6 MessageType (com.google.api.tools.framework.model.MessageType)3 ProtoFile (com.google.api.tools.framework.model.ProtoFile)2 HashSet (java.util.HashSet)2 Nullable (javax.annotation.Nullable)2 IamResourceProto (com.google.api.codegen.IamResourceProto)1 ResourceNameMessageConfigProto (com.google.api.codegen.ResourceNameMessageConfigProto)1 ProtoField (com.google.api.codegen.config.ProtoField)1 HeaderRequestParamView (com.google.api.codegen.viewmodel.HeaderRequestParamView)1 Oneof (com.google.api.tools.framework.model.Oneof)1 TypeRef (com.google.api.tools.framework.model.TypeRef)1 ImmutableMap (com.google.common.collect.ImmutableMap)1 ImmutableSet (com.google.common.collect.ImmutableSet)1