Skip to content

Commit 34397bd

Browse files
committed
add runtime hints for graal vm
1 parent d576453 commit 34397bd

File tree

1 file changed

+49
-1
lines changed

1 file changed

+49
-1
lines changed

sdk-extensions/incubator/build.gradle.kts

Lines changed: 49 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,55 @@ val deleteJs2pTmp by tasks.registering(Delete::class) {
145145
delete("$buildDirectory/generated/sources/js2p-tmp/")
146146
}
147147

148-
tasks.getByName("compileJava").dependsOn(deleteJs2pTmp)
148+
val buildGraalVmReflectionJson = tasks.register("buildGraalVmReflectionJson") {
149+
dependsOn(overwriteJs2p)
150+
151+
val targetFile = File(
152+
buildDirectory,
153+
"resources/main/META-INF/native-image/io.opentelemetry/io.opentelemetry.sdk.extension.incubator/reflect-config.json"
154+
)
155+
156+
onlyIf { !targetFile.exists() }
157+
158+
doLast {
159+
println("Generating GraalVM reflection config at: ${targetFile.absolutePath}")
160+
val sourcePackagePath = "build/generated/sources/js2p/java/main/io/opentelemetry/sdk/extension/incubator/fileconfig/internal/model"
161+
162+
val classes = mutableListOf<String>()
163+
fileTree(sourcePackagePath).forEach {
164+
val path = it.path
165+
166+
val className = path
167+
.substringAfter(sourcePackagePath)
168+
.removePrefix("/")
169+
.removeSuffix(".java")
170+
.replace("/", ".")
171+
classes.add("io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.$className")
172+
}
173+
classes.sort()
174+
175+
targetFile.parentFile.mkdirs()
176+
targetFile.bufferedWriter().use { writer ->
177+
writer.write("[\n")
178+
classes.forEachIndexed { index, className ->
179+
writer.write(" {\n")
180+
writer.write(" \"name\": \"$className\",\n")
181+
writer.write(" \"allDeclaredMethods\": true,\n")
182+
writer.write(" \"allDeclaredFields\": true,\n")
183+
writer.write(" \"allDeclaredConstructors\": true\n")
184+
writer.write(" }")
185+
if (index < classes.size - 1) {
186+
writer.write(",\n")
187+
} else {
188+
writer.write("\n")
189+
}
190+
}
191+
writer.write("]\n")
192+
}
193+
}
194+
}
195+
196+
tasks.getByName("compileJava").dependsOn(deleteJs2pTmp, buildGraalVmReflectionJson)
149197
tasks.getByName("sourcesJar").dependsOn(deleteJs2pTmp)
150198

151199
// Exclude jsonschema2pojo generated sources from checkstyle

0 commit comments

Comments
 (0)