Search in sources :

Example 16 with GapicProductConfig

use of com.google.api.codegen.config.GapicProductConfig in project toolkit by googleapis.

the class RubyPackageMetadataTransformer method generateMetadataView.

private ViewModel generateMetadataView(ApiModel model, GapicProductConfig productConfig, String template, RubyPackageMetadataNamer namer, String filePrefix) {
    String noLeadingRubyDir = template.startsWith(RUBY_PREFIX) ? template.substring(RUBY_PREFIX.length()) : template;
    if (!Strings.isNullOrEmpty(filePrefix)) {
        noLeadingRubyDir = filePrefix + noLeadingRubyDir;
    }
    int extensionIndex = noLeadingRubyDir.lastIndexOf(".");
    String outputPath = noLeadingRubyDir.substring(0, extensionIndex);
    Collection<InterfaceModel> interfaceModels = model.getInterfaces(productConfig).stream().filter(productConfig::hasInterfaceConfig).collect(ImmutableList.toImmutableList());
    List<GapicInterfaceContext> contexts = interfaceModels.stream().map(i -> createContext(i, productConfig)).collect(ImmutableList.toImmutableList());
    boolean hasSmokeTests = contexts.stream().map(InterfaceContext::getInterfaceConfig).map(InterfaceConfig::getSmokeTestConfig).anyMatch(Objects::nonNull);
    SurfaceNamer surfaceNamer = new RubySurfaceNamer(productConfig.getPackageName());
    ImportSectionView importSection = importSectionTransformer.generateRakefileAcceptanceTaskImportSection(contexts);
    return metadataTransformer.generateMetadataView(namer, packageConfig, model, template, outputPath, TargetLanguage.RUBY).identifier(namer.getMetadataIdentifier()).fileHeader(fileHeaderTransformer.generateFileHeader(productConfig, importSection, surfaceNamer)).hasSmokeTests(hasSmokeTests).versionPath(surfaceNamer.getVersionIndexFileImportName()).versionNamespace(validVersionNamespace(interfaceModels, surfaceNamer)).credentialsClassName(surfaceNamer.getFullyQualifiedCredentialsClassName()).smokeTestProjectVariable(namer.getProjectVariable(true)).smokeTestKeyfileVariable(namer.getKeyfileVariable(true)).smokeTestJsonKeyVariable(namer.getJsonKeyVariable(true)).projectVariable(namer.getProjectVariable(false)).jsonKeyVariable(namer.getJsonKeyVariable(false)).build();
}
Also used : PackageMetadataConfig(com.google.api.codegen.config.PackageMetadataConfig) GapicMethodContext(com.google.api.codegen.config.GapicMethodContext) TestCaseTransformer(com.google.api.codegen.transformer.TestCaseTransformer) ImportSectionView(com.google.api.codegen.viewmodel.ImportSectionView) RubyTypeTable(com.google.api.codegen.util.ruby.RubyTypeTable) FlatteningConfig(com.google.api.codegen.config.FlatteningConfig) HashSet(java.util.HashSet) InterfaceContext(com.google.api.codegen.config.InterfaceContext) Strings(com.google.common.base.Strings) ImmutableList(com.google.common.collect.ImmutableList) MethodModel(com.google.api.codegen.config.MethodModel) ViewModel(com.google.api.codegen.viewmodel.ViewModel) ModelTypeTable(com.google.api.codegen.transformer.ModelTypeTable) TargetLanguage(com.google.api.codegen.common.TargetLanguage) ValueProducer(com.google.api.codegen.util.testing.ValueProducer) PackageMetadataTransformer(com.google.api.codegen.transformer.PackageMetadataTransformer) InitCodeView(com.google.api.codegen.viewmodel.InitCodeView) ImmutableSet(com.google.common.collect.ImmutableSet) OptionalArrayMethodView(com.google.api.codegen.viewmodel.OptionalArrayMethodView) TocContentView(com.google.api.codegen.viewmodel.metadata.TocContentView) SurfaceNamer(com.google.api.codegen.transformer.SurfaceNamer) StandardValueProducer(com.google.api.codegen.util.testing.StandardValueProducer) Collection(java.util.Collection) Set(java.util.Set) FileHeaderTransformer(com.google.api.codegen.transformer.FileHeaderTransformer) PackageDependencyView(com.google.api.codegen.viewmodel.metadata.PackageDependencyView) ApiMethodView(com.google.api.codegen.viewmodel.ApiMethodView) Collectors(java.util.stream.Collectors) Objects(java.util.Objects) GapicProductConfig(com.google.api.codegen.config.GapicProductConfig) ProtoApiModel(com.google.api.codegen.config.ProtoApiModel) GapicInterfaceContext(com.google.api.codegen.config.GapicInterfaceContext) DynamicLangApiMethodTransformer(com.google.api.codegen.transformer.DynamicLangApiMethodTransformer) InitCodeTransformer(com.google.api.codegen.transformer.InitCodeTransformer) List(java.util.List) ApiModel(com.google.api.codegen.config.ApiModel) InterfaceModel(com.google.api.codegen.config.InterfaceModel) ReadmeMetadataView(com.google.api.codegen.viewmodel.metadata.ReadmeMetadataView) InterfaceConfig(com.google.api.codegen.config.InterfaceConfig) ModelToViewTransformer(com.google.api.codegen.transformer.ModelToViewTransformer) GapicInterfaceContext(com.google.api.codegen.config.GapicInterfaceContext) InterfaceContext(com.google.api.codegen.config.InterfaceContext) GapicInterfaceContext(com.google.api.codegen.config.GapicInterfaceContext) InterfaceModel(com.google.api.codegen.config.InterfaceModel) Objects(java.util.Objects) SurfaceNamer(com.google.api.codegen.transformer.SurfaceNamer) ImportSectionView(com.google.api.codegen.viewmodel.ImportSectionView)

Example 17 with GapicProductConfig

use of com.google.api.codegen.config.GapicProductConfig in project toolkit by googleapis.

