Upgrade to Native Build Tools Plugin 1.0.0

Closes gh-49920
This commit is contained in:
Moritz Halbritter
2026-04-07 09:31:33 +02:00
parent a1be8e54a6
commit d7334fed64
14 changed files with 1190 additions and 778 deletions
@@ -67,11 +67,8 @@ class NativeImagePluginActionIntegrationTests {
File jarFile = new File(buildLibs, this.gradleBuild.getProjectDir().getName() + ".jar");
assertThat(buildLibs.listFiles()).contains(jarFile);
assertThat(getEntryNames(jarFile)).contains(
"META-INF/native-image/ch.qos.logback/logback-classic/1.2.11/reflect-config.json",
"META-INF/native-image/org.jline/jline/3.21.0/jni-config.json",
"META-INF/native-image/org.jline/jline/3.21.0/proxy-config.json",
"META-INF/native-image/org.jline/jline/3.21.0/reflect-config.json",
"META-INF/native-image/org.jline/jline/3.21.0/resource-config.json");
"META-INF/native-image/ch.qos.logback/logback-classic/1.2.11/reachability-metadata.json",
"META-INF/native-image/org.jline/jline/3.21.0/reachability-metadata.json");
}
@TestTemplate
@@ -87,11 +84,8 @@ class NativeImagePluginActionIntegrationTests {
File jarFile = new File(buildLibs, this.gradleBuild.getProjectDir().getName() + ".jar");
assertThat(buildLibs.listFiles()).contains(jarFile);
assertThat(getEntryNames(jarFile)).contains(
"META-INF/native-image/ch.qos.logback/logback-classic/1.2.11/reflect-config.json",
"META-INF/native-image/org.jline/jline/3.21.0/jni-config.json",
"META-INF/native-image/org.jline/jline/3.21.0/proxy-config.json",
"META-INF/native-image/org.jline/jline/3.21.0/reflect-config.json",
"META-INF/native-image/org.jline/jline/3.21.0/resource-config.json");
"META-INF/native-image/ch.qos.logback/logback-classic/1.2.11/reachability-metadata.json",
"META-INF/native-image/org.jline/jline/3.21.0/reachability-metadata.json");
}
@TestTemplate
@@ -0,0 +1,297 @@
{
"reflection": [
{
"condition": {
"typeReached": "ch.qos.logback.classic.LoggerContext"
},
"type": "ch.qos.logback.classic.pattern.CallerDataConverter",
"allPublicConstructors": true
},
{
"condition": {
"typeReached": "ch.qos.logback.classic.LoggerContext"
},
"type": "ch.qos.logback.classic.pattern.ClassOfCallerConverter",
"allPublicConstructors": true
},
{
"condition": {
"typeReached": "ch.qos.logback.classic.LoggerContext"
},
"type": "ch.qos.logback.classic.pattern.ContextNameConverter",
"allPublicConstructors": true
},
{
"condition": {
"typeReached": "ch.qos.logback.classic.LoggerContext"
},
"type": "ch.qos.logback.classic.pattern.DateConverter",
"allPublicConstructors": true
},
{
"condition": {
"typeReached": "ch.qos.logback.classic.LoggerContext"
},
"type": "ch.qos.logback.classic.pattern.ExtendedThrowableProxyConverter",
"allPublicConstructors": true
},
{
"condition": {
"typeReached": "ch.qos.logback.classic.LoggerContext"
},
"type": "ch.qos.logback.classic.pattern.FileOfCallerConverter",
"allPublicConstructors": true
},
{
"condition": {
"typeReached": "ch.qos.logback.classic.LoggerContext"
},
"type": "ch.qos.logback.classic.pattern.LevelConverter",
"allPublicConstructors": true
},
{
"condition": {
"typeReached": "ch.qos.logback.classic.LoggerContext"
},
"type": "ch.qos.logback.classic.pattern.LineOfCallerConverter",
"allPublicConstructors": true
},
{
"condition": {
"typeReached": "ch.qos.logback.classic.LoggerContext"
},
"type": "ch.qos.logback.classic.pattern.LineSeparatorConverter",
"allPublicConstructors": true
},
{
"condition": {
"typeReached": "ch.qos.logback.classic.LoggerContext"
},
"type": "ch.qos.logback.classic.pattern.LocalSequenceNumberConverter",
"allPublicConstructors": true
},
{
"condition": {
"typeReached": "ch.qos.logback.classic.LoggerContext"
},
"type": "ch.qos.logback.classic.pattern.LoggerConverter",
"allPublicConstructors": true
},
{
"condition": {
"typeReached": "ch.qos.logback.classic.LoggerContext"
},
"type": "ch.qos.logback.classic.pattern.MDCConverter",
"allPublicConstructors": true
},
{
"condition": {
"typeReached": "ch.qos.logback.classic.LoggerContext"
},
"type": "ch.qos.logback.classic.pattern.MarkerConverter",
"allPublicConstructors": true
},
{
"condition": {
"typeReached": "ch.qos.logback.classic.LoggerContext"
},
"type": "ch.qos.logback.classic.pattern.MessageConverter",
"allPublicConstructors": true
},
{
"condition": {
"typeReached": "ch.qos.logback.classic.LoggerContext"
},
"type": "ch.qos.logback.classic.pattern.MethodOfCallerConverter",
"allPublicConstructors": true
},
{
"condition": {
"typeReached": "ch.qos.logback.classic.LoggerContext"
},
"type": "ch.qos.logback.classic.pattern.NopThrowableInformationConverter",
"allPublicConstructors": true
},
{
"condition": {
"typeReached": "ch.qos.logback.classic.LoggerContext"
},
"type": "ch.qos.logback.classic.pattern.PrefixCompositeConverter",
"allPublicConstructors": true
},
{
"condition": {
"typeReached": "ch.qos.logback.classic.LoggerContext"
},
"type": "ch.qos.logback.classic.pattern.PropertyConverter",
"allPublicConstructors": true
},
{
"condition": {
"typeReached": "ch.qos.logback.classic.LoggerContext"
},
"type": "ch.qos.logback.classic.pattern.RelativeTimeConverter",
"allPublicConstructors": true
},
{
"condition": {
"typeReached": "ch.qos.logback.classic.LoggerContext"
},
"type": "ch.qos.logback.classic.pattern.RootCauseFirstThrowableProxyConverter",
"allPublicConstructors": true
},
{
"condition": {
"typeReached": "ch.qos.logback.classic.LoggerContext"
},
"type": "ch.qos.logback.classic.pattern.ThreadConverter",
"allPublicConstructors": true
},
{
"condition": {
"typeReached": "ch.qos.logback.classic.LoggerContext"
},
"type": "ch.qos.logback.classic.pattern.ThrowableProxyConverter",
"allPublicConstructors": true
},
{
"condition": {
"typeReached": "ch.qos.logback.classic.LoggerContext"
},
"type": "ch.qos.logback.classic.pattern.color.HighlightingCompositeConverter",
"allPublicConstructors": true
},
{
"condition": {
"typeReached": "ch.qos.logback.classic.LoggerContext"
},
"type": "ch.qos.logback.core.pattern.IdentityCompositeConverter",
"allPublicConstructors": true
},
{
"condition": {
"typeReached": "ch.qos.logback.classic.LoggerContext"
},
"type": "ch.qos.logback.core.pattern.ReplacingCompositeConverter",
"allPublicConstructors": true
},
{
"condition": {
"typeReached": "ch.qos.logback.classic.LoggerContext"
},
"type": "ch.qos.logback.core.pattern.color.BlackCompositeConverter",
"allPublicConstructors": true
},
{
"condition": {
"typeReached": "ch.qos.logback.classic.LoggerContext"
},
"type": "ch.qos.logback.core.pattern.color.BlueCompositeConverter",
"allPublicConstructors": true
},
{
"condition": {
"typeReached": "ch.qos.logback.classic.LoggerContext"
},
"type": "ch.qos.logback.core.pattern.color.BoldBlueCompositeConverter",
"allPublicConstructors": true
},
{
"condition": {
"typeReached": "ch.qos.logback.classic.LoggerContext"
},
"type": "ch.qos.logback.core.pattern.color.BoldCyanCompositeConverter",
"allPublicConstructors": true
},
{
"condition": {
"typeReached": "ch.qos.logback.classic.LoggerContext"
},
"type": "ch.qos.logback.core.pattern.color.BoldGreenCompositeConverter",
"allPublicConstructors": true
},
{
"condition": {
"typeReached": "ch.qos.logback.classic.LoggerContext"
},
"type": "ch.qos.logback.core.pattern.color.BoldMagentaCompositeConverter",
"allPublicConstructors": true
},
{
"condition": {
"typeReached": "ch.qos.logback.classic.LoggerContext"
},
"type": "ch.qos.logback.core.pattern.color.BoldRedCompositeConverter",
"allPublicConstructors": true
},
{
"condition": {
"typeReached": "ch.qos.logback.classic.LoggerContext"
},
"type": "ch.qos.logback.core.pattern.color.BoldWhiteCompositeConverter",
"allPublicConstructors": true
},
{
"condition": {
"typeReached": "ch.qos.logback.classic.LoggerContext"
},
"type": "ch.qos.logback.core.pattern.color.BoldYellowCompositeConverter",
"allPublicConstructors": true
},
{
"condition": {
"typeReached": "ch.qos.logback.classic.LoggerContext"
},
"type": "ch.qos.logback.core.pattern.color.CyanCompositeConverter",
"allPublicConstructors": true
},
{
"condition": {
"typeReached": "ch.qos.logback.classic.LoggerContext"
},
"type": "ch.qos.logback.core.pattern.color.GrayCompositeConverter",
"allPublicConstructors": true
},
{
"condition": {
"typeReached": "ch.qos.logback.classic.LoggerContext"
},
"type": "ch.qos.logback.core.pattern.color.GreenCompositeConverter",
"allPublicConstructors": true
},
{
"condition": {
"typeReached": "ch.qos.logback.classic.LoggerContext"
},
"type": "ch.qos.logback.core.pattern.color.MagentaCompositeConverter",
"allPublicConstructors": true
},
{
"condition": {
"typeReached": "ch.qos.logback.classic.LoggerContext"
},
"type": "ch.qos.logback.core.pattern.color.RedCompositeConverter",
"allPublicConstructors": true
},
{
"condition": {
"typeReached": "ch.qos.logback.classic.LoggerContext"
},
"type": "ch.qos.logback.core.pattern.color.WhiteCompositeConverter",
"allPublicConstructors": true
},
{
"condition": {
"typeReached": "ch.qos.logback.classic.LoggerContext"
},
"type": "ch.qos.logback.core.pattern.color.YellowCompositeConverter",
"allPublicConstructors": true
},
{
"condition": {
"typeReached": "ch.qos.logback.classic.LoggerContext"
},
"type": "org.slf4j.impl.StaticLoggerBinder"
}
]
}
@@ -1,299 +0,0 @@
[
{
"condition": {
"typeReachable": "ch.qos.logback.classic.LoggerContext"
},
"name": "ch.qos.logback.classic.pattern.CallerDataConverter",
"allPublicConstructors": true
},
{
"condition": {
"typeReachable": "ch.qos.logback.classic.LoggerContext"
},
"name": "ch.qos.logback.classic.pattern.CallerDataConverter",
"allPublicConstructors": true
},
{
"condition": {
"typeReachable": "ch.qos.logback.classic.LoggerContext"
},
"name": "ch.qos.logback.classic.pattern.ClassOfCallerConverter",
"allPublicConstructors": true
},
{
"condition": {
"typeReachable": "ch.qos.logback.classic.LoggerContext"
},
"name": "ch.qos.logback.classic.pattern.ContextNameConverter",
"allPublicConstructors": true
},
{
"condition": {
"typeReachable": "ch.qos.logback.classic.LoggerContext"
},
"name": "ch.qos.logback.classic.pattern.DateConverter",
"allPublicConstructors": true
},
{
"condition": {
"typeReachable": "ch.qos.logback.classic.LoggerContext"
},
"name": "ch.qos.logback.classic.pattern.ExtendedThrowableProxyConverter",
"allPublicConstructors": true
},
{
"condition": {
"typeReachable": "ch.qos.logback.classic.LoggerContext"
},
"name": "ch.qos.logback.classic.pattern.FileOfCallerConverter",
"allPublicConstructors": true
},
{
"condition": {
"typeReachable": "ch.qos.logback.classic.LoggerContext"
},
"name": "ch.qos.logback.classic.pattern.LevelConverter",
"allPublicConstructors": true
},
{
"condition": {
"typeReachable": "ch.qos.logback.classic.LoggerContext"
},
"name": "ch.qos.logback.classic.pattern.LineOfCallerConverter",
"allPublicConstructors": true
},
{
"condition": {
"typeReachable": "ch.qos.logback.classic.LoggerContext"
},
"name": "ch.qos.logback.classic.pattern.LineSeparatorConverter",
"allPublicConstructors": true
},
{
"condition": {
"typeReachable": "ch.qos.logback.classic.LoggerContext"
},
"name": "ch.qos.logback.classic.pattern.LocalSequenceNumberConverter",
"allPublicConstructors": true
},
{
"condition": {
"typeReachable": "ch.qos.logback.classic.LoggerContext"
},
"name": "ch.qos.logback.classic.pattern.LoggerConverter",
"allPublicConstructors": true
},
{
"condition": {
"typeReachable": "ch.qos.logback.classic.LoggerContext"
},
"name": "ch.qos.logback.classic.pattern.MDCConverter",
"allPublicConstructors": true
},
{
"condition": {
"typeReachable": "ch.qos.logback.classic.LoggerContext"
},
"name": "ch.qos.logback.classic.pattern.MarkerConverter",
"allPublicConstructors": true
},
{
"condition": {
"typeReachable": "ch.qos.logback.classic.LoggerContext"
},
"name": "ch.qos.logback.classic.pattern.MessageConverter",
"allPublicConstructors": true
},
{
"condition": {
"typeReachable": "ch.qos.logback.classic.LoggerContext"
},
"name": "ch.qos.logback.classic.pattern.MethodOfCallerConverter",
"allPublicConstructors": true
},
{
"condition": {
"typeReachable": "ch.qos.logback.classic.LoggerContext"
},
"name": "ch.qos.logback.classic.pattern.NopThrowableInformationConverter",
"allPublicConstructors": true
},
{
"condition": {
"typeReachable": "ch.qos.logback.classic.LoggerContext"
},
"name": "ch.qos.logback.classic.pattern.PrefixCompositeConverter",
"allPublicConstructors": true
},
{
"condition": {
"typeReachable": "ch.qos.logback.classic.LoggerContext"
},
"name": "ch.qos.logback.classic.pattern.PropertyConverter",
"allPublicConstructors": true
},
{
"condition": {
"typeReachable": "ch.qos.logback.classic.LoggerContext"
},
"name": "ch.qos.logback.classic.pattern.RelativeTimeConverter",
"allPublicConstructors": true
},
{
"condition": {
"typeReachable": "ch.qos.logback.classic.LoggerContext"
},
"name": "ch.qos.logback.classic.pattern.RootCauseFirstThrowableProxyConverter",
"allPublicConstructors": true
},
{
"condition": {
"typeReachable": "ch.qos.logback.classic.LoggerContext"
},
"name": "ch.qos.logback.classic.pattern.ThreadConverter",
"allPublicConstructors": true
},
{
"condition": {
"typeReachable": "ch.qos.logback.classic.LoggerContext"
},
"name": "ch.qos.logback.classic.pattern.ThrowableProxyConverter",
"allPublicConstructors": true
},
{
"condition": {
"typeReachable": "ch.qos.logback.classic.LoggerContext"
},
"name": "ch.qos.logback.classic.pattern.color.HighlightingCompositeConverter",
"allPublicConstructors": true
},
{
"condition": {
"typeReachable": "ch.qos.logback.classic.LoggerContext"
},
"name": "ch.qos.logback.core.pattern.IdentityCompositeConverter",
"allPublicConstructors": true
},
{
"condition": {
"typeReachable": "ch.qos.logback.classic.LoggerContext"
},
"name": "ch.qos.logback.core.pattern.ReplacingCompositeConverter",
"allPublicConstructors": true
},
{
"condition": {
"typeReachable": "ch.qos.logback.classic.LoggerContext"
},
"name": "ch.qos.logback.core.pattern.color.BlackCompositeConverter",
"allPublicConstructors": true
},
{
"condition": {
"typeReachable": "ch.qos.logback.classic.LoggerContext"
},
"name": "ch.qos.logback.core.pattern.color.BlueCompositeConverter",
"allPublicConstructors": true
},
{
"condition": {
"typeReachable": "ch.qos.logback.classic.LoggerContext"
},
"name": "ch.qos.logback.core.pattern.color.BoldBlueCompositeConverter",
"allPublicConstructors": true
},
{
"condition": {
"typeReachable": "ch.qos.logback.classic.LoggerContext"
},
"name": "ch.qos.logback.core.pattern.color.BoldCyanCompositeConverter",
"allPublicConstructors": true
},
{
"condition": {
"typeReachable": "ch.qos.logback.classic.LoggerContext"
},
"name": "ch.qos.logback.core.pattern.color.BoldGreenCompositeConverter",
"allPublicConstructors": true
},
{
"condition": {
"typeReachable": "ch.qos.logback.classic.LoggerContext"
},
"name": "ch.qos.logback.core.pattern.color.BoldMagentaCompositeConverter",
"allPublicConstructors": true
},
{
"condition": {
"typeReachable": "ch.qos.logback.classic.LoggerContext"
},
"name": "ch.qos.logback.core.pattern.color.BoldRedCompositeConverter",
"allPublicConstructors": true
},
{
"condition": {
"typeReachable": "ch.qos.logback.classic.LoggerContext"
},
"name": "ch.qos.logback.core.pattern.color.BoldWhiteCompositeConverter",
"allPublicConstructors": true
},
{
"condition": {
"typeReachable": "ch.qos.logback.classic.LoggerContext"
},
"name": "ch.qos.logback.core.pattern.color.BoldYellowCompositeConverter",
"allPublicConstructors": true
},
{
"condition": {
"typeReachable": "ch.qos.logback.classic.LoggerContext"
},
"name": "ch.qos.logback.core.pattern.color.CyanCompositeConverter",
"allPublicConstructors": true
},
{
"condition": {
"typeReachable": "ch.qos.logback.classic.LoggerContext"
},
"name": "ch.qos.logback.core.pattern.color.GrayCompositeConverter",
"allPublicConstructors": true
},
{
"condition": {
"typeReachable": "ch.qos.logback.classic.LoggerContext"
},
"name": "ch.qos.logback.core.pattern.color.GreenCompositeConverter",
"allPublicConstructors": true
},
{
"condition": {
"typeReachable": "ch.qos.logback.classic.LoggerContext"
},
"name": "ch.qos.logback.core.pattern.color.MagentaCompositeConverter",
"allPublicConstructors": true
},
{
"condition": {
"typeReachable": "ch.qos.logback.classic.LoggerContext"
},
"name": "ch.qos.logback.core.pattern.color.RedCompositeConverter",
"allPublicConstructors": true
},
{
"condition": {
"typeReachable": "ch.qos.logback.classic.LoggerContext"
},
"name": "ch.qos.logback.core.pattern.color.WhiteCompositeConverter",
"allPublicConstructors": true
},
{
"condition": {
"typeReachable": "ch.qos.logback.classic.LoggerContext"
},
"name": "ch.qos.logback.core.pattern.color.YellowCompositeConverter",
"allPublicConstructors": true
},
{
"name": "org.slf4j.impl.StaticLoggerBinder"
}
]
@@ -1,6 +0,0 @@
[
"jni-config.json",
"proxy-config.json",
"reflect-config.json",
"resource-config.json"
]
@@ -1,128 +0,0 @@
[
{
"condition": {
"typeReachable": "org.jline.terminal.impl.jansi.JansiNativePty"
},
"fields": [
{
"name": "HAVE_ISATTY"
},
{
"name": "HAVE_TTYNAME"
},
{
"name": "TCSADRAIN"
},
{
"name": "TCSAFLUSH"
},
{
"name": "TCSANOW"
},
{
"name": "TIOCGETD"
},
{
"name": "TIOCGWINSZ"
},
{
"name": "TIOCSETD"
},
{
"name": "TIOCSWINSZ"
}
],
"name": "org.fusesource.jansi.internal.CLibrary"
},
{
"allDeclaredFields": true,
"condition": {
"typeReachable": "org.fusesource.jansi.internal.CLibrary$WinSize"
},
"name": "org.fusesource.jansi.internal.CLibrary$WinSize"
},
{
"allDeclaredFields": true,
"condition": {
"typeReachable": "org.fusesource.jansi.internal.CLibrary$Termios"
},
"name": "org.fusesource.jansi.internal.CLibrary$Termios"
},
{
"allDeclaredFields": true,
"condition": {
"typeReachable": "org.fusesource.jansi.internal.Kernel32"
},
"name": "org.fusesource.jansi.internal.Kernel32"
},
{
"allDeclaredFields": true,
"condition": {
"typeReachable": "org.fusesource.jansi.internal.Kernel32$SMALL_RECT"
},
"name": "org.fusesource.jansi.internal.Kernel32$SMALL_RECT"
},
{
"allDeclaredFields": true,
"condition": {
"typeReachable": "org.fusesource.jansi.internal.Kernel32$COORD"
},
"name": "org.fusesource.jansi.internal.Kernel32$COORD"
},
{
"allDeclaredFields": true,
"condition": {
"typeReachable": "org.fusesource.jansi.internal.Kernel32$CONSOLE_SCREEN_BUFFER_INFO"
},
"name": "org.fusesource.jansi.internal.Kernel32$CONSOLE_SCREEN_BUFFER_INFO"
},
{
"allDeclaredFields": true,
"condition": {
"typeReachable": "org.fusesource.jansi.internal.Kernel32$CHAR_INFO"
},
"name": "org.fusesource.jansi.internal.Kernel32$CHAR_INFO"
},
{
"allDeclaredFields": true,
"condition": {
"typeReachable": "org.fusesource.jansi.internal.Kernel32$KEY_EVENT_RECORD"
},
"name": "org.fusesource.jansi.internal.Kernel32$KEY_EVENT_RECORD"
},
{
"allDeclaredFields": true,
"condition": {
"typeReachable": "org.fusesource.jansi.internal.Kernel32$MOUSE_EVENT_RECORD"
},
"name": "org.fusesource.jansi.internal.Kernel32$MOUSE_EVENT_RECORD"
},
{
"allDeclaredFields": true,
"condition": {
"typeReachable": "org.fusesource.jansi.internal.Kernel32$WINDOW_BUFFER_SIZE_RECORD"
},
"name": "org.fusesource.jansi.internal.Kernel32$WINDOW_BUFFER_SIZE_RECORD"
},
{
"allDeclaredFields": true,
"condition": {
"typeReachable": "org.fusesource.jansi.internal.Kernel32$FOCUS_EVENT_RECORD"
},
"name": "org.fusesource.jansi.internal.Kernel32$FOCUS_EVENT_RECORD"
},
{
"allDeclaredFields": true,
"condition": {
"typeReachable": "org.fusesource.jansi.internal.Kernel32$MENU_EVENT_RECORD"
},
"name": "org.fusesource.jansi.internal.Kernel32$MENU_EVENT_RECORD"
},
{
"allDeclaredFields": true,
"condition": {
"typeReachable": "org.fusesource.jansi.internal.Kernel32$INPUT_RECORD"
},
"name": "org.fusesource.jansi.internal.Kernel32$INPUT_RECORD"
}
]
@@ -1,10 +0,0 @@
[
{
"condition": {
"typeReachable": "org.jline.utils.Signals"
},
"interfaces": [
"sun.misc.SignalHandler"
]
}
]
@@ -0,0 +1,380 @@
{
"reflection": [
{
"condition": {
"typeReached": "org.jline.terminal.impl.jansi.JansiNativePty"
},
"type": "java.io.FileDescriptor"
},
{
"condition": {
"typeReached": "org.jline.terminal.TerminalBuilder"
},
"type": "java.lang.ProcessHandle",
"methods": [
{
"name": "current",
"parameterTypes": []
},
{
"name": "info",
"parameterTypes": []
},
{
"name": "parent",
"parameterTypes": []
}
]
},
{
"condition": {
"typeReached": "org.jline.terminal.TerminalBuilder"
},
"type": "java.lang.ProcessHandle$Info",
"methods": [
{
"name": "command",
"parameterTypes": []
}
]
},
{
"condition": {
"typeReached": "org.jline.terminal.impl.jansi.JansiNativePty"
},
"type": "org.fusesource.jansi.internal.CLibrary",
"jniAccessible": true,
"fields": [
{
"name": "HAVE_ISATTY"
},
{
"name": "HAVE_TTYNAME"
},
{
"name": "TCSADRAIN"
},
{
"name": "TCSAFLUSH"
},
{
"name": "TCSANOW"
},
{
"name": "TIOCGETD"
},
{
"name": "TIOCGWINSZ"
},
{
"name": "TIOCSETD"
},
{
"name": "TIOCSWINSZ"
}
]
},
{
"condition": {
"typeReached": "org.fusesource.jansi.internal.CLibrary$Termios"
},
"type": "org.fusesource.jansi.internal.CLibrary$Termios",
"allDeclaredFields": true,
"jniAccessible": true
},
{
"condition": {
"typeReached": "org.fusesource.jansi.internal.CLibrary$WinSize"
},
"type": "org.fusesource.jansi.internal.CLibrary$WinSize",
"allDeclaredFields": true,
"jniAccessible": true
},
{
"condition": {
"typeReached": "org.fusesource.jansi.internal.Kernel32"
},
"type": "org.fusesource.jansi.internal.Kernel32",
"allDeclaredFields": true,
"jniAccessible": true
},
{
"condition": {
"typeReached": "org.fusesource.jansi.internal.Kernel32$CHAR_INFO"
},
"type": "org.fusesource.jansi.internal.Kernel32$CHAR_INFO",
"allDeclaredFields": true,
"jniAccessible": true
},
{
"condition": {
"typeReached": "org.fusesource.jansi.internal.Kernel32$CONSOLE_SCREEN_BUFFER_INFO"
},
"type": "org.fusesource.jansi.internal.Kernel32$CONSOLE_SCREEN_BUFFER_INFO",
"allDeclaredFields": true,
"jniAccessible": true
},
{
"condition": {
"typeReached": "org.fusesource.jansi.internal.Kernel32$COORD"
},
"type": "org.fusesource.jansi.internal.Kernel32$COORD",
"allDeclaredFields": true,
"jniAccessible": true
},
{
"condition": {
"typeReached": "org.fusesource.jansi.internal.Kernel32$FOCUS_EVENT_RECORD"
},
"type": "org.fusesource.jansi.internal.Kernel32$FOCUS_EVENT_RECORD",
"allDeclaredFields": true,
"jniAccessible": true
},
{
"condition": {
"typeReached": "org.fusesource.jansi.internal.Kernel32$INPUT_RECORD"
},
"type": "org.fusesource.jansi.internal.Kernel32$INPUT_RECORD",
"allDeclaredFields": true,
"jniAccessible": true
},
{
"condition": {
"typeReached": "org.fusesource.jansi.internal.Kernel32$KEY_EVENT_RECORD"
},
"type": "org.fusesource.jansi.internal.Kernel32$KEY_EVENT_RECORD",
"allDeclaredFields": true,
"jniAccessible": true
},
{
"condition": {
"typeReached": "org.fusesource.jansi.internal.Kernel32$MENU_EVENT_RECORD"
},
"type": "org.fusesource.jansi.internal.Kernel32$MENU_EVENT_RECORD",
"allDeclaredFields": true,
"jniAccessible": true
},
{
"condition": {
"typeReached": "org.fusesource.jansi.internal.Kernel32$MOUSE_EVENT_RECORD"
},
"type": "org.fusesource.jansi.internal.Kernel32$MOUSE_EVENT_RECORD",
"allDeclaredFields": true,
"jniAccessible": true
},
{
"condition": {
"typeReached": "org.fusesource.jansi.internal.Kernel32$SMALL_RECT"
},
"type": "org.fusesource.jansi.internal.Kernel32$SMALL_RECT",
"allDeclaredFields": true,
"jniAccessible": true
},
{
"condition": {
"typeReached": "org.fusesource.jansi.internal.Kernel32$WINDOW_BUFFER_SIZE_RECORD"
},
"type": "org.fusesource.jansi.internal.Kernel32$WINDOW_BUFFER_SIZE_RECORD",
"allDeclaredFields": true,
"jniAccessible": true
},
{
"condition": {
"typeReached": "org.jline.builtins.Styles"
},
"type": "org.jline.console.SystemRegistry",
"methods": [
{
"name": "get",
"parameterTypes": []
}
]
},
{
"condition": {
"typeReached": "org.jline.utils.Signals"
},
"type": "sun.misc.Signal",
"methods": [
{
"name": "<init>",
"parameterTypes": [
"java.lang.String"
]
},
{
"name": "handle",
"parameterTypes": [
"sun.misc.Signal",
"sun.misc.SignalHandler"
]
}
]
},
{
"condition": {
"typeReached": "org.jline.terminal.TerminalBuilder"
},
"type": "sun.misc.SignalHandler",
"allDeclaredMethods": true,
"allPublicMethods": true,
"allDeclaredConstructors": true,
"allPublicConstructors": true
},
{
"condition": {
"typeReached": "org.jline.utils.Signals"
},
"type": "sun.misc.SignalHandler",
"fields": [
{
"name": "SIG_DFL"
}
]
},
{
"condition": {
"typeReached": "org.jline.utils.Signals"
},
"type": {
"proxy": [
"sun.misc.SignalHandler"
]
}
}
],
"resources": [
{
"condition": {
"typeReached": "org.jline.terminal.impl.jansi.JansiNativePty"
},
"glob": "META-INF/native/windows64/jansi.dll"
},
{
"condition": {
"typeReached": "org.jline.terminal.TerminalBuilder"
},
"glob": "META-INF/services/org.jline.terminal.spi.JansiSupport"
},
{
"condition": {
"typeReached": "org.jline.terminal.TerminalBuilder"
},
"glob": "META-INF/services/org.jline.terminal.spi.JnaSupport"
},
{
"condition": {
"typeReached": "org.jline.terminal.impl.jansi.JansiNativePty"
},
"glob": "org/fusesource/jansi/internal/native/Linux/x86_64/libjansi.so"
},
{
"condition": {
"typeReached": "org.jline.terminal.impl.jansi.JansiNativePty"
},
"glob": "org/fusesource/jansi/jansi.properties"
},
{
"condition": {
"typeReached": "org.jline.terminal.impl.jansi.JansiSupportImpl"
},
"glob": "org/fusesource/jansi/jansi.properties"
},
{
"condition": {
"typeReached": "org.jline.utils.InfoCmp"
},
"glob": "org/jline/utils/ansi.caps"
},
{
"condition": {
"typeReached": "org.jline.utils.InfoCmp"
},
"glob": "org/jline/utils/capabilities.txt"
},
{
"condition": {
"typeReached": "org.jline.utils.Colors"
},
"glob": "org/jline/utils/colors.txt"
},
{
"condition": {
"typeReached": "org.jline.terminal.impl.DumbTerminal"
},
"glob": "org/jline/utils/dumb-color.caps"
},
{
"condition": {
"typeReached": "org.jline.terminal.impl.DumbTerminal"
},
"glob": "org/jline/utils/dumb.caps"
},
{
"condition": {
"typeReached": "org.jline.utils.InfoCmp"
},
"glob": "org/jline/utils/rxvt-basic.caps"
},
{
"condition": {
"typeReached": "org.jline.utils.InfoCmp"
},
"glob": "org/jline/utils/rxvt-unicode-256color.caps"
},
{
"condition": {
"typeReached": "org.jline.utils.InfoCmp"
},
"glob": "org/jline/utils/rxvt-unicode.caps"
},
{
"condition": {
"typeReached": "org.jline.utils.InfoCmp"
},
"glob": "org/jline/utils/rxvt.caps"
},
{
"condition": {
"typeReached": "org.jline.utils.InfoCmp"
},
"glob": "org/jline/utils/screen-256color.caps"
},
{
"condition": {
"typeReached": "org.jline.utils.InfoCmp"
},
"glob": "org/jline/utils/screen.caps"
},
{
"condition": {
"typeReached": "org.jline.terminal.impl.AbstractWindowsTerminal"
},
"glob": "org/jline/utils/windows-256color.caps"
},
{
"condition": {
"typeReached": "org.jline.terminal.impl.AbstractWindowsTerminal"
},
"glob": "org/jline/utils/windows-conemu.caps"
},
{
"condition": {
"typeReached": "org.jline.terminal.impl.AbstractWindowsTerminal"
},
"glob": "org/jline/utils/windows.caps"
},
{
"condition": {
"typeReached": "org.jline.utils.InfoCmp"
},
"glob": "org/jline/utils/xterm-256color.caps"
},
{
"condition": {
"typeReached": "org.jline.utils.InfoCmp"
},
"glob": "org/jline/utils/xterm.caps"
}
]
}
@@ -1,104 +0,0 @@
[
{
"condition": {
"typeReachable": "org.jline.terminal.impl.jansi.JansiNativePty"
},
"name": "java.io.FileDescriptor",
"queriedMethods": [
{
"name": "<init>",
"parameterTypes": [
"int"
]
}
]
},
{
"condition": {
"typeReachable": "org.jline.terminal.TerminalBuilder"
},
"methods": [
{
"name": "current",
"parameterTypes": []
},
{
"name": "info",
"parameterTypes": []
},
{
"name": "parent",
"parameterTypes": []
}
],
"name": "java.lang.ProcessHandle"
},
{
"condition": {
"typeReachable": "org.jline.terminal.TerminalBuilder"
},
"methods": [
{
"name": "command",
"parameterTypes": []
}
],
"name": "java.lang.ProcessHandle$Info"
},
{
"condition": {
"typeReachable": "org.jline.builtins.Styles"
},
"methods": [
{
"name": "get",
"parameterTypes": []
}
],
"name": "org.jline.console.SystemRegistry"
},
{
"condition": {
"typeReachable": "org.jline.utils.Signals"
},
"methods": [
{
"name": "<init>",
"parameterTypes": [
"java.lang.String"
]
},
{
"name": "handle",
"parameterTypes": [
"sun.misc.Signal",
"sun.misc.SignalHandler"
]
}
],
"name": "sun.misc.Signal"
},
{
"condition": {
"typeReachable": "org.jline.utils.Signals"
},
"fields": [
{
"name": "SIG_DFL"
}
],
"name": "sun.misc.SignalHandler"
},
{
"allDeclaredClasses": true,
"allDeclaredConstructors": true,
"allDeclaredMethods": true,
"allPublicClasses": true,
"allPublicConstructors": true,
"allPublicMethods": true,
"condition": {
"typeReachable": "org.jline.terminal.TerminalBuilder"
},
"name": "sun.misc.SignalHandler"
}
]
@@ -1,139 +0,0 @@
{
"bundles": [],
"resources": {
"includes": [
{
"condition": {
"typeReachable": "org.jline.terminal.TerminalBuilder"
},
"pattern": "\\QMETA-INF/services/org.jline.terminal.spi.JansiSupport\\E"
},
{
"condition": {
"typeReachable": "org.jline.terminal.TerminalBuilder"
},
"pattern": "\\QMETA-INF/services/org.jline.terminal.spi.JnaSupport\\E"
},
{
"condition": {
"typeReachable": "org.jline.terminal.impl.jansi.JansiNativePty"
},
"pattern": "\\Qorg/fusesource/jansi/internal/native/Linux/x86_64/libjansi.so\\E"
},
{
"condition": {
"typeReachable": "org.jline.terminal.impl.jansi.JansiNativePty"
},
"pattern": "\\QMETA-INF/native/windows64/jansi.dll\\E"
},
{
"condition": {
"typeReachable": "org.jline.terminal.impl.jansi.JansiNativePty"
},
"pattern": "\\Qorg/fusesource/jansi/jansi.properties\\E"
},
{
"condition": {
"typeReachable": "org.jline.terminal.impl.jansi.JansiSupportImpl"
},
"pattern": "\\Qorg/fusesource/jansi/jansi.properties\\E"
},
{
"condition": {
"typeReachable": "org.jline.utils.InfoCmp"
},
"pattern": "\\Qorg/jline/utils/capabilities.txt\\E"
},
{
"condition": {
"typeReachable": "org.jline.utils.Colors"
},
"pattern": "\\Qorg/jline/utils/colors.txt\\E"
},
{
"condition": {
"typeReachable": "org.jline.utils.InfoCmp"
},
"pattern": "\\Qorg/jline/utils/ansi.caps\\E"
},
{
"condition": {
"typeReachable": "org.jline.terminal.impl.DumbTerminal"
},
"pattern": "\\Qorg/jline/utils/dumb.caps\\E"
},
{
"condition": {
"typeReachable": "org.jline.terminal.impl.DumbTerminal"
},
"pattern": "\\Qorg/jline/utils/dumb-color.caps\\E"
},
{
"condition": {
"typeReachable": "org.jline.utils.InfoCmp"
},
"pattern": "\\Qorg/jline/utils/rxvt.caps\\E"
},
{
"condition": {
"typeReachable": "org.jline.utils.InfoCmp"
},
"pattern": "\\Qorg/jline/utils/rxvt-basic.caps\\E"
},
{
"condition": {
"typeReachable": "org.jline.utils.InfoCmp"
},
"pattern": "\\Qorg/jline/utils/rxvt-unicode.caps\\E"
},
{
"condition": {
"typeReachable": "org.jline.utils.InfoCmp"
},
"pattern": "\\Qorg/jline/utils/rxvt-unicode-256color.caps\\E"
},
{
"condition": {
"typeReachable": "org.jline.utils.InfoCmp"
},
"pattern": "\\Qorg/jline/utils/screen.caps\\E"
},
{
"condition": {
"typeReachable": "org.jline.utils.InfoCmp"
},
"pattern": "\\Qorg/jline/utils/screen-256color.caps\\E"
},
{
"condition": {
"typeReachable": "org.jline.terminal.impl.AbstractWindowsTerminal"
},
"pattern": "\\Qorg/jline/utils/windows.caps\\E"
},
{
"condition": {
"typeReachable": "org.jline.terminal.impl.AbstractWindowsTerminal"
},
"pattern": "\\Qorg/jline/utils/windows-256color.caps\\E"
},
{
"condition": {
"typeReachable": "org.jline.terminal.impl.AbstractWindowsTerminal"
},
"pattern": "\\Qorg/jline/utils/windows-conemu.caps\\E"
},
{
"condition": {
"typeReachable": "org.jline.utils.InfoCmp"
},
"pattern": "\\Qorg/jline/utils/xterm.caps\\E"
},
{
"condition": {
"typeReachable": "org.jline.utils.InfoCmp"
},
"pattern": "\\Qorg/jline/utils/xterm-256color.caps\\E"
}
]
}
}
@@ -1,5 +1,5 @@
{
"$id": "https://raw.githubusercontent.com/oracle/graalvm-reachability-metadata/master/metadata/schemas/metadata-library-index-schema-v1.0.0.json",
"$id": "https://raw.githubusercontent.com/oracle/graalvm-reachability-metadata/master/metadata/schemas/metadata-library-index-schema-v2.0.0.json",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"description": "Schema for metadata/<groupId>/<artifactId>/index.json. Each entry describes a metadata bundle for a range of library versions.",
"type": "array",
@@ -8,15 +8,11 @@
"type": "object",
"additionalProperties": false,
"required": [
"module",
"allowed-packages",
"metadata-version",
"tested-versions"
],
"properties": {
"module": {
"$ref": "#/$defs/moduleCoordinate",
"description": "Maven coordinates in the form '<groupId>:<artifactId>'."
},
"metadata-version": {
"type": "string",
"minLength": 1,
@@ -37,6 +33,26 @@
"minLength": 1,
"description": "Overrides 'metadata-version' for use in test directories. This allows one metadata entry to share tests defined for a different version's metadata directory."
},
"source-code-url": {
"type": "string",
"minLength": 1,
"description": "Optional URL pointing to the metadata source code for this entry."
},
"repository-url": {
"type": "string",
"minLength": 1,
"description": "Optional URL pointing to the canonical project repository for this entry."
},
"documentation-url": {
"type": "string",
"minLength": 1,
"description": "Optional URL pointing to the project documentation for this entry."
},
"test-code-url": {
"type": "string",
"minLength": 1,
"description": "Optional URL pointing to the test source code for this entry."
},
"latest": {
"type": "boolean",
"description": "Marks this entry as the latest/default metadata for currently supported versions."
@@ -49,6 +65,16 @@
"type": "boolean",
"description": "When true, expresses the intent to exclude outdated built-in metadata shipped with Native Image for the matched versions."
},
"allowed-packages": {
"type": "array",
"description": "Packages expected to contain metadata entries for this library. Used by CI checks.",
"minItems": 1,
"uniqueItems": true,
"items": {
"type": "string",
"minLength": 1
}
},
"skipped-versions": {
"type": "array",
"description": "Versions explicitly excluded from support, each with a reason.",
@@ -68,6 +94,15 @@
}
}
}
},
"requires": {
"type": "array",
"description": "List of dependent modules (group:artifact) whose metadata is required at runtime.",
"minItems": 1,
"uniqueItems": true,
"items": {
"$ref": "#/$defs/moduleCoordinate"
}
}
}
},
@@ -81,22 +116,26 @@
[
{
"metadata-version": "0.0.1",
"module": "org.example:library",
"tested-versions": [ "0.0.1", "0.0.2" ],
"default-for": "0\\.0\\..*",
"test-version": "0.0.1"
"test-version": "0.0.1",
"source-code-url": "https://github.com/example/project/tree/main/metadata/org.example/library/0.0.1",
"repository-url": "https://github.com/example/project",
"test-code-url": "https://github.com/example/project/tree/main/tests/src/org.example/library/0.0.1",
"documentation-url": "https://github.com/example/project/tree/main/README.md",
"allowed-packages": [ "org.example.library" ]
},
{
"latest": true,
"metadata-version": "1.0.0",
"module": "org.example:library",
"tested-versions": [ "1.0.0", "1.1.0" , "1.2.0"]
"tested-versions": [ "1.0.0", "1.1.0" , "1.2.0"],
"allowed-packages": [ "org.example.library" ]
},
{
"metadata-version": "1.19.0",
"module": "io.opentelemetry:opentelemetry-sdk-trace",
"tested-versions": [ "1.19.0" ],
"override": true,
"allowed-packages": [ "io.opentelemetry" ],
"skipped-versions": [
{ "version": "1.34.0", "reason": "Dependency io.opentelemetry:opentelemetry-api:1.34.0 provides reflect-config.json which does not parse." }
]
@@ -1,67 +0,0 @@
{
"$id": "https://raw.githubusercontent.com/oracle/graalvm-reachability-metadata/master/metadata/schemas/metadata-root-index-schema-v1.0.0.json",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"description": "Schema for metadata/index.json. This file lists modules known to the repository and optionally the directory where their metadata is stored, the allowed package prefixes for metadata, and inter-module requirements. See docs/CONTRIBUTING.md (Metadata structure).",
"type": "array",
"items": {
"type": "object",
"additionalProperties": false,
"required": ["module"],
"properties": {
"module": {
"$ref": "#/$defs/moduleCoordinate",
"description": "Maven coordinates for the module in the form '<groupId>:<artifactId>'."
},
"directory": {
"type": "string",
"minLength": 1,
"pattern": "^[^\\s].*$",
"description": "Repository-relative path under 'metadata/' containing this module's metadata (e.g. 'org.example/library'). If omitted, the entry may reference requirements only."
},
"allowed-packages": {
"type": "array",
"description": "List of package (or fully-qualified name) prefixes considered valid sources of metadata entries for this module. Used to filter-in relevant JSON entries.",
"minItems": 1,
"uniqueItems": true,
"items": {
"type": "string",
"minLength": 1
}
},
"requires": {
"type": "array",
"description": "Optional list of module coordinates this module depends on. Each item is '<groupId>:<artifactId>'.",
"minItems": 1,
"uniqueItems": true,
"items": {
"$ref": "#/$defs/moduleCoordinate"
}
}
}
},
"$defs": {
"moduleCoordinate": {
"type": "string",
"pattern": "^[^:]+:[^:]+$"
}
},
"examples": [
[
{
"directory": "org.example/library",
"module": "org.example:library"
},
{
"allowed-packages": ["org.package.name"],
"module": "org.example:dependant-library",
"requires": ["org.example:library"]
},
{
"allowed-packages" : [ "org.hibernate", "jakarta" ],
"directory" : "org.hibernate.orm/hibernate-envers",
"module" : "org.hibernate.orm:hibernate-envers",
"requires" : [ "org.hibernate.orm:hibernate-core" ]
}
]
]
}
@@ -0,0 +1,458 @@
{
"$schema": "https://json-schema.org/draft/2019-09/schema",
"$id": "https://github.com/oracle/graal/blob/master/docs/reference-manual/native-image/assets/reachability-metadata-schema-v1.2.0.json",
"title": "JSON schema for the reachability metadata used by GraalVM Native Image",
"version": "1.2.0",
"type": "object",
"default": {},
"properties": {
"comment": {
"title": "Comment(s) applying to the whole file (e.g., generation date, author, etc.)",
"oneOf": [
{
"type": "string"
},
{
"type": "array",
"items": {
"type": "string"
}
}
],
"default": ""
},
"reflection": {
"title": "Metadata to ensure elements are accessible via reflection",
"type": "array",
"default": [],
"items": {
"title": "Elements that should be registered for reflection for a specified type",
"type": "object",
"required": ["type"],
"properties": {
"reason": {
"$ref": "#/$defs/reason"
},
"condition": {
"$ref": "#/$defs/condition"
},
"type": {
"title": "Type descriptor of the class that should be registered for reflection",
"$ref": "#/$defs/type"
},
"methods": {
"title": "List of methods that should be registered for the type declared in <type>",
"type": "array",
"default": [],
"items": {
"title": "Method descriptor of the method that should be registered for reflection",
"$ref": "#/$defs/method"
}
},
"fields": {
"title": "List of class fields that can be read or written to for the type declared in <type>",
"type": "array",
"default": [],
"items": {
"title": "Field descriptor of the field that should be registered for reflection",
"type": "object",
"properties": {
"name": {
"title": "Name of the field that should be registered for reflection",
"type": "string",
"pattern": "^[^.;\\[/]+$"
}
},
"required": [
"name"
],
"additionalProperties": false
}
},
"allDeclaredMethods": {
"title": "Register all declared methods from the type for reflective invocation",
"type": "boolean",
"default": false
},
"allDeclaredFields": {
"title": "Register all declared fields from the type for reflective access",
"type": "boolean",
"default": false
},
"allDeclaredConstructors": {
"title": "Register all declared constructors from the type for reflective invocation",
"type": "boolean",
"default": false
},
"allPublicMethods": {
"title": "Register all public methods from the type for reflective invocation",
"type": "boolean",
"default": false
},
"allPublicFields": {
"title": "Register all public fields from the type for reflective access",
"type": "boolean",
"default": false
},
"allPublicConstructors": {
"title": "Register all public constructors from the type for reflective invocation",
"type": "boolean",
"default": false
},
"unsafeAllocated": {
"title": "Allow objects of this class to be instantiated with a call to jdk.internal.misc.Unsafe#allocateInstance or JNI's AllocObject",
"type": "boolean",
"default": false
},
"serializable": {
"title": "Allow objects of this class to be serialized and deserialized",
"type": "boolean",
"default": false
},
"jniAccessible": {
"title": "Register the type, including all registered fields and methods, for runtime JNI access",
"type": "boolean",
"default": false
}
},
"additionalProperties": false
}
},
"resources": {
"title": "Metadata to ensure resources are accessible",
"type": "array",
"default": [],
"items": {
"oneOf": [
{
"title": "Resource that should be accessible",
"type": "object",
"properties": {
"reason": {
"$ref": "#/$defs/reason"
},
"condition": {
"$ref": "#/$defs/condition"
},
"module": {
"title": "Module containing the resource",
"type": "string",
"default": ""
},
"glob": {
"title": "Resource name or pattern matching multiple resources (accepts * and ** wildcards)",
"type": "string"
}
},
"required": [
"glob"
],
"additionalProperties": false
},
{
"title": "Resource bundle that should be available",
"type": "object",
"properties": {
"reason": {
"$ref": "#/$defs/reason"
},
"condition": {
"$ref": "#/$defs/condition"
},
"module": {
"title": "Module containing the resource bundle",
"type": "string",
"default": ""
},
"bundle": {
"title": "Resource bundle name",
"type": "string"
}
},
"required": [
"bundle"
],
"additionalProperties": false
}
]
}
},
"foreign": {
"properties": {
"downcalls": {
"default": [],
"items": {
"properties": {
"reason": {
"$ref": "#/$defs/reason"
},
"condition": {
"$ref": "#/$defs/condition"
},
"returnType": {
"type": "string",
"title": "Memory layout definition (allows canonical layouts; see `java.lang.foreign.Linker`)"
},
"parameterTypes": {
"default": [],
"items": {
"type": "string",
"title": "Memory layout definition (allows canonical layouts; see `java.lang.foreign.Linker`)"
},
"type": "array",
"title": "List of the function descriptor's parameter types"
},
"options": {
"type": "object",
"title": "Linker options (see `java.lang.foreign.Linker.Option`)",
"properties": {
"captureCallState": {
"type": "boolean",
"title": "Specifies whether a call state should be captured. The specific states to capture are determined at run time. See also: `java.lang.foreign.Linker.Option.captureCallState`"
},
"critical": {
"type": "object",
"title": "See `java.lang.foreign.Linker.Option.critical`",
"properties": {
"allowHeapAccess": {
"type": "boolean"
}
},
"additionalProperties": false
},
"firstVariadicArg": {
"type": "integer",
"title": "See `java.lang.foreign.Linker.Option.firstVariadicArg`"
}
},
"additionalProperties": false
}
},
"additionalProperties": false,
"required": ["returnType", "parameterTypes"],
"type": "object",
"title": "Function descriptor to be registered for a downcall"
},
"type": "array",
"title": "List of function descriptors that should be registered for downcalls"
},
"upcalls": {
"default": [],
"items": {
"properties": {
"reason": {
"$ref": "#/$defs/reason"
},
"condition": {
"$ref": "#/$defs/condition"
},
"returnType": {
"type": "string",
"title": "Memory layout definition (allows canonical layouts; see `java.lang.foreign.Linker`)"
},
"parameterTypes": {
"default": [],
"items": {
"type": "string",
"title": "Memory layout definition (allows canonical layouts; see `java.lang.foreign.Linker`)"
},
"type": "array",
"title": "List of the function descriptor's parameter types"
},
"options": {
"type": "object",
"title": "Linker options (see `java.lang.foreign.Linker.Option`)",
"description": "Currently, no linker options are allowed for upcalls. This may change in the future.",
"properties": { },
"additionalProperties": false
}
},
"additionalProperties": false,
"required": ["returnType", "parameterTypes"],
"type": "object",
"title": "Function descriptor to be registered for an upcall"
},
"type": "array",
"title": "List of function descriptors that should be registered for upcalls"
},
"directUpcalls": {
"default": [],
"items": {
"properties": {
"reason": {
"$ref": "#/$defs/reason"
},
"condition": {
"$ref": "#/$defs/condition"
},
"class": {
"$ref": "#/$defs/className",
"title": "Fully-qualified class name (e.g., `org.package.OuterClass$InnerClass`)"
},
"method": {
"type": "string",
"title": "Method name"
},
"returnType": {
"type": "string",
"title": "Memory layout definition (allows canonical layouts; see `java.lang.foreign.Linker`)"
},
"parameterTypes": {
"default": [],
"items": {
"type": "string",
"title": "Memory layout definition (allows canonical layouts; see `java.lang.foreign.Linker`)"
},
"type": "array",
"title": "List of the function descriptor's parameter types"
},
"options": {
"type": "object",
"title": "Linker options (see `java.lang.foreign.Linker.Option`)",
"description": "Currently, no linker options are allowed for direct upcalls. This may change in the future.",
"properties": { },
"additionalProperties": false
}
},
"additionalProperties": false,
"required": ["class", "method"],
"type": "object",
"title": "Java method and function descriptor to be registered for a direct upcall"
},
"type": "array",
"title": "List of Java methods and function descriptors that should be registered for direct upcalls"
}
},
"type": "object",
"additionalProperties": false,
"title": "JSON schema for the FFM API configuration used by GraalVM Native Image",
"description": "For a description and examples of writing an FFM API configuration, see: https://github.com/oracle/graal/blob/master/docs/reference-manual/native-image/FFM-API.md"
}
},
"required": [],
"additionalProperties": false,
"$defs": {
"className": {
"type": "string",
"pattern": "^[^.;\\[/]+(\\.[^.;\\[/]+)*$"
},
"typeName": {
"type": "string",
"pattern": "^[^.;\\[/]+(\\.[^.;\\[/]+)*(\\[])*$"
},
"reason": {
"title": "Reason(s) for including this element (e.g., needed for establishing connections, or needed by method X#Y for task Z)",
"oneOf": [
{
"type": "string"
},
{
"type": "array",
"items": {
"type": "string"
}
}
],
"default": ""
},
"condition": {
"title": "Condition used to determine if the element will be accessible at run time",
"type": "object",
"properties": {
"typeReached": {
"title": "Type descriptor of a class that must be reached in order to allow access to the element",
"$ref": "#/$defs/type"
}
},
"required": [
"typeReached"
],
"additionalProperties": false
},
"type": {
"title": "Type descriptors used by GraalVM Native Image metadata files",
"oneOf": [
{
"$ref": "#/$defs/typeName"
},
{
"type": "object",
"properties": {
"proxy": {
"title": "A list of interfaces defining the proxy class",
"type": "array",
"items": {
"title": "Fully-qualified name of the interface defining the proxy class",
"$ref": "#/$defs/className"
}
},
"lambda": {
"title": "Lambda class descriptor",
"type": "object",
"properties": {
"declaringClass": {
"title": "The class in which the lambda class is defined",
"$ref": "#/$defs/className"
},
"declaringMethod": {
"title": "The method in which the lambda class is defined",
"$ref": "#/$defs/method"
},
"interfaces": {
"title": "Non-empty list of interfaces implemented by the lambda class",
"type": "array",
"items": {
"title": "Fully-qualified name of the interface implemented by the lambda class",
"$ref": "#/$defs/className"
},
"minItems": 1
}
},
"required": [
"declaringClass",
"interfaces"
],
"additionalProperties": false
}
},
"oneOf": [
{
"required": [
"proxy"
]
},
{
"required": [
"lambda"
]
}
],
"additionalProperties": false
}
]
},
"method": {
"title": "Method descriptors used by GraalVM Native Image metadata files",
"type": "object",
"properties": {
"name": {
"title": "Method name that should be registered for this class",
"type": "string",
"pattern": "^[^.;\\[/]+$"
},
"parameterTypes": {
"items": {
"title": "List of the method's parameter types",
"$ref": "#/$defs/typeName"
},
"type": "array"
}
},
"required": [
"name", "parameterTypes"
],
"additionalProperties": false
}
}
}
+1 -1
View File
@@ -18,7 +18,7 @@ junitJupiterVersion=6.0.3
kotlinVersion=2.3.20
mavenVersion=3.9.13
mockitoVersion=5.23.0
nativeBuildToolsVersion=0.11.5
nativeBuildToolsVersion=1.0.0
nullabilityPluginVersion=0.0.11
snakeYamlVersion=2.6
springFrameworkVersion=7.0.6