use of com.google.api.codegen.config.MethodModel in project toolkit by googleapis.
the class GoGapicSurfaceTransformer method addXExampleImports.
@VisibleForTesting
void addXExampleImports(InterfaceContext context, Iterable<MethodModel> methods) {
ImportTypeTable typeTable = context.getImportTypeTable();
typeTable.saveNicknameFor("golang.org/x/net/context;;;");
typeTable.saveNicknameFor(context.getProductConfig().getPackageName() + ";;;");
for (MethodModel method : methods) {
method.getAndSaveRequestTypeName(context.getImportTypeTable(), context.getNamer());
}
addContextImports(context, ImportContext.EXAMPLE, methods);
}
use of com.google.api.codegen.config.MethodModel in project toolkit by googleapis.
the class JavaSurfaceTestTransformer method createSmokeTestClassViewBuilder.
/**
* Package-private
*
* <p>A helper method that creates a partially initialized builder that can be customized and
* build the smoke test class view later.
*/
SmokeTestClassView.Builder createSmokeTestClassViewBuilder(InterfaceContext context) {
addSmokeTestImports(context);
MethodModel method = context.getInterfaceConfig().getSmokeTestConfig().getMethod();
SurfaceNamer namer = context.getNamer();
FlatteningConfig flatteningGroup = testCaseTransformer.getSmokeTestFlatteningGroup(context.getMethodConfig(method), context.getInterfaceConfig().getSmokeTestConfig());
MethodContext methodContext = context.asFlattenedMethodContext(method, flatteningGroup);
SmokeTestClassView.Builder testClass = SmokeTestClassView.newBuilder();
StaticLangApiMethodView apiMethodView = createSmokeTestCaseApiMethodView(methodContext);
testClass.apiSettingsClassName(namer.getApiSettingsClassName(context.getInterfaceConfig()));
testClass.apiClassName(namer.getApiWrapperClassName(context.getInterfaceConfig()));
testClass.templateFileName(SMOKE_TEST_TEMPLATE_FILE);
testClass.apiMethod(apiMethodView);
testClass.requireProjectId(testCaseTransformer.requireProjectIdInSmokeTest(apiMethodView.initCode(), context.getNamer()));
// Imports must be done as the last step to catch all imports.
FileHeaderView fileHeader = fileHeaderTransformer.generateFileHeader(context);
testClass.fileHeader(fileHeader);
return testClass;
}
use of com.google.api.codegen.config.MethodModel in project toolkit by googleapis.
the class JavaSurfaceTransformer method generateApiMethods.
private List<StaticLangApiMethodView> generateApiMethods(InterfaceContext context) {
List<StaticLangApiMethodView> apiMethods = new ArrayList<>();
for (MethodModel method : context.getSupportedMethods()) {
MethodConfig methodConfig = context.getMethodConfig(method);
MethodContext requestMethodContext = context.asRequestMethodContext(method);
if (methodConfig.isPageStreaming()) {
if (methodConfig.isFlattening()) {
for (FlatteningConfig flatteningGroup : methodConfig.getFlatteningConfigs()) {
MethodContext flattenedMethodContext = context.asFlattenedMethodContext(method, flatteningGroup);
apiMethods.add(apiMethodTransformer.generatePagedFlattenedMethod(flattenedMethodContext));
if (hasAnyResourceNameParameter(flatteningGroup)) {
apiMethods.add(apiMethodTransformer.generatePagedFlattenedMethod(flattenedMethodContext.withResourceNamesInSamplesOnly()));
}
}
}
apiMethods.add(apiMethodTransformer.generatePagedRequestObjectMethod(requestMethodContext));
apiMethods.add(apiMethodTransformer.generatePagedCallableMethod(requestMethodContext));
apiMethods.add(apiMethodTransformer.generateUnpagedListCallableMethod(requestMethodContext));
} else if (methodConfig.isGrpcStreaming()) {
ImportTypeTable typeTable = context.getImportTypeTable();
switch(methodConfig.getGrpcStreamingType()) {
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: " + methodConfig.getGrpcStreamingType());
}
apiMethods.add(apiMethodTransformer.generateCallableMethod(requestMethodContext));
} else if (methodConfig.isLongRunningOperation()) {
context.getImportTypeTable().saveNicknameFor("com.google.api.gax.rpc.OperationCallable");
if (methodConfig.isFlattening()) {
for (FlatteningConfig flatteningGroup : methodConfig.getFlatteningConfigs()) {
MethodContext flattenedMethodContext = context.asFlattenedMethodContext(method, flatteningGroup);
apiMethods.add(apiMethodTransformer.generateAsyncOperationFlattenedMethod(flattenedMethodContext));
if (hasAnyResourceNameParameter(flatteningGroup)) {
apiMethods.add(apiMethodTransformer.generateAsyncOperationFlattenedMethod(flattenedMethodContext.withResourceNamesInSamplesOnly()));
}
}
}
apiMethods.add(apiMethodTransformer.generateAsyncOperationRequestObjectMethod(requestMethodContext));
apiMethods.add(apiMethodTransformer.generateOperationCallableMethod(requestMethodContext));
apiMethods.add(apiMethodTransformer.generateCallableMethod(requestMethodContext));
} else {
if (methodConfig.isFlattening()) {
for (FlatteningConfig flatteningGroup : methodConfig.getFlatteningConfigs()) {
MethodContext flattenedMethodContext = context.asFlattenedMethodContext(method, flatteningGroup);
apiMethods.add(apiMethodTransformer.generateFlattenedMethod(flattenedMethodContext));
if (hasAnyResourceNameParameter(flatteningGroup)) {
apiMethods.add(apiMethodTransformer.generateFlattenedMethod(flattenedMethodContext.withResourceNamesInSamplesOnly()));
}
}
}
apiMethods.add(apiMethodTransformer.generateRequestObjectMethod(requestMethodContext));
apiMethods.add(apiMethodTransformer.generateCallableMethod(requestMethodContext));
}
}
return apiMethods;
}
use of com.google.api.codegen.config.MethodModel in project toolkit by googleapis.
the class JavaSurfaceTransformer method generatePagedResponseWrapper.
private StaticLangPagedResponseView generatePagedResponseWrapper(MethodContext context, ImportTypeTable typeTable) {
MethodModel method = context.getMethodModel();
FieldModel resourceField = context.getMethodConfig().getPageStreaming().getResourcesField();
StaticLangPagedResponseView.Builder pagedResponseWrapper = StaticLangPagedResponseView.newBuilder();
String pagedResponseTypeName = context.getNamer().getPagedResponseTypeInnerName(method, typeTable, resourceField);
pagedResponseWrapper.pagedResponseTypeName(pagedResponseTypeName);
pagedResponseWrapper.pageTypeName(context.getNamer().getPageTypeInnerName(method, typeTable, resourceField));
pagedResponseWrapper.fixedSizeCollectionTypeName(context.getNamer().getFixedSizeCollectionTypeInnerName(method, typeTable, resourceField));
pagedResponseWrapper.requestTypeName(method.getAndSaveRequestTypeName(context.getTypeTable(), context.getNamer()));
pagedResponseWrapper.responseTypeName(method.getAndSaveResponseTypeName(context.getTypeTable(), context.getNamer()));
pagedResponseWrapper.resourceTypeName(typeTable.getAndSaveNicknameForElementType(resourceField));
pagedResponseWrapper.iterateMethods(getIterateMethods(context));
return pagedResponseWrapper.build();
}
use of com.google.api.codegen.config.MethodModel in project toolkit by googleapis.
the class NodeJSGapicSurfaceTestTransformer method createSmokeTestClassView.
private SmokeTestClassView createSmokeTestClassView(GapicInterfaceContext context, boolean packageHasMultipleServices) {
SurfaceNamer namer = context.getNamer();
String name = namer.getSmokeTestClassName(context.getInterfaceConfig());
MethodModel method = context.getInterfaceConfig().getSmokeTestConfig().getMethod();
FlatteningConfig flatteningGroup = testCaseTransformer.getSmokeTestFlatteningGroup(context.getMethodConfig(method), context.getInterfaceConfig().getSmokeTestConfig());
GapicMethodContext flattenedMethodContext = context.asFlattenedMethodContext(method, flatteningGroup);
SmokeTestClassView.Builder testClass = SmokeTestClassView.newBuilder();
OptionalArrayMethodView apiMethodView = createSmokeTestCaseApiMethodView(flattenedMethodContext, packageHasMultipleServices);
testClass.apiSettingsClassName(namer.getApiSettingsClassName(context.getInterfaceConfig()));
testClass.apiClassName(namer.getApiWrapperClassName(context.getInterfaceConfig()));
testClass.name(name);
testClass.outputPath(namer.getSourceFilePath(SMOKE_TEST_OUTPUT_BASE_PATH, name));
testClass.templateFileName(SMOKE_TEST_TEMPLATE_FILE);
testClass.apiMethod(apiMethodView);
testClass.requireProjectId(testCaseTransformer.requireProjectIdInSmokeTest(apiMethodView.initCode(), context.getNamer()));
FileHeaderView fileHeader = fileHeaderTransformer.generateFileHeader(context);
testClass.fileHeader(fileHeader);
return testClass.build();
}
Aggregations