the class GapicTestBase2 method run.

@Override
public Map<String, ?> run() throws IOException {
    model.establishStage(Merged.KEY);
    if (model.getDiagReporter().getDiagCollector().getErrorCount() > 0) {
        for (Diag diag : model.getDiagReporter().getDiagCollector().getDiags()) {
            System.err.println(diag.toString());
        }
        return null;
    }
    if (sampleConfig == null) {
        sampleConfig = SampleConfigProto.getDefaultInstance();
    }
    GapicProductConfig productConfig = GapicProductConfig.create(model, gapicConfig, sampleConfig, protoPackage, clientPackage, language, grpcServiceConfig, transportProtocol);
    if (productConfig == null) {
        for (Diag diag : model.getDiagReporter().getDiagCollector().getDiags()) {
            System.err.println(diag.toString());
        }
        return null;
    }
    List<String> enabledArtifacts = new ArrayList<>();
    if (hasSmokeTestConfig(productConfig)) {
        enabledArtifacts.addAll(Arrays.asList("surface", "test", "samples"));
    }
    ArtifactFlags artifactFlags = new ArtifactFlags(enabledArtifacts, ArtifactType.LEGACY_GAPIC_AND_PACKAGE, true);
    PackagingConfig actualPackagingConfig = packagingConfig;
    if (actualPackagingConfig == null) {
        actualPackagingConfig = PackagingConfig.loadFromProductConfig(productConfig.getInterfaceConfigMap());
    }
    PackageMetadataConfig packageConfig = PackageMetadataConfig.createFromPackaging(apiDefaultsConfig, dependenciesConfig, actualPackagingConfig);
    List<CodeGenerator<?>> generators = GapicGeneratorFactory.create(language, model, productConfig, packageConfig, artifactFlags);
    // Don't run any generators we're not testing.
    ArrayList<CodeGenerator<?>> testedGenerators = new ArrayList<>();
    for (CodeGenerator<?> generator : generators) {
        if (!Collections.disjoint(generator.getInputFileNames(), snippetNames)) {
            testedGenerators.add(generator);
        }
    }
    Map<String, Object> output = new TreeMap<>();
    for (CodeGenerator<?> generator : testedGenerators) {
        Map<String, ? extends GeneratedResult<?>> out = generator.generate();
        if (!Collections.disjoint(out.keySet(), output.keySet())) {
            throw new IllegalStateException("file conflict");
        }
        for (Map.Entry<String, ? extends GeneratedResult<?>> entry : out.entrySet()) {
            Object value = (entry.getValue().getBody() instanceof byte[]) ? "Static or binary file content is not shown." : entry.getValue().getBody();
            output.put(entry.getKey(), value);
        }
    }
    return output;
}
Also used : GapicProductConfig(com.google.api.codegen.config.GapicProductConfig) ArrayList(java.util.ArrayList) Diag(com.google.api.tools.framework.model.Diag) CodeGenerator(com.google.api.codegen.common.CodeGenerator) TreeMap(java.util.TreeMap) PackagingConfig(com.google.api.codegen.config.PackagingConfig) PackageMetadataConfig(com.google.api.codegen.config.PackageMetadataConfig) Map(java.util.Map) TreeMap(java.util.TreeMap)

Example 18 with GapicProductConfig

use of com.google.api.codegen.config.GapicProductConfig in project toolkit by googleapis.

the class GapicTestBase2 method createTestConfig.

/**
 * Creates the constructor arguments to be passed onto this class (GapicTestBase2) to create test
 * methods. The langauge String is passed to GapicGeneratorFactory to get the GapicGenerators
 * provided by that language, and then the snippet file names are scraped from those generators,
 * and a set of arguments is created for each combination of CodeGenerator x snippet that
 * GapicGeneratorFactory returns.
 */
public static Object[] createTestConfig(TargetLanguage language, String[] gapicConfigFileNames, String packageConfigFileName, String apiName, String protoPackage, String clientPackage, String grpcServiceConfigFileName, String[] sampleConfigFileNames, String baseline, TransportProtocol transportProtocol, String... baseNames) {
    Model model = Model.create(Service.getDefaultInstance());
    GapicProductConfig productConfig = GapicProductConfig.createDummyInstance();
    PackageMetadataConfig packageConfig = PackageMetadataConfig.createDummyPackageMetadataConfig();
    ArtifactFlags artifactFlags = new ArtifactFlags(Arrays.asList("surface", "test", "samples"), ArtifactType.LEGACY_GAPIC_AND_PACKAGE, true);
    List<CodeGenerator<?>> generators = GapicGeneratorFactory.create(language, model, productConfig, packageConfig, artifactFlags);
    List<String> snippetNames = new ArrayList<>();
    for (CodeGenerator<?> generator : generators) {
        snippetNames.addAll(generator.getInputFileNames());
    }
    // autogenerated name will be provided.
    if (baseline == null) {
        StringBuilder suffix = new StringBuilder();
        if (gapicConfigFileNames == null || gapicConfigFileNames.length == 0) {
            suffix.append("_no_gapic_config");
        }
        if (!Strings.isNullOrEmpty(grpcServiceConfigFileName)) {
            suffix.append("_with_grpc_service_config");
        }
        baseline = language.toString().toLowerCase() + "_" + apiName + suffix + ".baseline";
    }
    baseNames = Lists.asList(apiName, baseNames).toArray(new String[0]);
    return new Object[] { language, gapicConfigFileNames, sampleConfigFileNames, packageConfigFileName, snippetNames, baseline, protoPackage, clientPackage, grpcServiceConfigFileName, transportProtocol, baseNames };
}
Also used : GapicProductConfig(com.google.api.codegen.config.GapicProductConfig) Model(com.google.api.tools.framework.model.Model) PackageMetadataConfig(com.google.api.codegen.config.PackageMetadataConfig) ArrayList(java.util.ArrayList) CodeGenerator(com.google.api.codegen.common.CodeGenerator)

