@Override public List<DiscoveryField> getInputFields() { if (inputFields != null) { return inputFields; } ImmutableList.Builder<DiscoveryField> fieldsBuilder = ImmutableList.builder(); for (Schema field : method.parameters().values()) { fieldsBuilder.add(DiscoveryField.create(field, apiModel)); } if (method.request() != null) { fieldsBuilder.add(DiscoveryField.create(method.request(), apiModel)); } if (hasExtraFieldMask) { fieldsBuilder.add(fieldMaskField); } inputFields = fieldsBuilder.build(); return inputFields; }
/** * Returns a list containing the response schema as the sole element; or returns an empty list if * this method has no response schema. */ @Override public List<DiscoveryField> getOutputFields() { if (outputFields != null) { return outputFields; } ImmutableList.Builder<DiscoveryField> outputField = new Builder<>(); if (method.response() != null) { DiscoveryField fieldModel = DiscoveryField.create(method.response(), apiModel); outputField.add(fieldModel); } outputFields = outputField.build(); return outputFields; }
@Override public TypeModel getMapValueType() { if (isMap()) { return DiscoveryField.create(originalSchema.additionalProperties(), apiModel); } return null; }
private DiscoveryField createFieldMaskField() { return DiscoveryField.create( StandardSchemaGenerator.createListSchema( StandardSchemaGenerator.createStringSchema( "", SurfaceNamer.Cardinality.NOT_REPEATED, true), DiscoveryMethodTransformer.FIELDMASK_STRING, true), null); }
@Override public DiscoveryField getField(String key) { for (DiscoveryField field : getFields()) { if (field.getNameAsParameter().equals(key)) { return field; } } Schema parentTypeSchema = getDiscoveryField(); List<Schema> pathToKeySchema = parentTypeSchema.findChild(key); if (pathToKeySchema.size() == 0) { return null; // key not found. } return DiscoveryField.create(pathToKeySchema.get(pathToKeySchema.size() - 1), apiModel); }
@Override public TypeModel getMapKeyType() { if (isMap()) { // Assume that the schema's additionalProperties map keys are Strings. return DiscoveryField.create( StandardSchemaGenerator.createStringSchema( "", SurfaceNamer.Cardinality.NOT_REPEATED, false), null); } return null; }
/** Create a FieldModel object from a non-null Schema object. */ public static synchronized DiscoveryField create(Schema schema, DiscoApiModel rootApiModel) { if (!Strings.isNullOrEmpty(schema.reference()) && rootApiModel != null) { // First create a DiscoveryField for the underlying referenced Schema. create(schema.dereference(), rootApiModel); } return new DiscoveryField(schema, rootApiModel); }
/** * Returns the parameter with the fieldName if it exists, otherwise returns the request object * with name fieldName, if it exists. */ @Override public DiscoveryField getInputField(String fieldName) { Schema targetSchema = method.parameters().get(fieldName); if (targetSchema != null) { return DiscoveryField.create(targetSchema, apiModel); } if (method.request() != null && DiscoGapicParser.getMethodInputName(method).toLowerCamel().equals(fieldName)) { return DiscoveryField.create(method.request(), apiModel); } if (hasExtraFieldMask && DiscoveryMethodTransformer.FIELDMASK_STRING.equals(fieldName)) { return fieldMaskField; } return null; }
public DiscoveryMethodModel(Method method, DiscoApiModel apiModel) { Preconditions.checkNotNull(method); this.method = method; this.apiModel = apiModel; String httpMethod = method.httpMethod().toUpperCase().trim(); hasExtraFieldMask = httpMethod.equals("PATCH") || httpMethod.equals("PUT"); if (hasExtraFieldMask) { fieldMaskField = createFieldMaskField(); } else { fieldMaskField = null; } this.inputType = DiscoveryRequestType.create(this); if (method.response() != null) { this.outputType = DiscoveryField.create(method.response(), apiModel); } else { this.outputType = EmptyTypeModel.getInstance(); } }
@Override public TypeModel makeOptional() { // Make a copy of this object, without the ARRAY-ness. if (schema.items() != null && schema.type().equals(Type.ARRAY)) { return DiscoveryField.create(schema.items(), apiModel); } return this; }
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); }
propertiesBuilder.add(DiscoveryField.create(child, apiModel));
@Override public TypeName getParentTypeName(ImportTypeTable typeTable) { if (schema.parent() instanceof Schema) { DiscoveryField parent = DiscoveryField.create((Schema) schema.parent(), apiModel); return typeTable.getTypeTable().getTypeName(typeTable.getFullNameFor((FieldModel) parent)); } return typeTable.getTypeTable().getTypeName(typeTable.getFullNameFor((FieldModel) this)); }
DiscoveryField.create(schema.dereference().items(), fieldModel.getDiscoApiModel()), BoxingBehavior.BOX_PRIMITIVES); } else {
if (requestBodyDef != null && !Strings.isNullOrEmpty(requestBodyDef.reference())) { DiscoveryField requestBody = DiscoveryField.create(requestBodyDef, context.getDocContext().getApiModel()); requestView.requestBodyType( schemaToParamView(
TypeName valueTypeName = getTypeNameForElementType( DiscoveryField.create(schema.additionalProperties(), field.getDiscoApiModel()), BoxingBehavior.BOX_PRIMITIVES); return new TypeName(
private StaticLangMemberView schemaToParamView( SchemaTransformationContext context, Schema schema, SymbolTable symbolTable) { StaticLangMemberView.Builder paramView = StaticLangMemberView.newBuilder(); DiscoveryField field = DiscoveryField.create(schema, context.getDocContext().getApiModel()); String typeName = context.getSchemaTypeTable().getAndSaveNicknameFor(field); paramView.name(symbolTable.getNewSymbol(schema.getIdentifier())); paramView.typeName(typeName); paramView.fieldGetFunction( context .getDiscoGapicNamer() .getResourceGetterName(schema.getIdentifier(), context.getNamer())); paramView.fieldSetFunction( context .getDiscoGapicNamer() .getResourceSetterName( schema.getIdentifier(), SurfaceNamer.Cardinality.ofRepeated(schema.type().equals(Schema.Type.ARRAY)), context.getNamer())); return paramView.build(); }