Search in sources :

Example 1 with Field

use of com.google.api.tools.framework.model.Field in project toolkit by googleapis.

the class ProtoField method getOneofFieldsNames.

public static Iterable<Iterable<String>> getOneofFieldsNames(Iterable<FieldModel> fields, SurfaceNamer namer) {
    ImmutableSet.Builder<Oneof> oneOfsBuilder = ImmutableSet.builder();
    for (FieldModel field : fields) {
        Oneof oneof = ((ProtoField) field).protoField.getOneof();
        if (oneof == null) {
            continue;
        }
        oneOfsBuilder.add(oneof);
    }
    Iterable<Oneof> oneOfs = oneOfsBuilder.build();
    ImmutableList.Builder<Iterable<String>> fieldsNames = ImmutableList.builder();
    for (Oneof oneof : oneOfs) {
        boolean hasItems = false;
        ImmutableSet.Builder<String> fieldNames = ImmutableSet.builder();
        for (Field field : oneof.getFields()) {
            fieldNames.add(namer.getVariableName(new ProtoField(field)));
            hasItems = true;
        }
        if (hasItems) {
            fieldsNames.add(fieldNames.build());
        }
    }
    return fieldsNames.build();
}
Also used : ImmutableList(com.google.common.collect.ImmutableList) Oneof(com.google.api.tools.framework.model.Oneof) Field(com.google.api.tools.framework.model.Field) ImmutableSet(com.google.common.collect.ImmutableSet)

Example 2 with Field

use of com.google.api.tools.framework.model.Field in project toolkit by googleapis.

the class GapicInterfaceConfig method createIamResources.

/**
 * Creates a list of fields that can be turned into IAM resources
 */
private static ImmutableList<FieldModel> createIamResources(Model model, List<IamResourceProto> resources) {
    ImmutableList.Builder<FieldModel> fields = ImmutableList.builder();
    for (IamResourceProto resource : resources) {
        TypeRef type = model.getSymbolTable().lookupType(resource.getType());
        if (type == null) {
            throw new IllegalArgumentException("type not found: " + resource.getType());
        }
        if (!type.isMessage()) {
            throw new IllegalArgumentException("type must be a message: " + type);
        }
        Field field = type.getMessageType().lookupField(resource.getField());
        if (field == null) {
            throw new IllegalArgumentException(String.format("type %s does not have field %s", resource.getType(), resource.getField()));
        }
        fields.add(new ProtoField(field));
    }
    return fields.build();
}
Also used : Field(com.google.api.tools.framework.model.Field) ImmutableList(com.google.common.collect.ImmutableList) TypeRef(com.google.api.tools.framework.model.TypeRef) IamResourceProto(com.google.api.codegen.IamResourceProto)

Example 3 with Field

use of com.google.api.tools.framework.model.Field in project toolkit by googleapis.

the class HeaderRequestParamTransformer method generateHeaderRequestParam.

private HeaderRequestParamView generateHeaderRequestParam(String headerRequestParam, MessageType inputMessageType, SurfaceNamer namer) {
    String[] fieldNameTokens = headerRequestParam.split("\\.");
    ImmutableList.Builder<String> gettersChain = ImmutableList.builder();
    MessageType subMessageType = inputMessageType;
    for (String fieldNameToken : fieldNameTokens) {
        Field matchingField = subMessageType.lookupField(fieldNameToken);
        if (matchingField == null) {
            throw new IllegalArgumentException("Unknown field name token '" + fieldNameToken + "' in header request param '" + headerRequestParam + "'");
        }
        String matchingFieldGetter = namer.getFieldGetFunctionName(new ProtoField(matchingField));
        gettersChain.add(matchingFieldGetter);
        if (matchingField.getType() != null && matchingField.getType().isMessage()) {
            subMessageType = matchingField.getType().getMessageType();
        }
    }
    HeaderRequestParamView.Builder headerParam = HeaderRequestParamView.newBuilder().fullyQualifiedName(headerRequestParam).gettersChain(gettersChain.build());
    return headerParam.build();
}
Also used : Field(com.google.api.tools.framework.model.Field) ProtoField(com.google.api.codegen.config.ProtoField) ProtoField(com.google.api.codegen.config.ProtoField) ImmutableList(com.google.common.collect.ImmutableList) MessageType(com.google.api.tools.framework.model.MessageType) HeaderRequestParamView(com.google.api.codegen.viewmodel.HeaderRequestParamView)

Example 4 with Field

use of com.google.api.tools.framework.model.Field in project toolkit by googleapis.

the class ProtoMethodModel method getOutputFields.

@Override
public Iterable<ProtoField> getOutputFields() {
    if (outputFields != null) {
        return outputFields;
    }
    ImmutableList.Builder<ProtoField> fieldsBuilder = ImmutableList.builder();
    for (Field field : method.getOutputType().getMessageType().getFields()) {
        fieldsBuilder.add(new ProtoField(field));
    }
    outputFields = fieldsBuilder.build();
    return outputFields;
}
Also used : Field(com.google.api.tools.framework.model.Field) ImmutableList(com.google.common.collect.ImmutableList)

Example 5 with Field

use of com.google.api.tools.framework.model.Field in project toolkit by googleapis.

the class ProtoMethodModel method getInputFields.

@Override
public List<ProtoField> getInputFields() {
    if (inputFields != null) {
        return inputFields;
    }
    ImmutableList.Builder<ProtoField> fieldsBuilder = ImmutableList.builder();
    for (Field field : method.getInputType().getMessageType().getFields()) {
        fieldsBuilder.add(new ProtoField(field));
    }
    inputFields = fieldsBuilder.build();
    return inputFields;
}
Also used : Field(com.google.api.tools.framework.model.Field) ImmutableList(com.google.common.collect.ImmutableList)

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