Example 19 with GapicProductConfig

use of com.google.api.codegen.config.GapicProductConfig in project toolkit by googleapis.

the class PhpGapicCodePathMapperTest method getOutputPathTest.

@Test
public void getOutputPathTest() {
    PhpGapicCodePathMapper pathMapper = PhpGapicCodePathMapper.newBuilder().setPrefix("prefix").setSuffix("suffix").build();
    GapicProductConfig configWithGoogleCloud = GapicProductConfig.createDummyInstance(ImmutableMap.<String, InterfaceConfig>of(), "Google\\Cloud\\Sample\\Package\\V1", "", null);
    assertThat(pathMapper.getOutputPath(null, configWithGoogleCloud)).isEqualTo("prefix/V1/suffix");
    GapicProductConfig configWithGoogleNonCloud = GapicProductConfig.createDummyInstance(ImmutableMap.<String, InterfaceConfig>of(), "Google\\NonCloud\\Sample\\Package\\V1", "", null);
    assertThat(pathMapper.getOutputPath(null, configWithGoogleNonCloud)).isEqualTo("prefix/V1/suffix");
    GapicProductConfig configWithAlphabet = GapicProductConfig.createDummyInstance(ImmutableMap.<String, InterfaceConfig>of(), "Alphabet\\Google\\Cloud\\Sample\\Package\\V1", "", null);
    assertThat(pathMapper.getOutputPath(null, configWithAlphabet)).isEqualTo("prefix/V1/suffix");
}
Also used : GapicProductConfig(com.google.api.codegen.config.GapicProductConfig) Test(org.junit.Test)

Example 20 with GapicProductConfig

use of com.google.api.codegen.config.GapicProductConfig in project toolkit by googleapis.

the class GapicGeneratorFactory method create.

/**
 * Create the GapicGenerators based on the given id.
 *
 * <p>If {@code devSamples} is set, standalone samples are generated for all languages, including
 * those that currently have development stubs. Otherwise, samples are only produced in languages
 * where they are production-ready.
 */
