@@ -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)
149197tasks.getByName(" sourcesJar" ).dependsOn(deleteJs2pTmp)
150198
151199// Exclude jsonschema2pojo generated sources from checkstyle
0 commit comments