Rename JavaCodegenOptions to JavaCodeGeneratorOptions (#801)

The new name is consistent with existing names JavaCodeGenerator and CliJavaCodeGeneratorOptions.
Backward compatibility is ensured by turning JavaCodegenOptions into a (deprecated) type alias.

Also: deprecate `CliJavaCodeGeneratorOptions.toJavaCodegenOptions()`
This commit is contained in:
translatenix
2024-11-13 15:43:33 -08:00
committed by GitHub
parent df38011c9e
commit 406fa4cf40
4 changed files with 22 additions and 13 deletions

View File

@@ -33,7 +33,7 @@ class CliJavaCodeGenerator(private val options: CliJavaCodeGeneratorOptions) :
builder.build().use { evaluator -> builder.build().use { evaluator ->
for (moduleUri in options.base.normalizedSourceModules) { for (moduleUri in options.base.normalizedSourceModules) {
val schema = evaluator.evaluateSchema(ModuleSource.uri(moduleUri)) val schema = evaluator.evaluateSchema(ModuleSource.uri(moduleUri))
val codeGenerator = JavaCodeGenerator(schema, options.toJavaCodegenOptions()) val codeGenerator = JavaCodeGenerator(schema, options.toJavaCodeGeneratorOptions())
try { try {
for ((fileName, fileContents) in codeGenerator.output) { for ((fileName, fileContents) in codeGenerator.output) {
val outputFile = options.outputDir.resolve(fileName) val outputFile = options.outputDir.resolve(fileName)

View File

@@ -65,8 +65,12 @@ data class CliJavaCodeGeneratorOptions(
*/ */
val renames: Map<String, String> = emptyMap() val renames: Map<String, String> = emptyMap()
) { ) {
fun toJavaCodegenOptions() = @Suppress("DeprecatedCallableAddReplaceWith")
JavaCodegenOptions( @Deprecated("deprecated without replacement")
fun toJavaCodegenOptions() = toJavaCodeGeneratorOptions()
internal fun toJavaCodeGeneratorOptions() =
JavaCodeGeneratorOptions(
indent, indent,
generateGetters, generateGetters,
generateJavadoc, generateJavadoc,

View File

@@ -41,7 +41,10 @@ import org.pkl.core.util.IoUtils
class JavaCodeGeneratorException(message: String) : RuntimeException(message) class JavaCodeGeneratorException(message: String) : RuntimeException(message)
data class JavaCodegenOptions( @kotlin.Deprecated("renamed to JavaCodeGeneratorOptions", ReplaceWith("JavaCodeGeneratorOptions"))
typealias JavaCodegenOptions = JavaCodeGeneratorOptions
data class JavaCodeGeneratorOptions(
/** The characters to use for indenting generated Java code. */ /** The characters to use for indenting generated Java code. */
val indent: String = " ", val indent: String = " ",
@@ -84,7 +87,7 @@ data class JavaCodegenOptions(
/** Entrypoint for the Java code generator API. */ /** Entrypoint for the Java code generator API. */
class JavaCodeGenerator( class JavaCodeGenerator(
private val schema: ModuleSchema, private val schema: ModuleSchema,
private val codegenOptions: JavaCodegenOptions private val codegenOptions: JavaCodeGeneratorOptions
) { ) {
companion object { companion object {

View File

@@ -115,7 +115,7 @@ class JavaCodeGeneratorTest {
val generator = val generator =
JavaCodeGenerator( JavaCodeGenerator(
module, module,
JavaCodegenOptions( JavaCodeGeneratorOptions(
generateGetters = generateGetters, generateGetters = generateGetters,
generateJavadoc = generateJavadoc, generateJavadoc = generateJavadoc,
generateSpringBootConfig = generateSpringBootConfig, generateSpringBootConfig = generateSpringBootConfig,
@@ -1987,7 +1987,7 @@ class JavaCodeGeneratorTest {
@Test @Test
fun `override names in a standalone module`() { fun `override names in a standalone module`() {
val files = val files =
JavaCodegenOptions( JavaCodeGeneratorOptions(
renames = mapOf("a.b.c." to "x.y.z.", "d.e.f.AnotherModule" to "u.v.w.RenamedModule") renames = mapOf("a.b.c." to "x.y.z.", "d.e.f.AnotherModule" to "u.v.w.RenamedModule")
) )
.generateFiles( .generateFiles(
@@ -2023,7 +2023,7 @@ class JavaCodeGeneratorTest {
@Test @Test
fun `override names based on the longest prefix`() { fun `override names based on the longest prefix`() {
val files = val files =
JavaCodegenOptions( JavaCodeGeneratorOptions(
renames = mapOf("com.foo.bar." to "x.", "com.foo." to "y.", "com." to "z.", "" to "w.") renames = mapOf("com.foo.bar." to "x.", "com.foo." to "y.", "com." to "z.", "" to "w.")
) )
.generateFiles( .generateFiles(
@@ -2068,7 +2068,7 @@ class JavaCodeGeneratorTest {
@Test @Test
fun `override names in multiple modules using each other`() { fun `override names in multiple modules using each other`() {
val files = val files =
JavaCodegenOptions( JavaCodeGeneratorOptions(
renames = renames =
mapOf( mapOf(
"org.foo." to "com.foo.x.", "org.foo." to "com.foo.x.",
@@ -2150,7 +2150,7 @@ class JavaCodeGeneratorTest {
@Test @Test
fun `do not capitalize names of renamed classes`() { fun `do not capitalize names of renamed classes`() {
val files = val files =
JavaCodegenOptions( JavaCodeGeneratorOptions(
renames = mapOf("a.b.c.MyModule" to "x.y.z.renamed_module", "d.e.f." to "u.v.w.") renames = mapOf("a.b.c.MyModule" to "x.y.z.renamed_module", "d.e.f." to "u.v.w.")
) )
.generateFiles( .generateFiles(
@@ -2238,7 +2238,9 @@ class JavaCodeGeneratorTest {
assertThat(files).isEmpty() assertThat(files).isEmpty()
} }
private fun JavaCodegenOptions.generateFiles(vararg pklModules: PklModule): Map<String, String> { private fun JavaCodeGeneratorOptions.generateFiles(
vararg pklModules: PklModule
): Map<String, String> {
val pklFiles = pklModules.map { it.writeToDisk(tempDir.resolve("pkl/${it.name}.pkl")) } val pklFiles = pklModules.map { it.writeToDisk(tempDir.resolve("pkl/${it.name}.pkl")) }
val evaluator = Evaluator.preconfigured() val evaluator = Evaluator.preconfigured()
return pklFiles.fold(mapOf()) { acc, pklFile -> return pklFiles.fold(mapOf()) { acc, pklFile ->
@@ -2248,13 +2250,13 @@ class JavaCodeGeneratorTest {
} }
} }
private fun JavaCodegenOptions.generateFiles( private fun JavaCodeGeneratorOptions.generateFiles(
vararg pklModules: kotlin.Pair<String, String> vararg pklModules: kotlin.Pair<String, String>
): Map<String, String> = ): Map<String, String> =
generateFiles(*pklModules.map { (name, text) -> PklModule(name, text) }.toTypedArray()) generateFiles(*pklModules.map { (name, text) -> PklModule(name, text) }.toTypedArray())
private fun generateFiles(vararg pklModules: PklModule): Map<String, JavaSourceCode> = private fun generateFiles(vararg pklModules: PklModule): Map<String, JavaSourceCode> =
JavaCodegenOptions().generateFiles(*pklModules).mapValues { JavaSourceCode(it.value) } JavaCodeGeneratorOptions().generateFiles(*pklModules).mapValues { JavaSourceCode(it.value) }
private fun instantiateOtherAndPropertyTypes(): kotlin.Pair<Any, Any> { private fun instantiateOtherAndPropertyTypes(): kotlin.Pair<Any, Any> {
val otherCtor = propertyTypesClasses.getValue("my.Mod\$Other").constructors.first() val otherCtor = propertyTypesClasses.getValue("my.Mod\$Other").constructors.first()