public static List<CodeGenerator<?>> create(TargetLanguage language, Model model, GapicProductConfig productConfig, PackageMetadataConfig packageConfig, ArtifactFlags artifactFlags) {
    ArrayList<CodeGenerator<?>> generators = new ArrayList<>();
    // Please keep the following IDs in alphabetical order
    if (language.equals(CSHARP)) {
        String packageName = productConfig.getPackageName();
        Function<String, GapicCodePathMapper> newCodePathMapper = suffix -> CommonGapicCodePathMapper.newBuilder().setPrefix(packageName + File.separator + packageName + suffix).setPackageFilePathNameFormatter(new CSharpNameFormatter()).build();
        Function<ModelToViewTransformer<ProtoApiModel>, CodeGenerator> newCsharpGenerator = transformer -> GapicGenerator.newBuilder().setModel(model).setProductConfig(productConfig).setSnippetSetRunner(new CommonSnippetSetRunner(new CSharpRenderingUtil())).setModelToViewTransformer(transformer).build();
        if (artifactFlags.surfaceGeneratorEnabled()) {
            GapicCodePathMapper clientPathMapper = newCodePathMapper.apply("");
            if (artifactFlags.codeFilesEnabled()) {
                generators.add(newCsharpGenerator.apply(new CSharpGapicClientTransformer(clientPathMapper)));
            }
            if (artifactFlags.packagingFilesEnabled()) {
                generators.add(newCsharpGenerator.apply(new CSharpGapicClientPackageTransformer(clientPathMapper, packageConfig)));
            }
            GapicCodePathMapper snippetPathMapper = newCodePathMapper.apply(".Snippets");
            if (artifactFlags.codeFilesEnabled()) {
                generators.add(newCsharpGenerator.apply(new CSharpGapicSnippetsTransformer(snippetPathMapper)));
            }
            if (artifactFlags.packagingFilesEnabled()) {
                generators.add(newCsharpGenerator.apply(CSharpBasicPackageTransformer.forSnippets(snippetPathMapper)));
            }
        }
        if (artifactFlags.testGeneratorEnabled()) {
            GapicCodePathMapper smokeTestPathMapper = newCodePathMapper.apply(".SmokeTests");
            if (artifactFlags.codeFilesEnabled()) {
                generators.add(newCsharpGenerator.apply(new CSharpGapicSmokeTestTransformer(smokeTestPathMapper)));
            }
            if (artifactFlags.packagingFilesEnabled()) {
                generators.add(newCsharpGenerator.apply(CSharpBasicPackageTransformer.forSmokeTests(smokeTestPathMapper)));
            }
            GapicCodePathMapper unitTestPathMapper = newCodePathMapper.apply(".Tests");
            if (artifactFlags.codeFilesEnabled()) {
                generators.add(newCsharpGenerator.apply(new CSharpGapicUnitTestTransformer(unitTestPathMapper)));
            }
            if (artifactFlags.packagingFilesEnabled()) {
                generators.add(newCsharpGenerator.apply(CSharpBasicPackageTransformer.forUnitTests(unitTestPathMapper)));
            }
        }
        if (artifactFlags.devSamplesEnabled()) {
            GapicCodePathMapper samplePathMapper = newCodePathMapper.apply(".Samples");
            CSharpStandaloneSampleTransformer csharpSampleTransformer = new CSharpStandaloneSampleTransformer(samplePathMapper);
            generators.add(newCsharpGenerator.apply(csharpSampleTransformer));
            if (artifactFlags.packagingFilesEnabled()) {
                generators.add(newCsharpGenerator.apply(CSharpBasicPackageTransformer.forSamples(samplePathMapper)));
            }
        }
    } else if (language.equals(GO)) {
        if (artifactFlags.surfaceGeneratorEnabled()) {
            CodeGenerator generator = GapicGenerator.newBuilder().setModel(model).setProductConfig(productConfig).setSnippetSetRunner(new CommonSnippetSetRunner(new CommonRenderingUtil())).setModelToViewTransformer(new GoGapicSurfaceTransformer(new PackageNameCodePathMapper())).build();
            generators.add(generator);
        }
        if (artifactFlags.testGeneratorEnabled()) {
            CodeGenerator testGenerator = GapicGenerator.newBuilder().setModel(model).setProductConfig(productConfig).setSnippetSetRunner(new CommonSnippetSetRunner(new CommonRenderingUtil())).setModelToViewTransformer(new GoGapicSurfaceTestTransformer()).build();
            generators.add(testGenerator);
        }
    } else if (language.equals(JAVA)) {
        Function<ModelToViewTransformer<ProtoApiModel>, CodeGenerator> newJavaGenerator = transformer -> GapicGenerator.newBuilder().setModel(model).setProductConfig(productConfig).setSnippetSetRunner(new CommonSnippetSetRunner(new JavaRenderingUtil())).setModelToViewTransformer(transformer).build();
        if (artifactFlags.surfaceGeneratorEnabled()) {
            GapicCodePathMapper javaPathMapper = JavaGapicCodePathMapper.newBuilder().prefix("src/main/java").build();
            if (artifactFlags.codeFilesEnabled()) {
                generators.add(newJavaGenerator.apply(new JavaGapicSurfaceTransformer(javaPathMapper)));
                if (artifactFlags.devSamplesEnabled()) {
                    generators.add(newJavaGenerator.apply(new JavaGapicSamplesTransformer()));
                    generators.add(newJavaGenerator.apply(new JavaGapicSamplesPackageTransformer(packageConfig)));
                    generators.add(newJavaGenerator.apply(JavaGapicSamplesTransformer.createManifestTransformer()));
                }
            }
            if (artifactFlags.packagingFilesEnabled()) {
                generators.add(newJavaGenerator.apply(new JavaGapicPackageTransformer<>(packageConfig)));
                CodeGenerator staticResourcesGenerator = new StaticResourcesGenerator(ImmutableMap.<String, String>builder().put("java/static/build.gradle", "../build.gradle").put("java/static/settings.gradle", "../settings.gradle").put("java/static/gradlew", "../gradlew").put("java/static/gradlew.bat", "../gradlew.bat").put("java/static/gradle/wrapper/gradle-wrapper.jar", "../gradle/wrapper/gradle-wrapper.jar").put("java/static/gradle/wrapper/gradle-wrapper.properties", "../gradle/wrapper/gradle-wrapper.properties").build(), ImmutableSet.of("../gradlew"));
                generators.add(staticResourcesGenerator);
            }
        }
        if (artifactFlags.testGeneratorEnabled()) {
            if (artifactFlags.codeFilesEnabled()) {
                GapicCodePathMapper javaTestPathMapper = JavaGapicCodePathMapper.newBuilder().prefix("src/test/java").build();
                generators.add(newJavaGenerator.apply(new JavaSurfaceTestTransformer<>(javaTestPathMapper, new JavaGapicSurfaceTransformer(javaTestPathMapper), "java/test.snip")));
            }
        }
        return generators;
    } else if (language.equals(NODEJS)) {
        if (artifactFlags.surfaceGeneratorEnabled()) {
            GapicCodePathMapper nodeJSPathMapper = new NodeJSCodePathMapper();
            CodeGenerator mainGenerator = GapicGenerator.newBuilder().setModel(model).setProductConfig(productConfig).setSnippetSetRunner(new CommonSnippetSetRunner(new CommonRenderingUtil())).setModelToViewTransformer(new NodeJSGapicSurfaceTransformer(nodeJSPathMapper, packageConfig)).build();
            CodeGenerator metadataGenerator = GapicGenerator.newBuilder().setModel(model).setProductConfig(productConfig).setSnippetSetRunner(new CommonSnippetSetRunner(new CommonRenderingUtil())).setModelToViewTransformer(new NodeJSPackageMetadataTransformer(packageConfig)).build();
            CodeGenerator clientConfigGenerator = LegacyGapicGenerator.newBuilder().setModel(model).setContext(new ClientConfigGapicContext(model, productConfig)).setSnippetSetRunner(new ClientConfigSnippetSetRunner<>(SnippetSetRunner.SNIPPET_RESOURCE_ROOT)).setSnippetFileNames(Arrays.asList("clientconfig/json.snip")).setCodePathMapper(nodeJSPathMapper).build();
            generators.add(mainGenerator);
            generators.add(metadataGenerator);
            generators.add(clientConfigGenerator);
            if (artifactFlags.devSamplesEnabled()) {
                GapicCodePathMapper nodejsSamplePathMapper = new CommonSampleCodePathMapper();
                NodeJSGapicSamplesTransformer nodejsGapicSamplesTransformer = new NodeJSGapicSamplesTransformer(nodejsSamplePathMapper);
                CodeGenerator sampleGenerator = GapicGenerator.newBuilder().setModel(model).setProductConfig(productConfig).setSnippetSetRunner(new CommonSnippetSetRunner(new CommonRenderingUtil())).setModelToViewTransformer(nodejsGapicSamplesTransformer).build();
                CodeGenerator sampleMetadataGenerator = GapicGenerator.newBuilder().setModel(model).setProductConfig(productConfig).setSnippetSetRunner(new CommonSnippetSetRunner(new CommonRenderingUtil())).setModelToViewTransformer(new NodeJSSamplePackageMetadataTransformer(packageConfig)).build();
                generators.add(sampleGenerator);
                generators.add(sampleMetadataGenerator);
            }
            CodeGenerator messageGenerator = GapicGenerator.newBuilder().setModel(model).setProductConfig(productConfig).setSnippetSetRunner(new CommonSnippetSetRunner(new CommonRenderingUtil())).setModelToViewTransformer(new NodeJSGapicSurfaceDocTransformer()).build();
            generators.add(messageGenerator);
        }
        if (artifactFlags.testGeneratorEnabled()) {
            CodeGenerator testGenerator = GapicGenerator.newBuilder().setModel(model).setProductConfig(productConfig).setSnippetSetRunner(new CommonSnippetSetRunner(new CommonRenderingUtil())).setModelToViewTransformer(new NodeJSGapicSurfaceTestTransformer()).build();
            generators.add(testGenerator);
        }
    } else if (language.equals(PHP)) {
        if (artifactFlags.surfaceGeneratorEnabled()) {
            if (artifactFlags.codeFilesEnabled()) {
                GapicCodePathMapper phpPathMapper = PhpGapicCodePathMapper.newBuilder().setPrefix("src").build();
                CodeGenerator generator = GapicGenerator.newBuilder().setModel(model).setProductConfig(productConfig).setSnippetSetRunner(new CommonSnippetSetRunner(new CommonRenderingUtil())).setModelToViewTransformer(new PhpGapicSurfaceTransformer(productConfig, phpPathMapper, model)).build();
                generators.add(generator);
                GapicCodePathMapper phpClientConfigPathMapper = PhpGapicCodePathMapper.newBuilder().setPrefix("src").setSuffix("resources").build();
                CodeGenerator clientConfigGenerator = LegacyGapicGenerator.newBuilder().setModel(model).setContext(new PhpClientConfigGapicContext(model, productConfig)).setSnippetSetRunner(new ClientConfigSnippetSetRunner<>(SnippetSetRunner.SNIPPET_RESOURCE_ROOT)).setSnippetFileNames(Arrays.asList("clientconfig/json.snip")).setCodePathMapper(phpClientConfigPathMapper).build();
                generators.add(clientConfigGenerator);
            }
            if (artifactFlags.packagingFilesEnabled()) {
                CodeGenerator metadataGenerator = GapicGenerator.newBuilder().setModel(model).setProductConfig(productConfig).setSnippetSetRunner(new CommonSnippetSetRunner(new CommonRenderingUtil())).setModelToViewTransformer(new PhpPackageMetadataTransformer(packageConfig)).build();
                generators.add(metadataGenerator);
            }
            if (artifactFlags.devSamplesEnabled()) {
                GapicCodePathMapper phpSamplePathMapper = PhpGapicCodePathMapper.newBuilder().setPrefix("samples").build();
                PhpGapicSamplesTransformer phpGapicSamplesTransformer = new PhpGapicSamplesTransformer(phpSamplePathMapper);
                CodeGenerator sampleGenerator = GapicGenerator.newBuilder().setModel(model).setProductConfig(productConfig).setSnippetSetRunner(new CommonSnippetSetRunner(new CommonRenderingUtil())).setModelToViewTransformer(phpGapicSamplesTransformer).build();
                generators.add(sampleGenerator);
            }
        }
        if (artifactFlags.testGeneratorEnabled()) {
            CodeGenerator testGenerator = GapicGenerator.newBuilder().setModel(model).setProductConfig(productConfig).setSnippetSetRunner(new CommonSnippetSetRunner(new CommonRenderingUtil())).setModelToViewTransformer(new PhpGapicSurfaceTestTransformer()).build();
            generators.add(testGenerator);
        }
    } else if (language.equals(PYTHON)) {
        if (artifactFlags.surfaceGeneratorEnabled()) {
            GapicCodePathMapper pythonPathMapper = CommonGapicCodePathMapper.newBuilder().setShouldAppendPackage(true).build();
            CodeGenerator mainGenerator = GapicGenerator.newBuilder().setModel(model).setProductConfig(productConfig).setSnippetSetRunner(new CommonSnippetSetRunner(new PythonRenderingUtil())).setModelToViewTransformer(new PythonGapicSurfaceTransformer(pythonPathMapper, packageConfig)).build();
            CodeGenerator clientConfigGenerator = LegacyGapicGenerator.newBuilder().setModel(model).setContext(new ClientConfigGapicContext(model, productConfig)).setSnippetSetRunner(new ClientConfigSnippetSetRunner<>(SnippetSetRunner.SNIPPET_RESOURCE_ROOT)).setSnippetFileNames(Arrays.asList("clientconfig/python_clientconfig.snip")).setCodePathMapper(pythonPathMapper).build();
            generators.add(mainGenerator);
            generators.add(clientConfigGenerator);
            if (artifactFlags.devSamplesEnabled()) {
                GapicCodePathMapper pythonSamplePathMapper = new CommonSampleCodePathMapper();
                PythonGapicSamplesTransformer pythonGapicSampleTransformer = new PythonGapicSamplesTransformer(pythonSamplePathMapper, packageConfig);
                CodeGenerator sampleGenerator = GapicGenerator.newBuilder().setModel(model).setProductConfig(productConfig).setSnippetSetRunner(new CommonSnippetSetRunner(new PythonRenderingUtil())).setModelToViewTransformer(pythonGapicSampleTransformer).build();
                generators.add(sampleGenerator);
            }
            CodeGenerator metadataGenerator = GapicGenerator.newBuilder().setModel(model).setProductConfig(productConfig).setSnippetSetRunner(new CommonSnippetSetRunner(new PythonRenderingUtil())).setModelToViewTransformer(new PythonPackageMetadataTransformer(packageConfig)).build();
            generators.add(metadataGenerator);
        }
        if (artifactFlags.testGeneratorEnabled()) {
            GapicCodePathMapper pythonTestPathMapper = CommonGapicCodePathMapper.newBuilder().setPrefix("test").setShouldAppendPackage(true).build();
            CodeGenerator testGenerator = GapicGenerator.newBuilder().setModel(model).setProductConfig(productConfig).setSnippetSetRunner(new CommonSnippetSetRunner(new CommonRenderingUtil())).setModelToViewTransformer(new PythonGapicSurfaceTestTransformer(pythonTestPathMapper, packageConfig)).build();
            generators.add(testGenerator);
        }
    } else if (language.equals(RUBY)) {
        if (artifactFlags.surfaceGeneratorEnabled()) {
            GapicCodePathMapper rubyPathMapper = CommonGapicCodePathMapper.newBuilder().setPrefix("lib").setShouldAppendPackage(true).setPackageFilePathNameFormatter(new RubyNameFormatter()).build();
            CodeGenerator mainGenerator = GapicGenerator.newBuilder().setModel(model).setProductConfig(productConfig).setSnippetSetRunner(new CommonSnippetSetRunner(new CommonRenderingUtil())).setModelToViewTransformer(new RubyGapicSurfaceTransformer(rubyPathMapper, packageConfig)).build();
            CodeGenerator clientConfigGenerator = LegacyGapicGenerator.newBuilder().setModel(model).setContext(new ClientConfigGapicContext(model, productConfig)).setSnippetSetRunner(new ClientConfigSnippetSetRunner<>(SnippetSetRunner.SNIPPET_RESOURCE_ROOT)).setSnippetFileNames(Arrays.asList("clientconfig/json.snip")).setCodePathMapper(rubyPathMapper).build();
            CodeGenerator metadataGenerator = GapicGenerator.newBuilder().setModel(model).setProductConfig(productConfig).setSnippetSetRunner(new CommonSnippetSetRunner(new CommonRenderingUtil())).setModelToViewTransformer(new RubyPackageMetadataTransformer(packageConfig)).build();
            if (artifactFlags.devSamplesEnabled()) {
                GapicCodePathMapper rubySamplePathMapper = new CommonSampleCodePathMapper();
                RubyGapicSamplesTransformer rubyGapicSamplesTransformer = new RubyGapicSamplesTransformer(rubySamplePathMapper);
                CodeGenerator sampleGenerator = GapicGenerator.newBuilder().setModel(model).setProductConfig(productConfig).setSnippetSetRunner(new CommonSnippetSetRunner(new CommonRenderingUtil())).setModelToViewTransformer(rubyGapicSamplesTransformer).build();
                CodeGenerator sampleMetadataGenerator = GapicGenerator.newBuilder().setModel(model).setProductConfig(productConfig).setSnippetSetRunner(new CommonSnippetSetRunner(new CommonRenderingUtil())).setModelToViewTransformer(new RubySamplePackageMetadataTransformer(packageConfig)).build();
                generators.add(sampleGenerator);
                generators.add(sampleMetadataGenerator);
            }
            generators.add(mainGenerator);
            generators.add(clientConfigGenerator);
            generators.add(metadataGenerator);
            CodeGenerator messageGenerator = GapicGenerator.newBuilder().setModel(model).setProductConfig(productConfig).setSnippetSetRunner(new CommonSnippetSetRunner(new CommonRenderingUtil())).setModelToViewTransformer(new RubyGapicSurfaceDocTransformer(rubyPathMapper, packageConfig)).build();
            generators.add(messageGenerator);
        }
        if (artifactFlags.testGeneratorEnabled()) {
            CommonGapicCodePathMapper.Builder rubyTestPathMapperBuilder = CommonGapicCodePathMapper.newBuilder().setShouldAppendPackage(true).setPackageFilePathNameFormatter(new RubyNameFormatter());
            CodeGenerator testGenerator = GapicGenerator.newBuilder().setModel(model).setProductConfig(productConfig).setSnippetSetRunner(new CommonSnippetSetRunner(new CommonRenderingUtil())).setModelToViewTransformer(new RubyGapicSurfaceTestTransformer(rubyTestPathMapperBuilder.setPrefix("test").build(), rubyTestPathMapperBuilder.setPrefix("acceptance").build(), packageConfig)).build();
            generators.add(testGenerator);
        }
    } else {
        throw new UnsupportedOperationException("GapicGeneratorFactory: unsupported language \"" + language + "\"");
    }
    if (generators.isEmpty()) {
        throw new IllegalArgumentException("No artifacts are enabled.");
    }
    return generators;
}
Also used : Arrays(java.util.Arrays) JAVA(com.google.api.codegen.common.TargetLanguage.JAVA) CSharpGapicSmokeTestTransformer(com.google.api.codegen.transformer.csharp.CSharpGapicSmokeTestTransformer) CodeGenerator(com.google.api.codegen.common.CodeGenerator) RubyPackageMetadataTransformer(com.google.api.codegen.transformer.ruby.RubyPackageMetadataTransformer) RubySamplePackageMetadataTransformer(com.google.api.codegen.transformer.ruby.RubySamplePackageMetadataTransformer) JavaRenderingUtil(com.google.api.codegen.util.java.JavaRenderingUtil) PhpPackageMetadataTransformer(com.google.api.codegen.transformer.php.PhpPackageMetadataTransformer) CSharpGapicSnippetsTransformer(com.google.api.codegen.transformer.csharp.CSharpGapicSnippetsTransformer) JavaSurfaceTestTransformer(com.google.api.codegen.transformer.java.JavaSurfaceTestTransformer) JavaGapicSurfaceTransformer(com.google.api.codegen.transformer.java.JavaGapicSurfaceTransformer) CSharpGapicUnitTestTransformer(com.google.api.codegen.transformer.csharp.CSharpGapicUnitTestTransformer) SnippetSetRunner(com.google.api.codegen.SnippetSetRunner) GoGapicSurfaceTransformer(com.google.api.codegen.transformer.go.GoGapicSurfaceTransformer) PhpGapicSurfaceTestTransformer(com.google.api.codegen.transformer.php.PhpGapicSurfaceTestTransformer) RubyGapicSurfaceTransformer(com.google.api.codegen.transformer.ruby.RubyGapicSurfaceTransformer) ImmutableSet(com.google.common.collect.ImmutableSet) ImmutableMap(com.google.common.collect.ImmutableMap) CSharpGapicClientPackageTransformer(com.google.api.codegen.transformer.csharp.CSharpGapicClientPackageTransformer) CSharpBasicPackageTransformer(com.google.api.codegen.transformer.csharp.CSharpBasicPackageTransformer) NodeJSGapicSurfaceTestTransformer(com.google.api.codegen.transformer.nodejs.NodeJSGapicSurfaceTestTransformer) NodeJSSamplePackageMetadataTransformer(com.google.api.codegen.transformer.nodejs.NodeJSSamplePackageMetadataTransformer) GO(com.google.api.codegen.common.TargetLanguage.GO) List(java.util.List) PYTHON(com.google.api.codegen.common.TargetLanguage.PYTHON) JavaGapicPackageTransformer(com.google.api.codegen.transformer.java.JavaGapicPackageTransformer) JavaGapicCodePathMapper(com.google.api.codegen.java.JavaGapicCodePathMapper) CSHARP(com.google.api.codegen.common.TargetLanguage.CSHARP) ClientConfigSnippetSetRunner(com.google.api.codegen.clientconfig.ClientConfigSnippetSetRunner) PhpGapicCodePathMapper(com.google.api.codegen.php.PhpGapicCodePathMapper) ModelToViewTransformer(com.google.api.codegen.transformer.ModelToViewTransformer) PackageMetadataConfig(com.google.api.codegen.config.PackageMetadataConfig) NodeJSGapicSurfaceDocTransformer(com.google.api.codegen.transformer.nodejs.NodeJSGapicSurfaceDocTransformer) CSharpGapicClientTransformer(com.google.api.codegen.transformer.csharp.CSharpGapicClientTransformer) NODEJS(com.google.api.codegen.common.TargetLanguage.NODEJS) PythonPackageMetadataTransformer(com.google.api.codegen.transformer.py.PythonPackageMetadataTransformer) NodeJSGapicSurfaceTransformer(com.google.api.codegen.transformer.nodejs.NodeJSGapicSurfaceTransformer) PythonGapicSurfaceTestTransformer(com.google.api.codegen.transformer.py.PythonGapicSurfaceTestTransformer) RubyGapicSamplesTransformer(com.google.api.codegen.transformer.ruby.RubyGapicSamplesTransformer) Function(java.util.function.Function) CSharpRenderingUtil(com.google.api.codegen.util.csharp.CSharpRenderingUtil) ArrayList(java.util.ArrayList) NodeJSPackageMetadataTransformer(com.google.api.codegen.transformer.nodejs.NodeJSPackageMetadataTransformer) PhpGapicSamplesTransformer(com.google.api.codegen.transformer.php.PhpGapicSamplesTransformer) RUBY(com.google.api.codegen.common.TargetLanguage.RUBY) NodeJSGapicSamplesTransformer(com.google.api.codegen.transformer.nodejs.NodeJSGapicSamplesTransformer) NodeJSCodePathMapper(com.google.api.codegen.nodejs.NodeJSCodePathMapper) RubyGapicSurfaceTestTransformer(com.google.api.codegen.transformer.ruby.RubyGapicSurfaceTestTransformer) PhpClientConfigGapicContext(com.google.api.codegen.clientconfig.php.PhpClientConfigGapicContext) TargetLanguage(com.google.api.codegen.common.TargetLanguage) CSharpStandaloneSampleTransformer(com.google.api.codegen.transformer.csharp.CSharpStandaloneSampleTransformer) CSharpNameFormatter(com.google.api.codegen.util.csharp.CSharpNameFormatter) PythonGapicSurfaceTransformer(com.google.api.codegen.transformer.py.PythonGapicSurfaceTransformer) PHP(com.google.api.codegen.common.TargetLanguage.PHP) JavaGapicSamplesTransformer(com.google.api.codegen.transformer.java.JavaGapicSamplesTransformer) PhpGapicSurfaceTransformer(com.google.api.codegen.transformer.php.PhpGapicSurfaceTransformer) PythonRenderingUtil(com.google.api.codegen.util.py.PythonRenderingUtil) File(java.io.File) CommonSnippetSetRunner(com.google.api.codegen.rendering.CommonSnippetSetRunner) RubyNameFormatter(com.google.api.codegen.util.ruby.RubyNameFormatter) GapicProductConfig(com.google.api.codegen.config.GapicProductConfig) ProtoApiModel(com.google.api.codegen.config.ProtoApiModel) JavaGapicSamplesPackageTransformer(com.google.api.codegen.transformer.java.JavaGapicSamplesPackageTransformer) GoGapicSurfaceTestTransformer(com.google.api.codegen.transformer.go.GoGapicSurfaceTestTransformer) ClientConfigGapicContext(com.google.api.codegen.clientconfig.ClientConfigGapicContext) RubyGapicSurfaceDocTransformer(com.google.api.codegen.transformer.ruby.RubyGapicSurfaceDocTransformer) PythonGapicSamplesTransformer(com.google.api.codegen.transformer.py.PythonGapicSamplesTransformer) CommonRenderingUtil(com.google.api.codegen.util.CommonRenderingUtil) Model(com.google.api.tools.framework.model.Model) ModelToViewTransformer(com.google.api.codegen.transformer.ModelToViewTransformer) JavaGapicPackageTransformer(com.google.api.codegen.transformer.java.JavaGapicPackageTransformer) NodeJSCodePathMapper(com.google.api.codegen.nodejs.NodeJSCodePathMapper) RubyGapicSurfaceTestTransformer(com.google.api.codegen.transformer.ruby.RubyGapicSurfaceTestTransformer) ArrayList(java.util.ArrayList) NodeJSSamplePackageMetadataTransformer(com.google.api.codegen.transformer.nodejs.NodeJSSamplePackageMetadataTransformer) PhpGapicSamplesTransformer(com.google.api.codegen.transformer.php.PhpGapicSamplesTransformer) JavaGapicSurfaceTransformer(com.google.api.codegen.transformer.java.JavaGapicSurfaceTransformer) PythonRenderingUtil(com.google.api.codegen.util.py.PythonRenderingUtil) NodeJSPackageMetadataTransformer(com.google.api.codegen.transformer.nodejs.NodeJSPackageMetadataTransformer) GoGapicSurfaceTransformer(com.google.api.codegen.transformer.go.GoGapicSurfaceTransformer) CommonRenderingUtil(com.google.api.codegen.util.CommonRenderingUtil) PhpPackageMetadataTransformer(com.google.api.codegen.transformer.php.PhpPackageMetadataTransformer) RubyGapicSurfaceTransformer(com.google.api.codegen.transformer.ruby.RubyGapicSurfaceTransformer) RubySamplePackageMetadataTransformer(com.google.api.codegen.transformer.ruby.RubySamplePackageMetadataTransformer) JavaGapicSamplesPackageTransformer(com.google.api.codegen.transformer.java.JavaGapicSamplesPackageTransformer) NodeJSGapicSurfaceTransformer(com.google.api.codegen.transformer.nodejs.NodeJSGapicSurfaceTransformer) CSharpStandaloneSampleTransformer(com.google.api.codegen.transformer.csharp.CSharpStandaloneSampleTransformer) PhpGapicSurfaceTestTransformer(com.google.api.codegen.transformer.php.PhpGapicSurfaceTestTransformer) NodeJSGapicSurfaceDocTransformer(com.google.api.codegen.transformer.nodejs.NodeJSGapicSurfaceDocTransformer) CSharpGapicClientTransformer(com.google.api.codegen.transformer.csharp.CSharpGapicClientTransformer) RubyPackageMetadataTransformer(com.google.api.codegen.transformer.ruby.RubyPackageMetadataTransformer) RubyGapicSamplesTransformer(com.google.api.codegen.transformer.ruby.RubyGapicSamplesTransformer) CSharpRenderingUtil(com.google.api.codegen.util.csharp.CSharpRenderingUtil) CSharpGapicClientPackageTransformer(com.google.api.codegen.transformer.csharp.CSharpGapicClientPackageTransformer) CSharpNameFormatter(com.google.api.codegen.util.csharp.CSharpNameFormatter) CSharpGapicUnitTestTransformer(com.google.api.codegen.transformer.csharp.CSharpGapicUnitTestTransformer) CSharpGapicSnippetsTransformer(com.google.api.codegen.transformer.csharp.CSharpGapicSnippetsTransformer) GoGapicSurfaceTestTransformer(com.google.api.codegen.transformer.go.GoGapicSurfaceTestTransformer) PhpClientConfigGapicContext(com.google.api.codegen.clientconfig.php.PhpClientConfigGapicContext) ClientConfigGapicContext(com.google.api.codegen.clientconfig.ClientConfigGapicContext) CommonSnippetSetRunner(com.google.api.codegen.rendering.CommonSnippetSetRunner) JavaRenderingUtil(com.google.api.codegen.util.java.JavaRenderingUtil) PythonGapicSurfaceTestTransformer(com.google.api.codegen.transformer.py.PythonGapicSurfaceTestTransformer) RubyNameFormatter(com.google.api.codegen.util.ruby.RubyNameFormatter) PythonGapicSamplesTransformer(com.google.api.codegen.transformer.py.PythonGapicSamplesTransformer) RubyGapicSurfaceDocTransformer(com.google.api.codegen.transformer.ruby.RubyGapicSurfaceDocTransformer) JavaGapicCodePathMapper(com.google.api.codegen.java.JavaGapicCodePathMapper) PhpGapicCodePathMapper(com.google.api.codegen.php.PhpGapicCodePathMapper) CodeGenerator(com.google.api.codegen.common.CodeGenerator) PhpClientConfigGapicContext(com.google.api.codegen.clientconfig.php.PhpClientConfigGapicContext) ClientConfigSnippetSetRunner(com.google.api.codegen.clientconfig.ClientConfigSnippetSetRunner) JavaSurfaceTestTransformer(com.google.api.codegen.transformer.java.JavaSurfaceTestTransformer) PhpGapicSurfaceTransformer(com.google.api.codegen.transformer.php.PhpGapicSurfaceTransformer) NodeJSGapicSamplesTransformer(com.google.api.codegen.transformer.nodejs.NodeJSGapicSamplesTransformer) JavaGapicSamplesTransformer(com.google.api.codegen.transformer.java.JavaGapicSamplesTransformer) CSharpGapicSmokeTestTransformer(com.google.api.codegen.transformer.csharp.CSharpGapicSmokeTestTransformer) NodeJSGapicSurfaceTestTransformer(com.google.api.codegen.transformer.nodejs.NodeJSGapicSurfaceTestTransformer) PythonPackageMetadataTransformer(com.google.api.codegen.transformer.py.PythonPackageMetadataTransformer) PythonGapicSurfaceTransformer(com.google.api.codegen.transformer.py.PythonGapicSurfaceTransformer)

