public List<InterfaceModel> getGrpcInterfacesToMock( ApiModel model, GapicProductConfig productConfig) { Map<String, InterfaceModel> interfaces = new LinkedHashMap<>(); if (!productConfig.getTransportProtocol().equals(TransportProtocol.GRPC)) { return ImmutableList.of(); } for (InterfaceModel apiInterface : model.getInterfaces()) { if (!productConfig.hasInterfaceConfig(apiInterface)) { continue; } if (!apiInterface.isReachable()) { continue; } interfaces.putAll(getGrpcInterfacesForService(model, productConfig, apiInterface)); } return new ArrayList<>(interfaces.values()); }
public Map<String, InterfaceModel> getGrpcInterfacesForService( ApiModel model, GapicProductConfig productConfig, InterfaceModel apiInterface) { if (!productConfig.getTransportProtocol().equals(TransportProtocol.GRPC)) { return ImmutableMap.of(); } Map<String, InterfaceModel> interfaces = new LinkedHashMap<>(); interfaces.put(apiInterface.getFullName(), apiInterface); InterfaceConfig interfaceConfig = productConfig.getInterfaceConfig(apiInterface); for (MethodConfig methodConfig : interfaceConfig.getMethodConfigs()) { String reroute = methodConfig.getRerouteToGrpcInterface(); if (!Strings.isNullOrEmpty(reroute)) { InterfaceModel targetInterface = model.getInterface(reroute); interfaces.put(reroute, targetInterface); } } return interfaces; }
public List<HeaderRequestParamView> generateHeaderRequestParams(MethodContext context) { if (!context.getProductConfig().getTransportProtocol().equals(TransportProtocol.GRPC)) { return ImmutableList.of(); } GapicMethodConfig methodConfig = (GapicMethodConfig) context.getMethodConfig(); Method method = methodConfig.getMethod(); SurfaceNamer namer = context.getNamer(); if (method.getInputType() == null || !method.getInputType().isMessage()) { return ImmutableList.of(); } ImmutableList.Builder<HeaderRequestParamView> headerRequestParams = ImmutableList.builder(); MessageType inputMessageType = method.getInputType().getMessageType(); for (String headerRequestParam : methodConfig.getHeaderRequestParams()) { headerRequestParams.add( generateHeaderRequestParam(headerRequestParam, inputMessageType, namer)); } return headerRequestParams.build(); }
private void addGrpcStreamingTestImports( InterfaceContext context, GrpcStreamingType streamingType) { ImportTypeTable typeTable = context.getImportTypeTable(); if (context.getProductConfig().getTransportProtocol().equals(TransportProtocol.GRPC)) { typeTable.saveNicknameFor("com.google.api.gax.grpc.testing.MockStreamObserver"); typeTable.saveNicknameFor("com.google.api.gax.rpc.ApiStreamObserver"); switch (streamingType) { case BidiStreaming: typeTable.saveNicknameFor("com.google.api.gax.rpc.BidiStreamingCallable"); break; case ClientStreaming: typeTable.saveNicknameFor("com.google.api.gax.rpc.ClientStreamingCallable"); break; case ServerStreaming: typeTable.saveNicknameFor("com.google.api.gax.rpc.ServerStreamingCallable"); break; default: throw new IllegalArgumentException("Invalid streaming type: " + streamingType); } } } }
private String getMethodDescriptorName(MethodContext context) { if (context.getProductConfig().getTransportProtocol().equals(TransportProtocol.HTTP)) { TypeName rpcStubClassName = new TypeName( context .getNamer() .getFullyQualifiedRpcStubType( context.getInterfaceConfig().getInterfaceModel(), context.getProductConfig().getTransportProtocol())); return context .getTypeTable() .getAndSaveNicknameForInnerType( rpcStubClassName.getFullName(), context.getNamer().getMethodDescriptorName(context.getMethodModel())); } return null; }
private void addMockServiceImports(InterfaceContext context) { ImportTypeTable typeTable = context.getImportTypeTable(); typeTable.saveNicknameFor("java.util.List"); typeTable.saveNicknameFor("com.google.api.core.BetaApi"); typeTable.saveNicknameFor("com.google.api.gax.grpc.testing.MockGrpcService"); if (context.getProductConfig().getTransportProtocol().equals(TransportProtocol.GRPC)) { typeTable.saveNicknameFor("com.google.protobuf.GeneratedMessageV3"); typeTable.saveNicknameFor("io.grpc.ServerServiceDefinition"); } }
serviceDoc.serviceTitle(context.serviceTitle()); serviceDoc.defaultTransportProviderBuilder( namer.getDefaultTransportProviderBuilder(productConfig.getTransportProtocol())); serviceDoc.defaultChannelProviderBuilder( namer.getDefaultChannelProviderBuilder(productConfig.getTransportProtocol())); return serviceDoc.build();
private HttpMethodView generateHttpFields(MethodContext context) { if (context.getProductConfig().getTransportProtocol().equals(TransportProtocol.HTTP)) { Method method = ((DiscoveryMethodModel) context.getMethodModel()).getDiscoMethod(); HttpMethodView.Builder httpMethodView = HttpMethodView.newBuilder();
private StaticLangCallableFactoryView generateCallableFactoryClass( InterfaceContext context, GapicProductConfig productConfig) { SurfaceNamer namer = context.getNamer(); InterfaceConfig interfaceConfig = context.getInterfaceConfig(); addCallableFactoryImports(context); StaticLangCallableFactoryView.Builder callableFactory = StaticLangCallableFactoryView.newBuilder(); callableFactory.doc(serviceTransformer.generateServiceDoc(context, null, productConfig)); callableFactory.releaseLevelAnnotation(namer.getReleaseAnnotation(ReleaseLevel.BETA)); callableFactory.name( namer.getCallableFactoryClassName(interfaceConfig, productConfig.getTransportProtocol())); return callableFactory.build(); }
private void addMockServiceImplImports(InterfaceContext context) { ImportTypeTable typeTable = context.getImportTypeTable(); typeTable.saveNicknameFor("java.util.ArrayList"); typeTable.saveNicknameFor("java.util.List"); typeTable.saveNicknameFor("java.util.LinkedList"); typeTable.saveNicknameFor("java.util.Queue"); typeTable.saveNicknameFor("com.google.api.core.BetaApi"); typeTable.saveNicknameFor("com.google.common.collect.Lists"); if (context.getProductConfig().getTransportProtocol().equals(TransportProtocol.GRPC)) { typeTable.saveNicknameFor("com.google.protobuf.GeneratedMessageV3"); typeTable.saveNicknameFor("io.grpc.stub.StreamObserver"); } }
public List<MockGrpcMethodView> createMockGrpcMethodViews(InterfaceContext context) { if (!context.getProductConfig().getTransportProtocol().equals(TransportProtocol.GRPC)) { return ImmutableList.of(); } List<? extends MethodModel> methods = context.getInterfaceMethods(); ArrayList<MockGrpcMethodView> mocks = new ArrayList<>(methods.size()); for (MethodModel method : methods) { if (context.getMethodConfig(method) == null) { continue; } MethodContext methodContext = context.asRequestMethodContext(method); String requestTypeName = method.getAndSaveRequestTypeName(methodContext.getTypeTable(), methodContext.getNamer()); String responseTypeName = method.getAndSaveResponseTypeName(methodContext.getTypeTable(), methodContext.getNamer()); MethodConfig methodConfig = methodContext.getMethodConfig(); mocks.add( MockGrpcMethodView.newBuilder() .name(methodContext.getNamer().getApiMethodName(method, VisibilityConfig.PUBLIC)) .requestTypeName(requestTypeName) .responseTypeName(responseTypeName) .grpcStreamingType(methodConfig.getGrpcStreamingType()) .streamHandleTypeName(methodContext.getNamer().getStreamingServerName(method)) .build()); } return mocks; }
public GapicProductConfig withPackageName(String packageName) { return new AutoValue_GapicProductConfig( getInterfaceConfigMap(), packageName, getDomainLayerLocation(), getReleaseLevel(), getResourceNameMessageConfigs(), getCopyrightLines(), getLicenseLines(), getResourceNameConfigs(), getProtoParser(), getTransportProtocol(), getDefaultResourceNameFieldConfigMap(), getConfigSchemaVersion(), enableStringFormattingFunctionsOverride()); }
xsettingsClass.servicePort(productServiceConfig.getServicePort(context.getServiceAddress())); xsettingsClass.authScopes(model.getAuthScopes(productConfig)); if (productConfig.getTransportProtocol().equals(TransportProtocol.HTTP)) { xsettingsClass.useDefaultServicePortInEndpoint(false); xsettingsClass.transportProtocol(productConfig.getTransportProtocol()); xsettingsClass.rpcTransportName( namer.getTransportClassName(productConfig.getTransportProtocol())); xsettingsClass.transportNameGetter( namer.getTransporNameGetMethod(productConfig.getTransportProtocol())); xsettingsClass.defaultTransportProviderBuilder( namer.getDefaultTransportProviderBuilder(productConfig.getTransportProtocol())); xsettingsClass.transportProvider( namer.getTransportProvider(productConfig.getTransportProtocol())); xsettingsClass.instantiatingChannelProvider( namer.getInstantiatingChannelProvider(productConfig.getTransportProtocol())); xsettingsClass.retryParamsDefinitions( retryDefinitionsTransformer.generateRetryParamsDefinitions(context)); xsettingsClass.transportProtocol(productConfig.getTransportProtocol()); context, namer.getApiRpcStubClassName( interfaceConfig.getInterfaceModel(), productConfig.getTransportProtocol())));
private StaticLangFileView<StaticLangCallableFactoryView> generateCallableFactoryClassFile( InterfaceContext context, GapicProductConfig productConfig) { StaticLangFileView.Builder<StaticLangCallableFactoryView> fileView = StaticLangFileView.newBuilder(); fileView.classView(generateCallableFactoryClass(context, productConfig)); fileView.templateFileName(callableFactoryTemplateFilename); String outputPath = pathMapper.getOutputPath( context.getInterfaceModel().getFullName(), context.getProductConfig()); String className = context .getNamer() .getCallableFactoryClassName( context.getInterfaceConfig(), productConfig.getTransportProtocol()); fileView.outputPath(outputPath + File.separator + className + ".java"); // must be done as the last step to catch all imports fileView.fileHeader(fileHeaderTransformer.generateFileHeader(context, className)); return fileView.build(); }
private StaticLangFileView<StaticLangRpcStubView> generateRpcStubClassFile( InterfaceContext context, GapicProductConfig productConfig) { StaticLangFileView.Builder<StaticLangRpcStubView> fileView = StaticLangFileView.newBuilder(); fileView.classView(generateRpcStubClass(context, productConfig)); fileView.templateFileName(rpcStubTemplateFilename); String outputPath = pathMapper.getOutputPath( context.getInterfaceModel().getFullName(), context.getProductConfig()); String className = context .getNamer() .getApiRpcStubClassName( context.getInterfaceConfig().getInterfaceModel(), productConfig.getTransportProtocol()); fileView.outputPath(outputPath + File.separator + className + ".java"); // must be done as the last step to catch all imports fileView.fileHeader(fileHeaderTransformer.generateFileHeader(context, className)); return fileView.build(); }
private void addApiImports(InterfaceContext context) { ImportTypeTable typeTable = context.getImportTypeTable(); typeTable.saveNicknameFor("com.google.api.core.BetaApi"); typeTable.saveNicknameFor("com.google.api.gax.core.BackgroundResource"); typeTable.saveNicknameFor("com.google.api.gax.rpc.UnaryCallable"); typeTable.saveNicknameFor("com.google.api.pathtemplate.PathTemplate"); typeTable.saveNicknameFor("java.io.Closeable"); typeTable.saveNicknameFor("java.io.IOException"); typeTable.saveNicknameFor("java.util.concurrent.TimeUnit"); typeTable.saveNicknameFor("javax.annotation.Generated"); if (context.getInterfaceConfig().hasLongRunningOperations()) { typeTable.saveNicknameFor("com.google.api.gax.longrunning.OperationFuture"); typeTable.saveNicknameFor("com.google.longrunning.Operation"); typeTable.saveNicknameFor("com.google.longrunning.OperationsClient"); } switch (context.getProductConfig().getTransportProtocol()) { case HTTP: typeTable.saveNicknameFor("java.util.List"); typeTable.saveNicknameFor("java.util.ArrayList"); typeTable.saveNicknameFor("java.util.concurrent.ScheduledExecutorService"); } }
interfaceConfig.getInterfaceModel(), productConfig.getTransportProtocol()); stubClass.releaseLevelAnnotation(namer.getReleaseAnnotation(ReleaseLevel.BETA)); stubClass.name(name); apiMethodsContext, namer.getCallableFactoryClassName( interfaceConfig, productConfig.getTransportProtocol()))); stubClass.methodDescriptors( apiCallableTransformer.generateMethodDescriptors(apiMethodsContext));
private void addCallableFactoryImports(InterfaceContext context) { ImportTypeTable typeTable = context.getImportTypeTable(); typeTable.saveNicknameFor("com.google.api.gax.rpc.OperationCallable"); typeTable.saveNicknameFor("com.google.api.gax.rpc.OperationCallSettings"); typeTable.saveNicknameFor("com.google.api.gax.rpc.BidiStreamingCallable"); typeTable.saveNicknameFor("com.google.api.gax.rpc.StreamingCallSettings"); typeTable.saveNicknameFor("com.google.api.gax.rpc.ServerStreamingCallSettings"); typeTable.saveNicknameFor("com.google.api.gax.rpc.ServerStreamingCallable"); typeTable.saveNicknameFor("com.google.api.gax.rpc.ClientStreamingCallable"); typeTable.saveNicknameFor("com.google.api.gax.rpc.ClientContext"); typeTable.saveNicknameFor("com.google.api.gax.rpc.UnaryCallable"); typeTable.saveNicknameFor("com.google.api.gax.rpc.UnaryCallSettings"); typeTable.saveNicknameFor("com.google.api.gax.rpc.PagedCallSettings"); typeTable.saveNicknameFor("com.google.api.gax.rpc.BatchingCallSettings"); switch (context.getProductConfig().getTransportProtocol()) { case GRPC: typeTable.saveNicknameFor("com.google.api.gax.grpc.GrpcCallableFactory"); typeTable.saveNicknameFor("com.google.api.gax.grpc.GrpcStubCallableFactory"); typeTable.saveNicknameFor("com.google.longrunning.Operation"); typeTable.saveNicknameFor("com.google.longrunning.stub.OperationsStub"); break; case HTTP: typeTable.saveNicknameFor("com.google.api.gax.httpjson.HttpJsonCallableFactory"); typeTable.saveNicknameFor("com.google.api.gax.httpjson.HttpJsonStubCallableFactory"); break; } }
private SettingsDocView generateSettingsDoc( InterfaceContext context, StaticLangApiMethodView exampleApiMethod, GapicProductConfig productConfig, String settingsClassName, String apiClassName) { SurfaceNamer namer = context.getNamer(); SettingsDocView.Builder settingsDoc = SettingsDocView.newBuilder(); settingsDoc.serviceHostname( productServiceConfig.getServiceHostname(context.getServiceAddress())); settingsDoc.servicePort(productServiceConfig.getServicePort(context.getServiceAddress())); settingsDoc.transportProtocol(productConfig.getTransportProtocol()); settingsDoc.exampleApiMethodName(exampleApiMethod.name()); settingsDoc.exampleApiMethodSettingsGetter(exampleApiMethod.settingsGetterName()); settingsDoc.apiClassName(apiClassName); settingsDoc.settingsVarName(namer.getApiSettingsVariableName(context.getInterfaceConfig())); settingsDoc.settingsClassName(settingsClassName); settingsDoc.settingsBuilderVarName( namer.getApiSettingsBuilderVarName(context.getInterfaceConfig())); settingsDoc.hasDefaultInstance(context.getInterfaceConfig().hasDefaultInstance()); return settingsDoc.build(); } }
typeTable.saveNicknameFor("com.google.protobuf.Any"); switch (context.getProductConfig().getTransportProtocol()) { case GRPC: typeTable.saveNicknameFor("com.google.api.gax.rpc.ApiClientHeaderProvider");