rpcBuilder.addParameter(requestJavaType, "request"); if (!rpc.documentation().isEmpty()) { rpcBuilder.addJavadoc("$L\n", rpc.documentation());
public TypeSpec generateService(ProtoFile protoFile, Service service) { ClassName apiName = (ClassName) typeName(service.type()); TypeSpec.Builder typeBuilder = TypeSpec.interfaceBuilder(apiName.simpleName()); typeBuilder.addModifiers(PUBLIC); InterfaceMetaInfo interfaceMetaInfo = InterfaceMetaInfo.readFrom(protoFile, service); typeBuilder.addAnnotations(interfaceMetaInfo.generateAnnotations()); if (!service.documentation().isEmpty()) { typeBuilder.addJavadoc("$L\n", service.documentation()); } for (Rpc rpc : service.rpcs()) { ProtoType requestType = rpc.requestType(); TypeName requestJavaType = typeName(requestType); ProtoType responseType = rpc.responseType(); TypeName responseJavaType = typeName(responseType); MethodSpec.Builder rpcBuilder = MethodSpec.methodBuilder(rpc.name()); MethodMetaInfo methodMetaInfo = MethodMetaInfo.readFrom(rpc); rpcBuilder.addAnnotation(serviceAnnotation(rpc, apiName, interfaceMetaInfo)); rpcBuilder.addAnnotation(methodMetaInfo.generateRaptorMethod()); rpcBuilder.addModifiers(PUBLIC, ABSTRACT); rpcBuilder.returns(responseJavaType); ParameterSpec request = ParameterSpec.builder(requestJavaType, "request").build(); rpcBuilder.addParameter(request); if (!rpc.documentation().isEmpty()) { rpcBuilder.addJavadoc("$L\n", rpc.documentation()); } typeBuilder.addMethod(rpcBuilder.build()); } return typeBuilder.build(); }
/** * https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.1.md#operation-object * * @param rpc * @return */ protected Operation getOperation(Rpc rpc) { Operation operation = new Operation(); operation.requestBody(getRequestBody(rpc)); //requires operation.responses(getApiResponses(rpc)); operation.summary("operation summary"); operation.description(rpc.documentation()); operation.operationId("operation operationId"); // operation.externalDocs(); // operation.parameters(); // operation.requestBody(); // operation.callbacks(); // operation.deprecated(); // operation.security(); // operation.servers(); return operation; }
/** * https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.1.md#operation-object * * @param rpc * @return */ @Override protected Operation getOperation(Rpc rpc) { Operation operation = new Operation(); MethodMetaInfo methodMetaInfo = MethodMetaInfo.readFrom(rpc); operation.summary(methodMetaInfo.getSummary()); operation.description(rpc.documentation()); operation.responses(getApiResponses(rpc)); // TODO: 2018/5/23 如果是get ,特殊处理request if( Method.GET.equals(methodMetaInfo.getMethod())){ operation.parameters(getParameters(rpc)); }else{ operation.requestBody(getRequestBody(rpc)); } return operation; }
public static MethodMetaInfo readFrom(Rpc rpc) { Options options = rpc.options(); String path = OptionUtil.readStringOption(options, PATH); String method = OptionUtil.readStringOption(options, METHOD); String summary = OptionUtil.readSummary(rpc.documentation()); List<String> paramTypesStr = OptionUtil.readStringList(options, REQUEST_PARAMS); List<Param> pathParams = buildParams(paramTypesStr); List<String> requestParamsStr = OptionUtil.readStringList(options, PATH_PARAMS); List<Param> requestParams = buildParams(requestParamsStr); List<String> headerParamsStr = OptionUtil.readStringList(options, HEAD_PARAMS); List<Param> headerParams = buildParams(headerParamsStr); return MethodMetaInfo.builder() .path(path) .method(Method.get(method)) .pathParams(pathParams) .requestParams(requestParams) .headerParams(headerParams) .summary(summary) .build(); }