use of com.google.api.codegen.config.MethodContext in project toolkit by googleapis.
the class JavaApiMethodTransformer method generateLongRunningMethods.
private List<StaticLangApiMethodView> generateLongRunningMethods(MethodContext methodContext, @Nullable SampleContext sampleContext) {
List<StaticLangApiMethodView> apiMethods = new ArrayList<>();
InterfaceContext interfaceContext = methodContext.getSurfaceInterfaceContext();
interfaceContext.getImportTypeTable().saveNicknameFor("com.google.api.gax.rpc.OperationCallable");
MethodConfig methodConfig = methodContext.getMethodConfig();
if (methodConfig.isFlattening()) {
List<FlatteningConfig> flatteningConfigs = FlatteningConfig.withRepeatedResourceInSampleOnly(methodConfig.getFlatteningConfigs());
for (FlatteningConfig flatteningGroup : flatteningConfigs) {
MethodContext flattenedMethodContext = interfaceContext.asFlattenedMethodContext(methodContext, flatteningGroup).withCallingForms(Collections.singletonList(CallingForm.LongRunningFlattenedAsync));
apiMethods.add(generateAsyncOperationFlattenedMethod(flattenedMethodContext, sampleContext));
}
}
apiMethods.add(generateAsyncOperationRequestObjectMethod(methodContext.withCallingForms(Collections.singletonList(CallingForm.LongRunningRequestAsync)), sampleContext));
apiMethods.add(generateOperationCallableMethod(methodContext.withCallingForms(Collections.singletonList(CallingForm.LongRunningCallable)), sampleContext));
apiMethods.add(generateCallableMethod(methodContext.withCallingForms(Collections.singletonList(CallingForm.Callable)), sampleContext));
return apiMethods;
}
use of com.google.api.codegen.config.MethodContext in project toolkit by googleapis.
the class JavaApiMethodTransformer method generateUnaryMethods.
private List<StaticLangApiMethodView> generateUnaryMethods(MethodContext methodContext, @Nullable SampleContext sampleContext) {
List<StaticLangApiMethodView> apiMethods = new ArrayList<>();
InterfaceContext interfaceContext = methodContext.getSurfaceInterfaceContext();
MethodConfig methodConfig = methodContext.getMethodConfig();
if (methodConfig.isFlattening()) {
List<FlatteningConfig> flatteningConfigs = FlatteningConfig.withRepeatedResourceInSampleOnly(methodConfig.getFlatteningConfigs());
for (FlatteningConfig flatteningGroup : flatteningConfigs) {
MethodContext flattenedMethodContext = interfaceContext.asFlattenedMethodContext(methodContext, flatteningGroup);
apiMethods.add(generateFlattenedMethod(flattenedMethodContext.withCallingForms(Collections.singletonList(CallingForm.Flattened)), sampleContext));
}
}
apiMethods.add(generateRequestObjectMethod(methodContext.withCallingForms(Collections.singletonList(CallingForm.Request)), sampleContext));
apiMethods.add(generateCallableMethod(methodContext.withCallingForms(Collections.singletonList(CallingForm.Callable)), sampleContext));
return apiMethods;
}
use of com.google.api.codegen.config.MethodContext in project toolkit by googleapis.
the class JavaApiMethodTransformer method generatePagedStreamingMethods.
private List<StaticLangApiMethodView> generatePagedStreamingMethods(MethodContext methodContext, @Nullable SampleContext sampleContext) {
List<StaticLangApiMethodView> apiMethods = new ArrayList<>();
InterfaceContext interfaceContext = methodContext.getSurfaceInterfaceContext();
MethodConfig methodConfig = methodContext.getMethodConfig();
if (methodConfig.isFlattening()) {
List<FlatteningConfig> flatteningConfigs = FlatteningConfig.withRepeatedResourceInSampleOnly(methodConfig.getFlatteningConfigs());
for (FlatteningConfig flatteningGroup : flatteningConfigs) {
MethodContext flattenedMethodContext = interfaceContext.asFlattenedMethodContext(methodContext, flatteningGroup).withCallingForms(ImmutableList.of(CallingForm.FlattenedPaged));
apiMethods.add(generatePagedFlattenedMethod(flattenedMethodContext, sampleContext));
}
}
apiMethods.add(generatePagedRequestObjectMethod(methodContext.withCallingForms(ImmutableList.of(CallingForm.RequestPaged)), sampleContext));
apiMethods.add(generatePagedCallableMethod(methodContext.withCallingForms(ImmutableList.of(CallingForm.CallablePaged)), sampleContext));
apiMethods.add(generateUnpagedListCallableMethod(methodContext.withCallingForms(Collections.singletonList(CallingForm.CallableList)), sampleContext));
return apiMethods;
}
use of com.google.api.codegen.config.MethodContext in project toolkit by googleapis.
the class InitCodeTransformer method buildInitCodeView.
/**
* Transform {@code InitCodeNode}s into {@code InitCodeView}.
*
* @param orderedItems These nodes are converted into request-initialization code. It contains all
* initializations regardless of whether they are parameters to the sample function. The
* initialization is "shallow": children nodes are not initialized. If children nodes should
* also be initialized, callers must also include them in the list.
* @param libArguments Used by samples for flattened client lib methods. These nodes contain
* values that become arguments to the method.
* @param sampleFuncParams Subset of {@code orderedItems} containing only items that are function
* parameters. Unlike {@code orderedItems}, the {@code sampleFuncParams} are "deep". The init
* code for these nodes and their children are commented out so that they don't clobber the
* function arguments.
*/
private InitCodeView buildInitCodeView(MethodContext context, List<InitCodeNode> orderedItems, List<InitCodeNode> libArguments, List<InitCodeNode> sampleFuncParams) {
ImportTypeTable typeTable = context.getTypeTable();
SurfaceNamer namer = context.getNamer();
// Initialize the type table with the apiClassName since each sample will be using the
// apiClass.
typeTable.getAndSaveNicknameFor(namer.getFullyQualifiedApiWrapperClassName(context.getInterfaceConfig()));
List<FieldSettingView> fieldSettings = getFieldSettings(context, libArguments);
List<FieldSettingView> optionalFieldSettings = fieldSettings.stream().filter(f -> !f.required()).collect(Collectors.toList());
List<FieldSettingView> requiredFieldSettings = fieldSettings.stream().filter(FieldSettingView::required).collect(Collectors.toList());
List<SampleFunctionParameterView> argDefaultParams = new ArrayList<>();
List<InitCodeLineView> argDefaultLines = new ArrayList<>();
for (InitCodeNode param : sampleFuncParams) {
List<InitCodeNode> paramInits = param.listInInitializationOrder();
argDefaultLines.addAll(generateSurfaceInitCodeLines(context, paramInits));
// The param itself is always at the end.
InitCodeLineView initLine = argDefaultLines.get(argDefaultLines.size() - 1);
checkArgument(initLine.lineType() == InitCodeLineType.SimpleInitLine, "Standalone samples only support primitive types for CLI arguments for now.");
SimpleInitCodeLineView simpleInitLine = (SimpleInitCodeLineView) initLine;
argDefaultParams.add(SampleFunctionParameterView.newBuilder().initValue(simpleInitLine.initValue()).identifier(simpleInitLine.identifier()).upperCamelIdentifier(param.getIdentifier().toUpperCamel()).typeName(simpleInitLine.typeName()).isEnum(simpleInitLine.isEnum()).cliFlagName(param.getIdentifier().toLowerUnderscore()).cliFlagDefaultValue(getCliFlagDefaultValue(param)).description(param.getDescription()).build());
// Since we're going to write the inits for the params here,
// remove so we don't init twice.
orderedItems.removeAll(paramInits);
}
return InitCodeView.newBuilder().argDefaultLines(argDefaultLines).argDefaultParams(argDefaultParams).lines(generateSurfaceInitCodeLines(context, orderedItems)).topLevelLines(generateSurfaceInitCodeLines(context, libArguments)).fieldSettings(fieldSettings).optionalFieldSettings(optionalFieldSettings).requiredFieldSettings(requiredFieldSettings).importSection(importSectionTransformer.generateImportSection(context, orderedItems)).topLevelIndexFileImportName(namer.getTopLevelIndexFileImportName()).build();
}
use of com.google.api.codegen.config.MethodContext in project toolkit by googleapis.
the class PathTemplateTransformer method getResourceNameConfigsUsedByInterface.
private static List<ResourceNameConfig> getResourceNameConfigsUsedByInterface(InterfaceContext context) {
InterfaceConfig interfaceConfig = context.getInterfaceConfig();
Set<String> foundSet = new HashSet<>();
List<ResourceNameConfig> resourceNameConfigs = new ArrayList<>();
for (SingleResourceNameConfig config : interfaceConfig.getSingleResourceNameConfigs()) {
resourceNameConfigs.add(config);
foundSet.add(config.getEntityId());
}
for (MethodConfig methodConfig : interfaceConfig.getMethodConfigs()) {
MethodContext methodContext = context.asRequestMethodContext(methodConfig.getMethodModel());
for (String fieldNamePattern : methodConfig.getFieldNamePatterns().values()) {
addSingleResourceNameConfigsUsedByInterface(methodContext, fieldNamePattern, foundSet, resourceNameConfigs);
addResourceNameOneofConfigsUsedByInterface(context, fieldNamePattern, foundSet, resourceNameConfigs);
}
}
return resourceNameConfigs;
}
Aggregations