/** * Decides if a constructor should take all fields or a builder as a parameter. */ private boolean constructorTakesAllFields(MessageType type) { return type.fields().size() < MAX_PARAMS_IN_CONSTRUCTOR; }
private TypeSpec builder(NameAllocator nameAllocator, MessageType type, ClassName javaType, ClassName builderType) { TypeSpec.Builder result = TypeSpec.classBuilder("Builder") .addModifiers(PUBLIC, STATIC, FINAL); result.superclass(builderOf(javaType, builderType)); for (Field field : type.fieldsAndOneOfFields()) { String fieldName = nameAllocator.get(field); result.addField(fieldType(field), fieldName, PUBLIC); } result.addMethod(builderNoArgsConstructor(nameAllocator, type)); for (Field field : type.fields()) { result.addMethod(setter(nameAllocator, builderType, null, field)); } for (OneOf oneOf : type.oneOfs()) { for (Field field : oneOf.fields()) { result.addMethod(setter(nameAllocator, builderType, oneOf, field)); } } result.addMethod(builderBuild(nameAllocator, type, javaType)); return result.build(); }
public ProtoAdapter<Object> get(ProtoType protoType) { if (protoType.isMap()) throw new UnsupportedOperationException("map types not supported"); ProtoAdapter<?> result = adapterMap.get(protoType); if (result != null) { return (ProtoAdapter<Object>) result; } Type type = schema.getType(protoType); if (type == null) { throw new IllegalArgumentException("unknown type: " + protoType); } if (type instanceof EnumType) { EnumAdapter enumAdapter = new EnumAdapter((EnumType) type); adapterMap.put(protoType, enumAdapter); return enumAdapter; } if (type instanceof MessageType) { MessageAdapter messageAdapter = new MessageAdapter(includeUnknown); // Put the adapter in the map early to mitigate the recursive calls to get() made below. adapterMap.put(protoType, messageAdapter); for (com.squareup.wire.schema.Field field : ((MessageType) type).fields()) { Field fieldAdapter = new Field( field.name(), field.tag(), field.isRepeated(), get(field.type())); messageAdapter.fieldsByName.put(field.name(), fieldAdapter); messageAdapter.fieldsByTag.put(field.tag(), fieldAdapter); } return (ProtoAdapter) messageAdapter; } throw new IllegalArgumentException("unexpected type: " + protoType); }
private TypeSpec builder(NameAllocator nameAllocator, MessageType type, ClassName javaType, ClassName builderType) { TypeSpec.Builder result = TypeSpec.classBuilder("Builder") .addModifiers(PUBLIC, STATIC, FINAL); result.superclass(builderOf(javaType, builderType)); for (Field field : type.fieldsAndOneOfFields()) { String fieldName = nameAllocator.get(field); result.addField(fieldType(field), fieldName, PUBLIC); } result.addMethod(builderNoArgsConstructor(nameAllocator, type)); for (Field field : type.fields()) { result.addMethod(setter(nameAllocator, builderType, null, field)); } for (OneOf oneOf : type.oneOfs()) { for (Field field : oneOf.fields()) { result.addMethod(setter(nameAllocator, builderType, oneOf, field)); } } result.addMethod(builderBuild(nameAllocator, type, javaType)); return result.build(); }
private void markMessage(MessageType message) { markFields(message.type(), message.fields()); for (OneOf oneOf : message.oneOfs()) { markFields(message.type(), oneOf.fields()); } }
public ProtoAdapter<Object> get(ProtoType protoType) { if (protoType.isMap()) throw new UnsupportedOperationException("map types not supported"); ProtoAdapter<?> result = adapterMap.get(protoType); if (result != null) { return (ProtoAdapter<Object>) result; } Type type = schema.getType(protoType); if (type == null) { throw new IllegalArgumentException("unknown type: " + protoType); } if (type instanceof EnumType) { EnumAdapter enumAdapter = new EnumAdapter((EnumType) type); adapterMap.put(protoType, enumAdapter); return enumAdapter; } if (type instanceof MessageType) { MessageAdapter messageAdapter = new MessageAdapter(includeUnknown); // Put the adapter in the map early to mitigate the recursive calls to get() made below. adapterMap.put(protoType, messageAdapter); for (com.squareup.wire.schema.Field field : ((MessageType) type).fields()) { Field fieldAdapter = new Field( field.name(), field.tag(), field.isRepeated(), get(field.type())); messageAdapter.fieldsByName.put(field.name(), fieldAdapter); messageAdapter.fieldsByTag.put(field.tag(), fieldAdapter); } return (ProtoAdapter) messageAdapter; } throw new IllegalArgumentException("unexpected type: " + protoType); }
public ProtoAdapter<Object> get(ProtoType protoType) { if (protoType.isMap()) throw new UnsupportedOperationException("map types not supported"); ProtoAdapter<?> result = adapterMap.get(protoType); if (result != null) { return (ProtoAdapter<Object>) result; } Type type = schema.getType(protoType); if (type == null) { throw new IllegalArgumentException("unknown type: " + protoType); } if (type instanceof EnumType) { EnumAdapter enumAdapter = new EnumAdapter((EnumType) type); adapterMap.put(protoType, enumAdapter); return enumAdapter; } if (type instanceof MessageType) { MessageAdapter messageAdapter = new MessageAdapter(includeUnknown); // Put the adapter in the map early to mitigate the recursive calls to get() made below. adapterMap.put(protoType, messageAdapter); for (com.squareup.wire.schema.Field field : ((MessageType) type).fields()) { Field fieldAdapter = new Field( field.name(), field.tag(), field.isRepeated(), get(field.type())); messageAdapter.fieldsByName.put(field.name(), fieldAdapter); messageAdapter.fieldsByTag.put(field.tag(), fieldAdapter); } return (ProtoAdapter) messageAdapter; } throw new IllegalArgumentException("unexpected type: " + protoType); }
private Map<String, Schema> buildProperties(MessageType protoType) { Map<String, Schema> properties = new LinkedHashMap<>(); // 不处理oneof ImmutableList<Field> fields = protoType.fields(); for (Field field : fields) { ProtoType fieldType = field.type(); String fieldName = field.name(); Schema property = getSchemaByType(fieldType); if (field.isRepeated()) { property = new ArraySchema().items(property); } property.description(field.documentation()); properties.put(fieldName, property); } return properties; }
private void markMessage(MessageType message) { markFields(message.type(), message.fields()); for (OneOf oneOf : message.oneOfs()) { markFields(message.type(), oneOf.fields()); } }
private void markMessage(MessageType message) { markFields(message.type(), message.fields()); for (OneOf oneOf : message.oneOfs()) { markFields(message.type(), oneOf.fields()); } }
/** * https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.1.md#parameter-object * * @param rpc * @return */ @Override protected List<Parameter> getParameters(Rpc rpc) { ArrayList<Parameter> parameters = Lists.newArrayList(); ProtoType protoType = rpc.requestType(); Type type = schmea.getType(protoType); if( type instanceof MessageType){ ImmutableList<Field> fields = ((MessageType) type).fields(); for (Field field : fields) { Parameter parameter = new Parameter(); parameter.name(field.name()); parameter.in("query"); parameter.schema(refHelper.get().getSchemaByType(field.type())); parameter.description(field.documentation()); parameters.add(parameter); } } return parameters; }