private boolean shouldAllowEmpty(MethodContext context, FieldModel field) { for (FieldModel requiredField : context.getMethodConfig().getRequiredFields()) { if (requiredField.equals(field)) { return false; } } return true; }
private List<ApiCallableView> generateStaticLangApiCallables(MethodContext context) { List<ApiCallableView> apiCallables = new ArrayList<>(); apiCallables.add(generateMainApiCallable(context)); if (context.getMethodConfig().isPageStreaming()) { apiCallables.add(generatePagedApiCallable(context)); } if (context.getMethodConfig().isLongRunningOperation()) { // Only Protobuf-based APIs have LongRunningOperations. apiCallables.add(generateOperationApiCallable((GapicMethodContext) context)); } return apiCallables; }
/** Determines whether a field is required */ private static boolean isRequired(FieldConfig fieldConfig, MethodContext context) { return fieldConfig != null && context .getMethodConfig() .getRequiredFieldConfigs() .stream() .anyMatch( fc -> fc.getField().getSimpleName().equals(fieldConfig.getField().getSimpleName())); }
/** * A utility method which creates the InitValueConfig map that contains the collection config * data. */ public static ImmutableMap<String, InitValueConfig> createCollectionMap(MethodContext context) { ImmutableMap.Builder<String, InitValueConfig> mapBuilder = ImmutableMap.builder(); Map<String, String> fieldNamePatterns = context.getMethodConfig().getFieldNamePatterns(); for (Map.Entry<String, String> fieldNamePattern : fieldNamePatterns.entrySet()) { SingleResourceNameConfig resourceNameConfig = context.getSingleResourceNameConfig(fieldNamePattern.getValue()); String apiWrapperClassName = context.getNamer().getApiWrapperClassName(context.getInterfaceConfig()); InitValueConfig initValueConfig = InitValueConfig.create(apiWrapperClassName, resourceNameConfig); mapBuilder.put(fieldNamePattern.getKey(), initValueConfig); } return mapBuilder.build(); }
public String getSampleResponseVarName(MethodContext context) { MethodConfig config = context.getMethodConfig(); if (config.getPageStreaming() != null) { return "responseItem"; } if (config.getGrpcStreaming() != null) { GrpcStreamingConfig.GrpcStreamingType type = config.getGrpcStreaming().getType(); if (type == GrpcStreamingConfig.GrpcStreamingType.ServerStreaming || type == GrpcStreamingConfig.GrpcStreamingType.BidiStreaming) { return "responseItem"; } } return "response"; }
/** Return JSDoc callback comment and return type comment for the given method. */ @Override public List<String> getReturnDocLines( TransformationContext context, MethodContext methodContext, Synchronicity synchronicity) { GapicMethodConfig methodConfig = (GapicMethodConfig) methodContext.getMethodConfig(); Method method = methodConfig.getMethod(); if (method.getRequestStreaming() && method.getResponseStreaming()) { return bidiStreamingReturnDocLines(method); } else if (method.getResponseStreaming()) { return responseStreamingReturnDocLines(method); } List<String> callbackLines = returnCallbackDocLines(context.getImportTypeTable(), methodConfig); List<String> returnObjectLines = returnObjectDocLines(context.getImportTypeTable(), methodConfig); return ImmutableList.<String>builder().addAll(callbackLines).addAll(returnObjectLines).build(); }
private List<BatchingPartitionKeyView> generatePartitionKeys(MethodContext context) { List<BatchingPartitionKeyView> keys = new ArrayList<>(); BatchingConfig batching = context.getMethodConfig().getBatching(); for (GenericFieldSelector fieldSelector : batching.getDiscriminatorFields()) { FieldModel selectedType = fieldSelector.getLastField(); BatchingPartitionKeyView key = BatchingPartitionKeyView.newBuilder() .fieldGetFunction(context.getNamer().getFieldGetFunctionName(selectedType)) .build(); keys.add(key); } return keys; } }
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(); }
@Before public void setUp() { valueSet = SampleValueSet.newBuilder().setId("test-sample-value-set-id").build(); parent = new OutputTransformer.ScopeTable(); child = new OutputTransformer.ScopeTable(parent); MockitoAnnotations.initMocks(this); when(context.getFeatureConfig()).thenReturn(featureConfig); when(context.getMethodConfig()).thenReturn(config); when(context.getMethodModel()).thenReturn(model); when(context.getNamer()).thenReturn(namer); when(context.getTypeTable()).thenReturn(typeTable); when(model.getSimpleName()).thenReturn("methodSimpleName"); when(namer.getSampleResponseVarName(context)).thenReturn("sampleResponseVarName"); }
private StaticLangApiMethodView createSmokeTestCaseApiMethodView(MethodContext methodContext) { StaticLangApiMethodView initialApiMethodView; if (methodContext.getMethodConfig().isPageStreaming()) { initialApiMethodView = apiMethodTransformer.generatePagedRequestObjectMethod(methodContext); } else { initialApiMethodView = apiMethodTransformer.generateRequestObjectMethod(methodContext); } StaticLangApiMethodView.Builder apiMethodView = initialApiMethodView.toBuilder(); InitCodeView initCodeView = initCodeTransformer.generateInitCode( methodContext, testCaseTransformer.createSmokeTestInitContext(methodContext)); apiMethodView.initCode(initCodeView); return apiMethodView.build(); } }
private InitCodeContext createResponseInitCodeContext( MethodContext context, SymbolTable symbolTable) { TypeModel outputType = context.getMethodModel().getOutputType(); if (context.getMethodConfig().isLongRunningOperation()) { outputType = context.getMethodConfig().getLongRunningConfig().getReturnType(); } return InitCodeContext.newBuilder() .initObjectType(outputType) .symbolTable(symbolTable) .suggestedName(Name.from("expected_response")) .initFieldConfigStrings(ImmutableList.of()) .initValueConfigMap(ImmutableMap.of()) .initFields(responseInitFields(outputType.getFields())) .fieldConfigMap(context.getProductConfig().getDefaultResourceNameFieldConfigMap()) .valueGenerator(valueGenerator) .additionalInitCodeNodes(createMockResponseAdditionalSubTrees(context)) .build(); }
private void setCommonApiCallableFields( MethodContext context, ApiCallableView.Builder apiCallableBuilder) { MethodModel method = context.getMethodModel(); SurfaceNamer namer = context.getNamer(); MethodConfig methodConfig = context.getMethodConfig(); apiCallableBuilder.methodName( namer.getApiMethodName(method, context.getMethodConfig().getVisibility())); apiCallableBuilder.asyncMethodName( namer.getAsyncApiMethodName(method, VisibilityConfig.PUBLIC)); apiCallableBuilder.memberName(namer.getSettingsMemberName(method)); apiCallableBuilder.settingsFunctionName(namer.getSettingsFunctionName(method)); apiCallableBuilder.grpcClientVarName(namer.getReroutedGrpcClientVarName(methodConfig)); apiCallableBuilder.transportSettingsVar(namer.getTransportSettingsVar(method)); apiCallableBuilder.httpMethod(generateHttpFields(context)); }
public StaticLangApiMethodView generatePagedFlattenedAsyncMethod( MethodContext context, List<ParamWithSimpleDoc> additionalParams) { MethodModel methodModel = context.getMethodModel(); SurfaceNamer namer = context.getNamer(); StaticLangApiMethodView.Builder methodViewBuilder = StaticLangApiMethodView.newBuilder(); setCommonFields(context, methodViewBuilder); methodViewBuilder.name( namer.getAsyncApiMethodName(methodModel, context.getMethodConfig().getVisibility())); methodViewBuilder.exampleName(namer.getAsyncApiMethodExampleName(methodModel)); setListMethodFields(context, Synchronicity.Async, methodViewBuilder); setFlattenedMethodFields( context, additionalParams, Synchronicity.Async, methodViewBuilder, Arrays.asList(CallingForm.FlattenedAsyncPaged)); return methodViewBuilder.type(ClientMethodType.PagedFlattenedAsyncMethod).build(); }
public StaticLangApiMethodView generateRequestObjectAsyncMethod( MethodContext context, List<ParamWithSimpleDoc> additionalParams, ClientMethodType type) { MethodModel method = context.getMethodModel(); SurfaceNamer namer = context.getNamer(); StaticLangApiMethodView.Builder methodViewBuilder = StaticLangApiMethodView.newBuilder(); setCommonFields(context, methodViewBuilder); methodViewBuilder.name( namer.getAsyncApiMethodName(method, context.getMethodConfig().getVisibility())); methodViewBuilder.exampleName(namer.getAsyncApiMethodExampleName(method)); setRequestObjectMethodFields( context, namer.getCallableAsyncMethodName(method), Synchronicity.Async, additionalParams, methodViewBuilder, Arrays.asList(CallingForm.RequestAsync)); setStaticLangAsyncReturnTypeName(context, methodViewBuilder); return methodViewBuilder.type(type).build(); }
public StaticLangApiMethodView generateGrpcStreamingRequestObjectMethod(MethodContext context) { MethodModel method = context.getMethodModel(); SurfaceNamer namer = context.getNamer(); StaticLangApiMethodView.Builder methodViewBuilder = StaticLangApiMethodView.newBuilder(); setCommonFields(context, methodViewBuilder); methodViewBuilder.name( namer.getGrpcStreamingApiMethodName(method, context.getMethodConfig().getVisibility())); methodViewBuilder.exampleName( namer.getGrpcStreamingApiMethodExampleName(context.getInterfaceConfig(), method)); setRequestObjectMethodFields( context, namer.getCallableMethodName(method), Synchronicity.Sync, methodViewBuilder, Arrays.asList(CallingForm.RequestStreamingServer)); setStaticLangGrpcStreamingReturnTypeName(context, methodViewBuilder); return methodViewBuilder.type(ClientMethodType.RequestObjectMethod).build(); }
protected void setServiceResponseTypeName( MethodContext context, StaticLangApiMethodView.Builder methodViewBuilder) { SurfaceNamer namer = context.getNamer(); if (context.getMethodConfig().isGrpcStreaming()) { // Only applicable for protobuf APIs. String returnTypeFullName = namer.getGrpcStreamingApiReturnTypeName(context, context.getTypeTable()); String returnTypeNickname = context.getTypeTable().getAndSaveNicknameFor(returnTypeFullName); methodViewBuilder.serviceResponseTypeName(returnTypeNickname); } else { String responseTypeName = context .getMethodModel() .getAndSaveResponseTypeName(context.getTypeTable(), context.getNamer()); methodViewBuilder.serviceResponseTypeName(responseTypeName); } }
public BatchingConfigView generateBatchingConfig(MethodContext context) { BatchingConfig batchingConfig = context.getMethodConfig().getBatching(); BatchingConfigView.Builder batchingConfigView = BatchingConfigView.newBuilder(); batchingConfigView.elementCountThreshold(batchingConfig.getElementCountThreshold()); batchingConfigView.requestByteThreshold(batchingConfig.getRequestByteThreshold()); batchingConfigView.delayThresholdMillis(batchingConfig.getDelayThresholdMillis()); batchingConfigView.flowControlElementLimit(batchingConfig.getFlowControlElementLimit()); batchingConfigView.flowControlByteLimit(batchingConfig.getFlowControlByteLimit()); batchingConfigView.flowControlLimitExceededBehavior( batchingConfig.getFlowControlLimitConfig().toString()); return batchingConfigView.build(); }
public StaticLangApiMethodView generateOperationCallableMethod(MethodContext context) { MethodModel method = context.getMethodModel(); SurfaceNamer namer = context.getNamer(); StaticLangApiMethodView.Builder methodViewBuilder = StaticLangApiMethodView.newBuilder(); setCommonFields(context, methodViewBuilder); methodViewBuilder.name(namer.getOperationCallableMethodName(method)); methodViewBuilder.exampleName(context.getNamer().getOperationCallableMethodExampleName(method)); setCallableMethodFields( context, namer.getOperationCallableName(method), methodViewBuilder, Arrays.asList(CallingForm.LongRunningCallable)); TypeModel returnType = context.getMethodConfig().getLongRunningConfig().getReturnType(); methodViewBuilder.responseTypeName(context.getTypeTable().getAndSaveNicknameFor(returnType)); methodViewBuilder.operationMethod(lroTransformer.generateDetailView(context)); return methodViewBuilder.type(ClientMethodType.OperationCallableMethod).build(); }
private StaticLangApiMethodSnippetView generateOperationRequestMethod( MethodContext methodContext) { SurfaceNamer namer = methodContext.getNamer(); StaticLangApiMethodView method = generateInitCode( apiMethodTransformer.generateOperationRequestObjectMethod(methodContext), methodContext, methodContext.getMethodConfig().getRequiredFieldConfigs(), InitCodeOutputType.SingleObject, CallingForm.LongRunningRequest); String callerResponseTypeName = method.operationMethod().clientReturnTypeName(); return StaticLangApiMethodSnippetView.newBuilder() .method(method) .snippetMethodName(method.name() + "_RequestObject") .callerResponseTypeName(callerResponseTypeName) .apiClassName(namer.getApiWrapperClassName(methodContext.getInterfaceConfig())) .apiVariableName(method.apiVariableName()) .build(); }
public InitCodeContext createRequestInitCodeContext( MethodContext context, SymbolTable symbolTable, Collection<FieldConfig> fieldConfigs, InitCodeOutputType outputType, TestValueGenerator valueGenerator) { return InitCodeContext.newBuilder() .initObjectType(context.getMethodModel().getInputType()) .symbolTable(symbolTable) .suggestedName(Name.from("request")) .initFieldConfigStrings(context.getMethodConfig().getSampleCodeInitFields()) .initValueConfigMap(InitCodeTransformer.createCollectionMap(context)) .initFields(FieldConfig.toFieldTypeIterable(fieldConfigs)) .fieldConfigMap(FieldConfig.toFieldConfigMap(fieldConfigs)) .outputType(outputType) .valueGenerator(valueGenerator) .build(); }