X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=binding%2Fmdsal-binding-java-api-generator%2Fsrc%2Ftest%2Fjava%2Forg%2Fopendaylight%2Fmdsal%2Fbinding%2Fjava%2Fapi%2Fgenerator%2Ftest%2FBaseCompilationTest.java;h=294ff8ff5f186fd87c997f8989031555da76b9f3;hb=12c957d9a7de8e6da49a652f08587714f6ca4f14;hp=cb95792066d44dd77ebc3b7ed0627d7f554cd35e;hpb=dfcc0a39fd3e3ce8bbbeba95883bb2ec5f3618a1;p=mdsal.git diff --git a/binding/mdsal-binding-java-api-generator/src/test/java/org/opendaylight/mdsal/binding/java/api/generator/test/BaseCompilationTest.java b/binding/mdsal-binding-java-api-generator/src/test/java/org/opendaylight/mdsal/binding/java/api/generator/test/BaseCompilationTest.java index cb95792066..294ff8ff5f 100644 --- a/binding/mdsal-binding-java-api-generator/src/test/java/org/opendaylight/mdsal/binding/java/api/generator/test/BaseCompilationTest.java +++ b/binding/mdsal-binding-java-api-generator/src/test/java/org/opendaylight/mdsal/binding/java/api/generator/test/BaseCompilationTest.java @@ -9,10 +9,28 @@ package org.opendaylight.mdsal.binding.java.api.generator.test; import static org.junit.Assert.assertTrue; +import com.google.common.collect.ImmutableSet; +import com.google.common.collect.Table; +import com.google.common.collect.Table.Cell; +import com.google.common.io.Files; +import java.io.File; +import java.io.IOException; +import java.net.URISyntaxException; +import java.nio.charset.StandardCharsets; +import java.util.List; +import java.util.Optional; +import java.util.function.Supplier; import org.junit.Before; import org.junit.BeforeClass; import org.opendaylight.mdsal.binding.generator.api.BindingGenerator; import org.opendaylight.mdsal.binding.generator.impl.BindingGeneratorImpl; +import org.opendaylight.mdsal.binding.java.api.generator.GeneratorJavaFile; +import org.opendaylight.mdsal.binding.java.api.generator.YangModuleInfoTemplate; +import org.opendaylight.mdsal.binding.model.api.Type; +import org.opendaylight.mdsal.binding.spec.naming.BindingMapping; +import org.opendaylight.yangtools.yang.model.api.Module; +import org.opendaylight.yangtools.yang.model.api.SchemaContext; +import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils; public abstract class BaseCompilationTest { @@ -32,4 +50,38 @@ public abstract class BaseCompilationTest { bindingGenerator = new BindingGeneratorImpl(); } + protected static final void generateTestSources(final List types, final File sourcesOutputDir) + throws IOException { + types.sort((o1, o2) -> o2.getName().compareTo(o1.getName())); + + final GeneratorJavaFile generator = new GeneratorJavaFile(ImmutableSet.copyOf(types)); + final Table> generatedFiles = generator.generateFileContent(true); + for (Cell> cell : generatedFiles.cellSet()) { + final File target = new File(sourcesOutputDir, cell.getColumnKey()); + Files.createParentDirs(target); + Files.asCharSink(target, StandardCharsets.UTF_8).write(cell.getValue().get()); + } + } + + protected final List generateTestSources(final String resourceDirPath, final File sourcesOutputDir) + throws IOException, URISyntaxException { + final List sourceFiles = CompilationTestUtils.getSourceFiles(resourceDirPath); + final SchemaContext context = YangParserTestUtils.parseYangFiles(sourceFiles); + final List types = bindingGenerator.generateTypes(context); + generateTestSources(types, sourcesOutputDir); + + // Also generate YangModuleInfo + for (Module module : context.getModules()) { + final YangModuleInfoTemplate template = new YangModuleInfoTemplate(module, context, + mod -> Optional.of("fake/" + mod.getName())); + + final File file = new File(GeneratorJavaFile.packageToDirectory(sourcesOutputDir, + BindingMapping.getRootPackageName(module.getQNameModule())), + BindingMapping.MODULE_INFO_CLASS_NAME + ".java"); + Files.createParentDirs(file); + Files.asCharSink(file, StandardCharsets.UTF_8).write(template.generate()); + } + + return types; + } }