typeBuilder.addModifiers(PUBLIC); if (!service.documentation().isEmpty()) { typeBuilder.addJavadoc("$L\n", service.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(); }
public static InterfaceMetaInfo readFrom(ProtoFile protoFile, Service service) { String servicePath = OptionUtil.readStringOption(service.options(), SERVICE_PATH); String summary = OptionUtil.readSummary(service.documentation()); ProtoFileMetaInfo protoFileMetaInfo = ProtoFileMetaInfo.readFrom(protoFile); InterfaceMetaInfoBuilder builder = InterfaceMetaInfo.builder(); builder.servicePath(servicePath) .protoFileMetaInfo(protoFileMetaInfo) .summary(summary); return builder.build(); }
/** * https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.1.md#info-object * * @param protoFile * @return */ protected Info getInfo(ProtoFile protoFile, Service service) { Info info = new Info(); //required info.title(service.name()); info.version("0.0.1"); //optional info.description(service.documentation()); info.contact(getContact()); info.license(getLicense()); return info; }
/** * https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.1.md#info-object * * @param protoFile * @return */ @Override protected Info getInfo(ProtoFile protoFile, Service service) { Info info = new Info(); ProtoFileMetaInfo protoFileMetaInfo = ProtoFileMetaInfo.readFrom(protoFile); InterfaceMetaInfo interfaceMetaInfo = InterfaceMetaInfo.readFrom(protoFile, service); String version = protoFileMetaInfo.getVersion(); if(StringUtils.isBlank(version)) { version = "0.0.1"; } //required info.title(service.name()); info.version(version); //optional // TODO: 2018/5/23 将 protoFileMetaInfo 和 interfaceMetaInfo 整合到description中 info.description(service.documentation()); info.contact(getContact()); info.license(getLicense()); return info; }