Aggregations

GapicProductConfig (com.google.api.codegen.config.GapicProductConfig)24 PackageMetadataConfig (com.google.api.codegen.config.PackageMetadataConfig)11 ProtoApiModel (com.google.api.codegen.config.ProtoApiModel)10 ViewModel (com.google.api.codegen.viewmodel.ViewModel)9 List (java.util.List)8 ArrayList (java.util.ArrayList)7 ImmutableList (com.google.common.collect.ImmutableList)6 TargetLanguage (com.google.api.codegen.common.TargetLanguage)5 GapicInterfaceContext (com.google.api.codegen.config.GapicInterfaceContext)5 InterfaceContext (com.google.api.codegen.config.InterfaceContext)5 MethodModel (com.google.api.codegen.config.MethodModel)5 Model (com.google.api.tools.framework.model.Model)5 Map (java.util.Map)5 Function (java.util.function.Function)5 CodeGenerator (com.google.api.codegen.common.CodeGenerator)4 SampleContext (com.google.api.codegen.config.SampleContext)4 GapicCodePathMapper (com.google.api.codegen.gapic.GapicCodePathMapper)4 GapicGeneratorConfig (com.google.api.codegen.gapic.GapicGeneratorConfig)4 Streams (com.google.common.collect.Streams)4 Paths (java.nio.file.Paths)4