@Nullable public static GapicProductConfig create( Model model, ConfigProto configProto, TargetLanguage language) { return create(model, configProto, null, null, language); }
/** Creates an GapicProductConfig with fixed content. Exposed for testing. */ private static GapicProductConfig createDummyInstance( ImmutableMap<String, InterfaceConfig> interfaceConfigMap, String packageName, String domainLayerLocation, ResourceNameMessageConfigs messageConfigs, String configSchemaVersion) { return new AutoValue_GapicProductConfig( interfaceConfigMap, packageName, domainLayerLocation, ReleaseLevel.UNSET_RELEASE_LEVEL, messageConfigs, ImmutableList.of(), ImmutableList.of(), ImmutableMap.of(), new ProtoParser(true), // Default to gRPC. TransportProtocol.GRPC, createResponseFieldConfigMap(messageConfigs, ImmutableMap.of()), configSchemaVersion, false); }
private static ImmutableMap<String, ResourceNameConfig> createResourceNameConfigs( DiagCollector diagCollector, ConfigProto configProto, TargetLanguage language) { return createResourceNameConfigs( diagCollector, configProto, null, language, ImmutableMap.of(), ImmutableMap.of(), null); }
public GapicProductConfig withPackageName(String packageName) { return new AutoValue_GapicProductConfig( getInterfaceConfigMap(), packageName, getDomainLayerLocation(), getReleaseLevel(), getResourceNameMessageConfigs(), getCopyrightLines(), getLicenseLines(), getResourceNameConfigs(), getProtoParser(), getTransportProtocol(), getDefaultResourceNameFieldConfigMap(), getConfigSchemaVersion(), enableStringFormattingFunctionsOverride()); }
@Override public List<ViewModel> transform(ProtoApiModel model, GapicProductConfig productConfig) { List<ViewModel> models = new ArrayList<>(); PhpPackageMetadataNamer metadataNamer = new PhpPackageMetadataNamer( productConfig.getPackageName(), productConfig.getDomainLayerLocation()); SurfaceNamer surfaceNamer = new PhpSurfaceNamer(productConfig.getPackageName()); models.add(generateMetadataView(model, metadataNamer, surfaceNamer)); return models; }
public static JavaFeatureConfig create(GapicProductConfig productConfig) { boolean enableStringFormatFunctions; if (productConfig.enableStringFormattingFunctionsOverride() != null) { enableStringFormatFunctions = productConfig.enableStringFormattingFunctionsOverride().booleanValue(); } else { ResourceNameMessageConfigs resourceNameMessageConfigs = productConfig.getResourceNameMessageConfigs(); enableStringFormatFunctions = resourceNameMessageConfigs == null || resourceNameMessageConfigs.isEmpty(); } return JavaFeatureConfig.newBuilder() .enableStringFormatFunctions(enableStringFormatFunctions) .build(); } }
@Override public SurfaceNamer createSurfaceNamer(GapicProductConfig productConfig) { return new JavaSurfaceNamer(productConfig.getPackageName(), productConfig.getPackageName()); }
private List<ViewModel> generateApiClasses(ApiModel model, GapicProductConfig productConfig) { SurfaceNamer namer = new RubySurfaceNamer(productConfig.getPackageName()); FeatureConfig featureConfig = new RubyFeatureConfig(); ImmutableList.Builder<ViewModel> serviceSurfaces = ImmutableList.builder(); for (InterfaceModel apiInterface : model.getInterfaces()) { if (!productConfig.hasInterfaceConfig(apiInterface)) { continue; } String packageName = productConfig.getPackageName(); ModelTypeTable modelTypeTable = new ModelTypeTable( new RubyTypeTable(productConfig.getPackageName()), new RubyModelTypeNameConverter(packageName)); GapicInterfaceContext context = GapicInterfaceContext.create( apiInterface, productConfig, modelTypeTable, namer, featureConfig); serviceSurfaces.add(generateApiClass(context, packageName)); } return serviceSurfaces.build(); }
createResourceNameConfigs( diagCollector, configProto, clientPackageName = clientPackage; } else { String basePackageName = Optional.ofNullable(protoPackage).orElse(getPackageName(model)); clientPackageName = LanguageSettingsMerger.getFormattedPackageName(language, basePackageName); getInterfacesFromProtoFile(diagCollector, sourceProtos, symbolTable); if (!configProto.equals(ConfigProto.getDefaultInstance())) { interfaceInputs = createInterfaceInputsWithGapicConfig( diagCollector, configProto.getInterfacesList(), protoInterfaces, symbolTable); } else { interfaceInputs = createInterfaceInputsWithoutGapicConfig(protoInterfaces.values()); createInterfaceConfigMap( diagCollector, interfaceInputs, protoParser, transportProtocol, createResponseFieldConfigMap(messageConfigs, resourceNameConfigs), configSchemaVersion, enableStringFormatFunctionsOverride);
createSingleResourceNameConfigs(diagCollector, configProto, protoFiles, language); ImmutableMap<String, FixedResourceNameConfig> fixedResourceNameConfigs = createFixedResourceNameConfigs( diagCollector, configProto.getFixedResourceNameValuesList(), file); ImmutableMap<String, ResourceNameOneofConfig> resourceNameOneofConfigsFromGapicConfig = createResourceNameOneofConfigs( diagCollector, configProto.getCollectionOneofsList(), createSingleResourceNameConfigsFromProtoFile(diagCollector, resourceDefs, protoParser); ImmutableMap<String, ResourceNameOneofConfig> resourceNameOneofConfigsFromProtoFile = createResourceNameOneofConfigsFromProtoFile( diagCollector, fullyQualifiedSingleResourceNameConfigsFromProtoFile, mergeResourceNameConfigs( diagCollector, singleResourceNameConfigsFromGapicConfig, singleResourceConfigsFromProtoFile); Map<String, ResourceNameOneofConfig> finalResourceOneofNameConfigs = mergeResourceNameConfigs( diagCollector, resourceNameOneofConfigsFromGapicConfig,
/** Returns the InterfaceConfig for the given API interface. */ public InterfaceConfig getInterfaceConfig(String fullName) { return getInterfaceConfigMap().get(fullName); }
private PackageInfoView generatePackageInfo( ApiModel model, GapicProductConfig productConfig, SurfaceNamer namer) { String outputPath = productConfig.getPackageName(); String fileName = "doc.go"; PackageInfoView.Builder packageInfo = PackageInfoView.newBuilder(); packageInfo.templateFileName(DOC_TEMPLATE_FILENAME); packageInfo.outputPath(outputPath + File.separator + fileName); packageInfo.serviceTitle(model.getTitle()); packageInfo.importPath(productConfig.getPackageName()); packageInfo.serviceDocs(Collections.<ServiceDocView>emptyList()); packageInfo.packageDoc( CommonRenderingUtil.getDocLines(model.getDocumentationSummary(), COMMENT_LINE_LENGTH)); packageInfo.domainLayerLocation(productConfig.getDomainLayerLocation()); packageInfo.authScopes(model.getAuthScopes(productConfig)); packageInfo.fileHeader( fileHeaderTransformer.generateFileHeader( productConfig, ImportSectionView.newBuilder().build(), namer)); packageInfo.releaseLevel(productConfig.getReleaseLevel()); packageInfo.isInferredBeta(isInferredBetaVersion(productConfig.getPackageName())); return packageInfo.build(); }
private List<ResourceProtoView> generateResourceProtos(GapicInterfaceContext context) { SurfaceNamer namer = context.getNamer(); ResourceNameMessageConfigs resourceConfigs = context.getProductConfig().getResourceNameMessageConfigs(); String csharpDefaultNamespace = context.getProductConfig().getPackageName(); ListMultimap<String, FieldModel> fieldsByMessage = resourceConfigs.getFieldsWithResourceNamesByMessage(); Map<String, FieldConfig> fieldConfigMap = context.getProductConfig().getDefaultResourceNameFieldConfigMap(); List<ResourceProtoView> protos = new ArrayList<>();
@Override public List<ViewModel> transform(ProtoApiModel model, GapicProductConfig productConfig) { GoSurfaceNamer namer = new GoSurfaceNamer(productConfig.getPackageName()); List<ViewModel> models = new ArrayList<ViewModel>(); models.add(generateMockServiceView(model, productConfig, namer)); for (InterfaceModel apiInterface : model.getInterfaces()) { InterfaceConfig interfaceConfig = productConfig.getInterfaceConfig(apiInterface); if (interfaceConfig == null || interfaceConfig.getSmokeTestConfig() == null) { continue; } GapicInterfaceContext context = GapicInterfaceContext.create( apiInterface, productConfig, GoGapicSurfaceTransformer.createTypeTable(), namer, featureConfig); models.add(createSmokeTestClassView(context)); } return models; }
@Override public List<ViewModel> transform(DiscoApiModel apiModel, GapicProductConfig productConfig) { List<ViewModel> surfaceRequests = new ArrayList<>(); String packageName = productConfig.getPackageName(); SurfaceNamer surfaceNamer = new JavaSurfaceNamer(packageName, packageName, nameFormatter); apiModel, productConfig, createTypeTable(productConfig.getPackageName(), surfaceNamer), surfaceNamer, JavaFeatureConfig.create(productConfig)); for (String interfaceName : productConfig.getInterfaceConfigMap().keySet()) { SchemaTransformationContext requestContext = SchemaTransformationContext.create(interfaceName, context.getSchemaTypeTable(), context); productConfig.getInterfaceConfigMap().get(interfaceName).getMethodConfigs()) { Method method = ((DiscoveryMethodModel) methodConfig.getMethodModel()).getDiscoMethod(); namePatternsToMethod.put(DiscoGapicParser.getCanonicalPath(method.flatPath()), method); productConfig.getInterfaceConfigMap().get(interfaceName).getSingleResourceNameConfigs()) { String namePattern = nameConfig.getNamePattern(); if (namePatterns.contains(namePattern)) {
createResourceNameConfigs(model.getDiagCollector(), configProto, language); createDiscoGapicInterfaceConfigMap( model, configProto, settings, messageConfigs, resourceNameConfigs, language); new ProtoParser(false), transportProtocol, createResponseFieldConfigMap(messageConfigs, resourceNameConfigs), configSchemaVersion, enableStringFormatFunctionsOverride);
/** Creates an GapicProductConfig with no content. Exposed for testing. */ @VisibleForTesting public static GapicProductConfig createDummyInstance() { return createDummyInstance(ImmutableMap.of(), "", "", null, "1.0.0"); }
Collection<ProtoFile> localImportFiles = productConfig .getInterfaceConfigMap() .keySet() .stream() .flatMap(f -> f.getInterfaces().stream()) .filter(Interface::isReachable) .filter(i -> productConfig.getInterfaceConfig(i) == null) .map(Interface::getFile) .collect(ImmutableSet.toImmutableSet());
private SurfaceNamer createSurfaceNamer(GapicProductConfig productConfig) { // TODO(vchudnov-g): Consider factoring out this code duplicated from JavaSurfaceTransformer. return new JavaSurfaceNamer(productConfig.getPackageName(), productConfig.getPackageName()); }
private Iterable<ViewModel> generateSampleFiles( ProtoApiModel apiModel, GapicProductConfig productConfig) { ModelTypeTable modelTypeTable = new ModelTypeTable( new PythonTypeTable(productConfig.getPackageName()), new PythonModelTypeNameConverter(productConfig.getPackageName())); SurfaceNamer namer = new PythonSurfaceNamer(productConfig.getPackageName()); FeatureConfig featureConfig = new DefaultFeatureConfig(); ImmutableList.Builder<ViewModel> serviceSurfaces = ImmutableList.builder(); for (InterfaceModel apiInterface : apiModel.getInterfaces()) { if (!productConfig.hasInterfaceConfig(apiInterface)) { continue; } GapicInterfaceContext context = GapicInterfaceContext.create( apiInterface, productConfig, modelTypeTable, namer, featureConfig); addApiImports(context); serviceSurfaces.addAll(generateSampleClasses(context)); } return serviceSurfaces.build(); }