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();
}
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();
}
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();
}
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;
}
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;
}
Aggregations