public List<GrpcStubView> generateGrpcStubs(InterfaceContext context) { List<GrpcStubView> stubs = new ArrayList<>(); Map<String, InterfaceModel> interfaces = new TreeMap<>(); Map<String, List<MethodModel>> methods = new TreeMap<>(); for (MethodModel method : context.getSupportedMethods()) { InterfaceModel targetInterface = context.asRequestMethodContext(method).getTargetInterface(); interfaces.put(targetInterface.getFullName(), targetInterface); if (methods.containsKey(targetInterface.getFullName())) { methods.get(targetInterface.getFullName()).add(method); } else { methods.put(targetInterface.getFullName(), new ArrayList<>(Arrays.asList(method))); } } for (Map.Entry<String, InterfaceModel> entry : interfaces.entrySet()) { InterfaceModel apiInterface = entry.getValue(); stubs.add(generateGrpcStub(context, apiInterface, methods.get(entry.getKey()))); } return stubs; }
private MethodDescriptorView generateMethodDescriptor(MethodContext context) { ImportTypeTable typeTable = context.getTypeTable(); MethodModel method = context.getMethodModel(); MethodConfig methodConfig = context.getMethodConfig(); SurfaceNamer namer = context.getNamer(); MethodDescriptorView.Builder methodDescriptorBuilder = MethodDescriptorView.newBuilder(); if (methodConfig.isGrpcStreaming()) { methodDescriptorBuilder.grpcStreamingType(methodConfig.getGrpcStreaming().getType()); } methodDescriptorBuilder.requestTypeName(method.getAndSaveRequestTypeName(typeTable, namer)); methodDescriptorBuilder.responseTypeName(method.getAndSaveResponseTypeName(typeTable, namer)); methodDescriptorBuilder.hasResponse(!method.isOutputTypeEmpty()); methodDescriptorBuilder.name(namer.getMethodDescriptorName(method)); methodDescriptorBuilder.protoMethodName(method.getSimpleName()); methodDescriptorBuilder.fullServiceName(context.getTargetInterface().getFullName()); methodDescriptorBuilder.transportSettingsVar(namer.getTransportSettingsVar(method)); methodDescriptorBuilder.headerRequestParams( headerRequestParamTransformer.generateHeaderRequestParams(context)); methodDescriptorBuilder.httpMethod(generateHttpFields(context)); return methodDescriptorBuilder.build(); } }
methodViewBuilder.stubName(namer.getStubName(context.getTargetInterface())); methodViewBuilder.settingsGetterName(namer.getSettingsFunctionName(method)); methodViewBuilder.callableName(context.getNamer().getCallableName(method));
.requestObjectInitCode(requestObjectInitCode) .mockResponse(mockRpcResponseView) .mockServiceVarName(namer.getMockServiceVarName(methodContext.getTargetInterface())) .name( synchronicity == Synchronicity.Sync (methodContext.getInterfaceConfig()), packageHasMultipleServices)) .clientMethodName(clientMethodName) .createStubFunctionName(namer.getCreateStubFunctionName(methodContext.getTargetInterface())) .grpcStubCallString(namer.getGrpcStubCallString(methodContext.getTargetInterface(), method)) .clientHasDefaultInstance(methodContext.getInterfaceConfig().hasDefaultInstance()) .methodDescriptor(getMethodDescriptorName(methodContext))