use of com.google.api.codegen.transformer.SurfaceNamer in project toolkit by googleapis.
the class NodeJSGapicSurfaceTransformer method generateApiClass.
private ViewModel generateApiClass(GapicInterfaceContext context, boolean hasMultipleServices) {
SurfaceNamer namer = context.getNamer();
String subPath = pathMapper.getOutputPath(context.getInterface().getFullName(), context.getProductConfig());
List<ApiMethodView> methods = generateApiMethods(context, hasMultipleServices);
DynamicLangXApiView.Builder xapiClass = DynamicLangXApiView.newBuilder();
xapiClass.templateFileName(XAPI_TEMPLATE_FILENAME);
xapiClass.outputPath(subPath + "/" + namer.getServiceFileName(context.getInterfaceConfig()));
xapiClass.fileHeader(fileHeaderTransformer.generateFileHeader(context));
xapiClass.protoFilename(context.getInterface().getFile().getSimpleName());
xapiClass.name(namer.getApiWrapperClassName(context.getInterfaceConfig()));
xapiClass.doc(serviceTransformer.generateServiceDoc(context, methods.get(0), context.getProductConfig()));
xapiClass.stubs(grpcStubTransformer.generateGrpcStubs(context));
ApiModel model = context.getApiModel();
xapiClass.serviceAddress(model.getServiceAddress());
xapiClass.servicePort(model.getServicePort());
xapiClass.serviceTitle(model.getTitle());
xapiClass.authScopes(model.getAuthScopes());
xapiClass.hasDefaultServiceAddress(context.getInterfaceConfig().hasDefaultServiceAddress());
xapiClass.hasDefaultServiceScopes(context.getInterfaceConfig().hasDefaultServiceScopes());
xapiClass.pageStreamingDescriptors(pageStreamingTransformer.generateDescriptors(context));
xapiClass.batchingDescriptors(batchingTransformer.generateDescriptors(context));
xapiClass.longRunningDescriptors(createLongRunningDescriptors(context));
xapiClass.grpcStreamingDescriptors(createGrpcStreamingDescriptors(context));
xapiClass.hasPageStreamingMethods(context.getInterfaceConfig().hasPageStreamingMethods());
xapiClass.hasBatchingMethods(context.getInterfaceConfig().hasBatchingMethods());
xapiClass.hasLongRunningOperations(context.getInterfaceConfig().hasLongRunningOperations());
xapiClass.pathTemplates(pathTemplateTransformer.generatePathTemplates(context));
xapiClass.formatResourceFunctions(pathTemplateTransformer.generateFormatResourceFunctions(context));
xapiClass.parseResourceFunctions(pathTemplateTransformer.generateParseResourceFunctions(context));
xapiClass.pathTemplateGetterFunctions(ImmutableList.<PathTemplateGetterFunctionView>of());
xapiClass.methodKeys(ImmutableList.<String>of());
xapiClass.interfaceKey(context.getInterface().getFullName());
xapiClass.clientConfigPath(namer.getClientConfigPath(context.getInterfaceConfig()));
xapiClass.grpcClientTypeName(namer.getAndSaveNicknameForGrpcClientTypeName(context.getImportTypeTable(), context.getInterfaceModel()));
xapiClass.apiMethods(methods);
xapiClass.toolkitVersion(GeneratorVersionProvider.getGeneratorVersion());
xapiClass.packageVersion(packageConfig.generatedPackageVersionBound(TargetLanguage.NODEJS).lower());
xapiClass.apiVersion(packageConfig.apiVersion());
xapiClass.packageHasMultipleServices(hasMultipleServices);
xapiClass.packageServiceName(namer.getPackageServiceName(context.getInterfaceConfig()));
xapiClass.validDescriptorsNames(generateValidDescriptorsNames(context));
xapiClass.constructorName(namer.getApiWrapperClassConstructorName(context.getInterfaceConfig()));
xapiClass.isGcloud(NodeJSUtils.isGcloud(context.getProductConfig()));
return xapiClass.build();
}
use of com.google.api.codegen.transformer.SurfaceNamer in project toolkit by googleapis.
the class PythonGapicSurfaceTransformer method generateVersionedInitView.
private ViewModel generateVersionedInitView(Model model, GapicProductConfig productConfig) {
SurfaceNamer namer = new PythonSurfaceNamer(productConfig.getPackageName());
boolean packageHasEnums = packageHasEnums(model);
ImportSectionView imports = importSectionTransformer.generateVersionedInitImportSection(model, productConfig, namer, packageHasEnums);
return VersionIndexView.newBuilder().templateFileName(VERSIONED_INIT_TEMPLATE_FILENAME).outputPath(versionedInitOutputFile(namer)).requireViews(versionedInitRequireViews(model, productConfig, namer)).apiVersion(namer.getApiWrapperModuleVersion()).namespace(namer.getVersionedDirectoryNamespace()).packageVersion(packageConfig.generatedPackageVersionBound(TargetLanguage.PYTHON).lower()).fileHeader(fileHeaderTransformer.generateFileHeader(productConfig, imports, namer)).packageHasEnums(packageHasEnums).build();
}
use of com.google.api.codegen.transformer.SurfaceNamer in project toolkit by googleapis.
the class PythonGapicSurfaceTransformer method generateServiceSurfaces.
private Iterable<ViewModel> generateServiceSurfaces(Model model, GapicProductConfig productConfig) {
ModelTypeTable modelTypeTable = new ModelTypeTable(new PythonTypeTable(productConfig.getPackageName()), new PythonModelTypeNameConverter(productConfig.getPackageName()));
SurfaceNamer namer = new PythonSurfaceNamer(productConfig.getPackageName());
FeatureConfig featureConfig = new DefaultFeatureConfig();
ProtoApiModel apiModel = new ProtoApiModel(model);
ImmutableList.Builder<ViewModel> serviceSurfaces = ImmutableList.builder();
for (InterfaceModel apiInterface : apiModel.getInterfaces()) {
GapicInterfaceContext context = GapicInterfaceContext.create(apiInterface, productConfig, modelTypeTable, namer, featureConfig);
addApiImports(context);
serviceSurfaces.add(generateApiClass(context));
}
GrpcDocView enumFile = generateEnumView(productConfig, modelTypeTable, namer, model.getFiles());
if (!enumFile.elementDocs().isEmpty()) {
serviceSurfaces.add(enumFile);
}
return serviceSurfaces.build();
}
use of com.google.api.codegen.transformer.SurfaceNamer in project toolkit by googleapis.
the class RubyGapicSurfaceDocTransformer method generateOverview.
private ViewModel generateOverview(ApiModel model, GapicProductConfig productConfig) {
SurfaceNamer namer = new RubySurfaceNamer(productConfig.getPackageName());
GrpcDocView.Builder doc = GrpcDocView.newBuilder();
doc.templateFileName(DOC_TEMPLATE_FILENAME);
doc.outputPath(pathMapper.getOutputPath(null, productConfig) + "/doc/overview.rb");
doc.fileHeader(fileHeaderTransformer.generateFileHeader(productConfig, ImportSectionView.newBuilder().build(), namer));
doc.elementDocs(ImmutableList.<GrpcElementDocView>of());
doc.modules(generateModuleViews(model, productConfig, namer, null, true));
return doc.build();
}
use of com.google.api.codegen.transformer.SurfaceNamer in project toolkit by googleapis.
the class DiscoGapicGeneratorApi method getProviders.
/**
* From config file paths, constructs the DiscoGapicProviders to run.
*/
@VisibleForTesting
static List<GapicProvider> getProviders(String discoveryDocPath, List<String> configFileNames, String packageConfigFile, List<String> enabledArtifacts) throws IOException {
if (!new File(discoveryDocPath).exists()) {
throw new IOException("File not found: " + discoveryDocPath);
}
Reader reader = new InputStreamReader(new FileInputStream(new File(discoveryDocPath)));
ObjectMapper mapper = new ObjectMapper();
JsonNode root = mapper.readTree(reader);
// Read the YAML config and convert it to proto.
if (configFileNames.size() == 0) {
throw new IOException(String.format("--%s must be provided", GENERATOR_CONFIG_FILES.name()));
}
ConfigProto configProto = loadConfigFromFiles(configFileNames);
if (configProto == null) {
throw new IOException("Failed to load config proto.");
}
PackageMetadataConfig packageConfig = null;
if (!Strings.isNullOrEmpty(packageConfigFile)) {
String contents = new String(Files.readAllBytes(Paths.get(packageConfigFile)), StandardCharsets.UTF_8);
packageConfig = PackageMetadataConfig.createFromString(contents);
}
GeneratorProto generator = configProto.getGenerator();
String language = configProto.getLanguage();
String defaultPackageName = configProto.getLanguageSettingsMap().get(language).getPackageName();
SurfaceNamer surfaceNamer = null;
if (language.equals(JAVA)) {
surfaceNamer = new JavaSurfaceNamer(defaultPackageName, defaultPackageName, new JavaNameFormatter());
}
if (surfaceNamer == null) {
throw new UnsupportedOperationException("DiscoGapicGeneratorApi: language \"" + language + "\" not yet supported");
}
DiscoApiModel model = new DiscoApiModel(Document.from(new DiscoveryNode(root)), defaultPackageName);
GapicProductConfig productConfig = GapicProductConfig.create(model, configProto, surfaceNamer);
String factory = generator.getFactory();
String id = generator.getId();
DiscoGapicProviderFactory providerFactory = createProviderFactory(factory);
GapicGeneratorConfig generatorConfig = GapicGeneratorConfig.newBuilder().id(id).enabledArtifacts(enabledArtifacts).build();
return providerFactory.create(model, productConfig, generatorConfig, packageConfig);
}
Aggregations