diff --git a/docs/reference-manual/native-image/ReachabilityMetadata.md b/docs/reference-manual/native-image/ReachabilityMetadata.md index db165b0411ea..203e63570cf5 100644 --- a/docs/reference-manual/native-image/ReachabilityMetadata.md +++ b/docs/reference-manual/native-image/ReachabilityMetadata.md @@ -147,7 +147,7 @@ Integer.class.getMethod("parseInt", params2); ### Specifying Reflection Metadata in JSON Reflection metadata should be specified in a _reflect-config.json_ file and conform to the JSON schema defined in -[reflect-config-schema-v1.1.0.json](https://github.com/oracle/graal/blob/master/docs/reference-manual/native-image/assets/reflect-config-schema-v1.1.0.json). +[reflect-config-schema-v1.2.0.json](https://github.com/oracle/graal/blob/master/docs/reference-manual/native-image/assets/reflect-config-schema-v1.2.0.json). The schema also includes further details and explanations how this configuration works. Here is the example of the reflect-config.json: ```json [ @@ -181,7 +181,10 @@ The schema also includes further details and explanations how this configuration "queryAllDeclaredConstructors": true, "queryAllPublicMethods": true, "queryAllPublicConstructors": true, - "unsafeAllocated": true + "unsafeAllocated": true, + "reasons": [ + "Created for Demo purposes" + ] } ] ``` @@ -209,7 +212,7 @@ It is not possible to specify JNI metadata in code. ### JNI Metadata in JSON JNI metadata should be specified in a _jni-config.json_ file and conform to the JSON schema defined in -[jni-config-schema-v1.1.0.json](https://github.com/oracle/graal/blob/master/docs/reference-manual/native-image/assets/jni-config-schema-v1.1.0.json). +[jni-config-schema-v1.2.0.json](https://github.com/oracle/graal/blob/master/docs/reference-manual/native-image/assets/jni-config-schema-v1.2.0.json). The schema also includes further details and explanations how this configuration works. The example of jni-config.json is the same as the example of reflect-config.json described above. @@ -240,7 +243,7 @@ class Example { ### Resource Metadata in JSON Resource metadata should be specified in a _resource-config.json_ file and conform to the JSON schema defined in -[resource-config-schema-v1.0.0.json](https://github.com/oracle/graal/blob/master/docs/reference-manual/native-image/assets/resource-config-schema-v1.0.0.json). +[resource-config-schema-v1.1.0.json](https://github.com/oracle/graal/blob/master/docs/reference-manual/native-image/assets/resource-config-schema-v1.1.0.json). The schema also includes further details and explanations how this configuration works. Here is the example of the resource-config.json: ```json { @@ -250,7 +253,10 @@ The schema also includes further details and explanations how this configuration "condition": { "typeReachable": "" }, - "pattern": ".*\\.txt" + "pattern": ".*\\.txt", + "reasons": [ + "We want all txt files" + ] } ], "excludes": [ @@ -258,7 +264,10 @@ The schema also includes further details and explanations how this configuration "condition": { "typeReachable": "" }, - "pattern": ".*\\.txt" + "pattern": ".*\\.txt", + "reasons": [ + "We want no txt files" + ] } ] }, @@ -268,7 +277,11 @@ The schema also includes further details and explanations how this configuration "typeReachable": "" }, "name": "fully.qualified.bundle.name", - "locales": ["en", "de", "sk"] + "locales": ["en", "de", "sk"], + "reasons": [ + "That's a useful bundle", + "We support English, German, and Slovak" + ] }, { "condition": { @@ -278,6 +291,9 @@ The schema also includes further details and explanations how this configuration "classNames": [ "fully.qualified.bundle.name_en", "fully.qualified.bundle.name_de" + ], + "reasons": [ + "English and German have their one additional bundles" ] } ] @@ -337,7 +353,10 @@ Here is an example of dynamic proxy metadata in reflect-config.json: "type": { "proxy": [ "IA", "IB" - ]} + ]}, + "reasons": [ + "We generate dynamic proxies for IA and IB" + ] } ] ``` @@ -381,7 +400,7 @@ Proxy classes can only be registered for serialization via the JSON files. ### Serialization Metadata in JSON Serialization metadata should be specified in a _serialization-config.json_ file and conform to the JSON schema defined in -[serialization-config-schema-v1.1.0.json](https://github.com/oracle/graal/blob/master/docs/reference-manual/native-image/assets/serialization-config-schema-v1.1.0.json). +[serialization-config-schema-v1.2.0.json](https://github.com/oracle/graal/blob/master/docs/reference-manual/native-image/assets/serialization-config-schema-v1.2.0.json). The schema also includes further details and explanations how this configuration works. Here is the example of the serialization-config.json: ```json { @@ -399,7 +418,10 @@ The schema also includes further details and explanations how this configuration }, "type": { "proxy": ["", ""] - } + }, + "reasons": [ + "Generated dynamic proxies for interfaces 1 and 2" + ] } ], "lambdaCapturingTypes": [ @@ -407,7 +429,10 @@ The schema also includes further details and explanations how this configuration "condition": { "typeReachable": "" }, - "name": "" + "name": "", + "reasons": [ + "Serialized by MyClass" + ] } ] } diff --git a/docs/reference-manual/native-image/assets/config-reasons-schema-v1.0.0.json b/docs/reference-manual/native-image/assets/config-reasons-schema-v1.0.0.json new file mode 100644 index 000000000000..8764abe7f7dd --- /dev/null +++ b/docs/reference-manual/native-image/assets/config-reasons-schema-v1.0.0.json @@ -0,0 +1,10 @@ +{ + "$schema": "https://json-schema.org/draft/2019-09/schema", + "$id": "https://github.com/oracle/graal/blob/master/docs/reference-manual/native-image/assets/config-reasons-schema-v1.0.0.json", + "type": "array", + "default": [], + "items": { + "type": "string" + }, + "title": "JSON schema for the reasons justifying a configuration" +} \ No newline at end of file diff --git a/docs/reference-manual/native-image/assets/jni-config-schema-v1.2.0.json b/docs/reference-manual/native-image/assets/jni-config-schema-v1.2.0.json new file mode 100644 index 000000000000..ad3203a83b98 --- /dev/null +++ b/docs/reference-manual/native-image/assets/jni-config-schema-v1.2.0.json @@ -0,0 +1,198 @@ +{ + "$schema": "https://json-schema.org/draft/2019-09/schema", + "$id": "https://github.com/oracle/graal/blob/master/docs/reference-manual/native-image/assets/jni-config-schema-v1.2.0.json", + "default": [], + "items": { + "properties": { + "condition": { + "$ref": "config-condition-schema-v1.0.0.json", + "title": "Condition under which the class should be registered for access through JNI" + }, + "type": { + "$ref": "config-type-schema-v1.0.0.json", + "title": "Type descriptor of the class that should be registered for access through JNI" + }, + "name": { + "deprecated": true, + "type": "string", + "title": "Name of the class that should be registered for access through JNI" + }, + "methods": { + "default": [], + "items": { + "properties": { + "name": { + "type": "string", + "title": "Method name that should be registered for this class" + }, + "parameterTypes": { + "default": [], + "items": { + "type": "string", + "title": "List of the method's parameter types" + }, + "type": "array" + } + }, + "required": [ + "name" + ], + "additionalProperties": false, + "type": "object", + "title": "List of methods from this class that are registered for access through JNI" + }, + "type": "array", + "title": "List of methods that should be registered for the class declared in " + }, + "queriedMethods": { + "deprecated": true, + "default": [], + "items": { + "properties": { + "name": { + "type": "string", + "title": "Method name that are queried for this class" + }, + "parameterTypes": { + "default": [], + "items": { + "type": "string", + "title": "List of types for the parameters of the this method" + }, + "type": "array", + "title": "List of methods to register for this class that are only looked up but not invoked." + } + }, + "required": [ + "name" + ], + "additionalProperties": false, + "type": "object" + }, + "type": "array", + "title": "List of methods that are queried for the class declared in " + }, + "fields": { + "default": [], + "items": { + "properties": { + "name": { + "type": "string", + "title": "Name of the field that should be registered for access through JNI" + } + }, + "required": [ + "name" + ], + "additionalProperties": false, + "type": "object" + }, + "type": "array", + "title": "List of fields that should be registered for the class declared in " + }, + "allDeclaredClasses": { + "deprecated": true, + "default": false, + "type": "boolean", + "title": "Register classes which would be returned by the java.lang.Class#getDeclaredClasses call" + }, + "allDeclaredMethods": { + "default": false, + "type": "boolean", + "title": "Register methods which would be returned by the java.lang.Class#getDeclaredMethods call" + }, + "allDeclaredFields": { + "default": false, + "type": "boolean", + "title": "Register fields which would be returned by the java.lang.Class#getDeclaredFields call" + }, + "allDeclaredConstructors": { + "default": false, + "type": "boolean", + "title": "Register constructors which would be returned by the java.lang.Class#getDeclaredConstructors call" + }, + "allPublicClasses": { + "deprecated": true, + "default": false, + "type": "boolean", + "title": "Register all public classes which would be returned by the java.lang.Class#getClasses call" + }, + "allPublicMethods": { + "default": false, + "type": "boolean", + "title": "Register all public methods which would be returned by the java.lang.Class#getMethods call" + }, + "allPublicFields": { + "default": false, + "type": "boolean", + "title": "Register all public fields which would be returned by the java.lang.Class#getFields call" + }, + "allPublicConstructors": { + "default": false, + "type": "boolean", + "title": "Register all public constructors which would be returned by the java.lang.Class#getConstructors call" + }, + "allRecordComponents": { + "deprecated": true, + "default": false, + "type": "boolean", + "title": "Register record components which would be returned by the java.lang.Class#getRecordComponents call" + }, + "allPermittedSubclasses": { + "deprecated": true, + "default": false, + "type": "boolean", + "title": "Register permitted subclasses which would be returned by the java.lang.Class#getPermittedSubclasses call" + }, + "allNestMembers": { + "deprecated": true, + "default": false, + "type": "boolean", + "title": "Register nest members which would be returned by the java.lang.Class#getNestMembers call" + }, + "allSigners": { + "deprecated": true, + "default": false, + "type": "boolean", + "title": "Register signers which would be returned by the java.lang.Class#getSigners call" + }, + "queryAllDeclaredMethods": { + "deprecated": true, + "default": false, + "type": "boolean", + "title": "Register methods which would be returned by the java.lang.Class#getDeclaredMethods call but only for lookup" + }, + "queryAllDeclaredConstructors": { + "deprecated": true, + "default": false, + "type": "boolean", + "title": "Register constructors which would be returned by the java.lang.Class#getDeclaredConstructors call but only for lookup" + }, + "queryAllPublicMethods": { + "deprecated": true, + "default": false, + "type": "boolean", + "title": "Register all public methods which would be returned by the java.lang.Class#getMethods call but only for lookup" + }, + "queryAllPublicConstructors": { + "deprecated": true, + "default": false, + "type": "boolean", + "title": "Register all public constructors which would be returned by the java.lang.Class#getConstructors call but only for lookup" + }, + "unsafeAllocated": { + "default": false, + "type": "boolean", + "title": "Allow objects of this class to be instantiated with a call to jdk.internal.misc.Unsafe#allocateInstance" + }, + "reasons": { + "$ref": "config-reasons-schema-v1.0.0.json", + "title": "List of reasons justifying the configuration" + } + }, + "additionalProperties": false, + "type": "object" + }, + "type": "array", + "title": "JSON schema for the JNI configuration that GraalVM Native Image uses" +} \ No newline at end of file diff --git a/docs/reference-manual/native-image/assets/proxy-config-schema-v1.1.0.json b/docs/reference-manual/native-image/assets/proxy-config-schema-v1.1.0.json new file mode 100644 index 000000000000..2687695b60bd --- /dev/null +++ b/docs/reference-manual/native-image/assets/proxy-config-schema-v1.1.0.json @@ -0,0 +1,42 @@ +{ + "$schema": "https://json-schema.org/draft/2019-09/schema", + "$id": "https://github.com/oracle/graal/blob/master/docs/reference-manual/native-image/assets/proxy-config-schema-v1.1.0.json", + "default": [], + "items": { + "properties": { + "condition": { + "properties": { + "typeReachable": { + "type": "string", + "title": "Fully qualified class name of the class that must be reachable in order to register the dynamic proxy" + } + }, + "required": [ + "typeReachable" + ], + "additionalProperties": false, + "type": "object" + }, + "interfaces": { + "default": [], + "items": { + "type": "string", + "title": "Interface that will be implemented by the dynamic proxy" + }, + "type": "array", + "title": "List of interfaces that dynamic proxy implements" + }, + "reasons": { + "$ref": "config-reasons-schema-v1.0.0.json", + "title": "List of reasons justifying the configuration" + } + }, + "required": [ + "interfaces" + ], + "additionalProperties": false, + "type": "object" + }, + "type": "array", + "title": "JSON schema for the proxy-config that GraalVM Native Image uses" +} \ No newline at end of file diff --git a/docs/reference-manual/native-image/assets/reflect-config-schema-v1.2.0.json b/docs/reference-manual/native-image/assets/reflect-config-schema-v1.2.0.json new file mode 100644 index 000000000000..d6af0c711266 --- /dev/null +++ b/docs/reference-manual/native-image/assets/reflect-config-schema-v1.2.0.json @@ -0,0 +1,187 @@ +{ + "$schema": "https://json-schema.org/draft/2019-09/schema", + "$id": "https://github.com/oracle/graal/blob/master/docs/reference-manual/native-image/assets/reflect-config-schema-v1.2.0.json", + "default": [], + "items": { + "properties": { + "condition": { + "$ref": "config-condition-schema-v1.0.0.json", + "title": "Condition under which the class should be registered for reflection" + }, + "type": { + "$ref": "config-type-schema-v1.0.0.json", + "title": "Type descriptor of the class that should be registered for reflection" + }, + "name": { + "deprecated": true, + "type": "string", + "title": "Name of the class that should be registered for reflection" + }, + "methods": { + "default": [], + "items": { + "properties": { + "name": { + "type": "string", + "title": "Method name that should be registered for this class" + }, + "parameterTypes": { + "default": [], + "items": { + "type": "string", + "title": "List of the method's parameter types" + }, + "type": "array" + } + }, + "required": [ + "name" + ], + "additionalProperties": false, + "type": "object", + "title": "List of methods from this class that are registered for reflection" + }, + "type": "array", + "title": "List of methods that should be registered for the type declared in " + }, + "queriedMethods": { + "default": [], + "items": { + "properties": { + "name": { + "type": "string", + "title": "Method name that are queried for this class" + }, + "parameterTypes": { + "default": [], + "items": { + "type": "string", + "title": "List of the method's parameter types" + }, + "type": "array", + "title": "List of methods to register for this class that are only looked up but not invoked." + } + }, + "required": [ + "name" + ], + "additionalProperties": false, + "type": "object" + }, + "type": "array", + "title": "List of methods that are queried for the type declared in " + }, + "fields": { + "default": [], + "items": { + "properties": { + "name": { + "type": "string", + "title": "Name of the field that should be registered for reflection" + } + }, + "required": [ + "name" + ], + "additionalProperties": false, + "type": "object" + }, + "type": "array", + "title": "List of class fields that can be looked up, read, or modified for the type declared in " + }, + "allDeclaredClasses": { + "default": false, + "type": "boolean", + "title": "Register classes which would be returned by the java.lang.Class#getDeclaredClasses call" + }, + "allDeclaredMethods": { + "default": false, + "type": "boolean", + "title": "Register methods which would be returned by the java.lang.Class#getDeclaredMethods call" + }, + "allDeclaredFields": { + "default": false, + "type": "boolean", + "title": "Register fields which would be returned by the java.lang.Class#getDeclaredFields call" + }, + "allDeclaredConstructors": { + "default": false, + "type": "boolean", + "title": "Register constructors which would be returned by the java.lang.Class#getDeclaredConstructors call" + }, + "allPublicClasses": { + "default": false, + "type": "boolean", + "title": "Register all public classes which would be returned by the java.lang.Class#getClasses call" + }, + "allPublicMethods": { + "default": false, + "type": "boolean", + "title": "Register all public methods which would be returned by the java.lang.Class#getMethods call" + }, + "allPublicFields": { + "default": false, + "type": "boolean", + "title": "Register all public fields which would be returned by the java.lang.Class#getFields call" + }, + "allPublicConstructors": { + "default": false, + "type": "boolean", + "title": "Register all public constructors which would be returned by the java.lang.Class#getConstructors call" + }, + "allRecordComponents": { + "default": false, + "type": "boolean", + "title": "Register record components which would be returned by the java.lang.Class#getRecordComponents call" + }, + "allPermittedSubclasses": { + "default": false, + "type": "boolean", + "title": "Register permitted subclasses which would be returned by the java.lang.Class#getPermittedSubclasses call" + }, + "allNestMembers": { + "default": false, + "type": "boolean", + "title": "Register nest members which would be returned by the java.lang.Class#getNestMembers call" + }, + "allSigners": { + "default": false, + "type": "boolean", + "title": "Register signers which would be returned by the java.lang.Class#getSigners call" + }, + "queryAllDeclaredMethods": { + "default": false, + "type": "boolean", + "title": "Register methods which would be returned by the java.lang.Class#getDeclaredMethods call but only for lookup" + }, + "queryAllDeclaredConstructors": { + "default": false, + "type": "boolean", + "title": "Register constructors which would be returned by the java.lang.Class#getDeclaredConstructors call but only for lookup" + }, + "queryAllPublicMethods": { + "default": false, + "type": "boolean", + "title": "Register all public methods which would be returned by the java.lang.Class#getMethods call but only for lookup" + }, + "queryAllPublicConstructors": { + "default": false, + "type": "boolean", + "title": "Register all public constructors which would be returned by the java.lang.Class#getConstructors call but only for lookup" + }, + "unsafeAllocated": { + "default": false, + "type": "boolean", + "title": "Allow objects of this class to be instantiated with a call to jdk.internal.misc.Unsafe#allocateInstance" + }, + "reasons": { + "$ref": "config-reasons-schema-v1.0.0.json", + "title": "List of reasons justifying the configuration" + } + }, + "additionalProperties": false, + "type": "object" + }, + "type": "array", + "title": "JSON schema for the reflection configuration that GraalVM Native Image uses" +} \ No newline at end of file diff --git a/docs/reference-manual/native-image/assets/resource-config-schema-v1.1.0.json b/docs/reference-manual/native-image/assets/resource-config-schema-v1.1.0.json new file mode 100644 index 000000000000..52701d336c16 --- /dev/null +++ b/docs/reference-manual/native-image/assets/resource-config-schema-v1.1.0.json @@ -0,0 +1,137 @@ +{ + "$schema": "https://json-schema.org/draft/2019-09/schema", + "$id": "https://github.com/oracle/graal/blob/master/docs/reference-manual/native-image/assets/resource-config-schema-v1.1.0.json", + "default": { + "resources": {}, + "bundles": [] + }, + "properties": { + "resources": { + "properties": { + "includes": { + "default": [], + "items": { + "properties": { + "condition": { + "properties": { + "typeReachable": { + "type": "string", + "title": "Fully qualified class name of the class that must be reachable in order to register resource pattern" + } + }, + "required": [ + "typeReachable" + ], + "additionalProperties": false, + "type": "object" + }, + "pattern": { + "type": "string", + "title": "Resource matching pattern" + }, + "reasons": { + "$ref": "config-reasons-schema-v1.0.0.json", + "title": "List of reasons justifying the inclusion of the resource pattern" + } + }, + "additionalProperties": false, + "type": "object" + }, + "type": "array", + "title": "List of included resource patterns" + }, + "excludes": { + "default": [], + "items": { + "properties": { + "condition": { + "properties": { + "typeReachable": { + "type": "string", + "title": "Fully qualified class name of the class that must be reachable in order to exclude resource pattern" + } + }, + "required": [ + "typeReachable" + ], + "additionalProperties": false, + "type": "object" + }, + "pattern": { + "type": "string", + "title": "Resource matching pattern" + }, + "reasons": { + "$ref": "config-reasons-schema-v1.0.0.json", + "title": "List of reasons justifying the exclusion of the resource pattern" + } + }, + "additionalProperties": false, + "type": "object" + }, + "type": "array", + "title": "List of excluded resource patterns" + } + }, + "additionalProperties": false, + "type": "object", + "title": "Set of included and excluded lists of patterns" + }, + "bundles": { + "default": [], + "items": { + "properties": { + "condition": { + "properties": { + "typeReachable": { + "type": "string", + "title": "Fully qualified class name of the class that must be reachable in order to register resource bundle" + } + }, + "required": [ + "typeReachable" + ], + "additionalProperties": false, + "type": "object" + }, + "name": { + "type": "string", + "title": "Fully qualified name of the resource bundle" + }, + "locales": { + "default": [], + "items": { + "type": "string" + }, + "type": "array", + "title": "List of locales that should be registered for this resource bundle" + }, + "classNames": { + "default": [], + "items": { + "type": "string" + }, + "type": "array", + "title": "List of fully qualified classnames of resource bundles that are directly included without performing the lookup by basename and locale." + }, + "reasons": { + "$ref": "config-reasons-schema-v1.0.0.json", + "title": "List of reasons justifying the inclusion of the bundle" + } + }, + "additionalProperties": false, + "type": "object" + }, + "type": "array", + "title": "List of resource bundles that should be registered" + } + }, + "required": [ + "bundles", + "resources" + ], + "additionalProperties": false, + "type": "object", + "title": "JSON schema for the resource-config that GraalVM Native Image uses", + "description": "Native Image will iterate over all resources and match their relative paths against the Java Regex specified in . If the path matches the Regex, the resource is included. The statement instructs Native Image to omit certain included resources that match the given " + } \ No newline at end of file diff --git a/docs/reference-manual/native-image/assets/serialization-config-schema-v1.2.0.json b/docs/reference-manual/native-image/assets/serialization-config-schema-v1.2.0.json new file mode 100644 index 000000000000..a73dda2f901d --- /dev/null +++ b/docs/reference-manual/native-image/assets/serialization-config-schema-v1.2.0.json @@ -0,0 +1,123 @@ +{ + "$schema": "https://json-schema.org/draft/2019-09/schema", + "$id": "https://github.com/oracle/graal/blob/master/docs/reference-manual/native-image/assets/serialization-config-schema-v1.2.0.json", + "default": { + "types": [], + "lambdaCapturingTypes": [], + "proxies": [] + }, + "properties": { + "types": { + "default": [], + "items": { + "properties": { + "condition": { + "$ref": "config-condition-schema-v1.0.0.json", + "title": "Condition under which the class should be registered for serialization" + }, + "name": { + "deprecated": true, + "type": "string", + "title": "Fully qualified class name of the class that should be serialized" + }, + "type": { + "$ref": "config-type-schema-v1.0.0.json", + "title": "Type descriptor of the class that should be registered for serialization" + }, + "customTargetConstructorClass": { + "type": "string", + "title": "Fully qualified class name of the class whose constructor should be used to serialize the class" + }, + "reasons": { + "$ref": "config-reasons-schema-v1.0.0.json", + "title": "List of reasons justifying the configuration" + } + }, + "additionalProperties": false, + "type": "object" + }, + "title": "Each entry in enables serializing and deserializing objects of the class given by ", + "type": "array" + }, + "lambdaCapturingTypes": { + "default": [], + "items": { + "properties": { + "condition": { + "properties": { + "typeReachable": { + "type": "string", + "title": "Fully qualified class name of the class that must be reachable in order to serialize lambda classes that are captured by the class referred in " + } + }, + "required": [ + "typeReachable" + ], + "additionalProperties": false, + "type": "object" + }, + "name": { + "type": "string", + "title": "Fully qualified class name of the class that captures lambda classes that should be either serialized or deserialized" + }, + "reasons": { + "$ref": "config-reasons-schema-v1.0.0.json", + "title": "List of reasons justifying the configuration" + } + }, + "additionalProperties": false, + "type": "object" + }, + "title": "Each entry in enables lambda serialization. All lambdas declared in the methods of the class given by can be serialized and deserialized.", + "type": "array" + }, + "proxies": { + "default": [], + "items": { + "properties": { + "condition": { + "properties": { + "typeReachable": { + "type": "string", + "title": "Fully qualified class name of the class that must be reachable in order to serialize proxy classes that implements interfaces from " + } + }, + "required": [ + "typeReachable" + ], + "additionalProperties": false, + "type": "object" + }, + "interfaces": { + "items": { + "type": "string", + "title": "Fully qualified name of an interface that is implemented by the proxy that should be serialized" + }, + "type": "array", + "title": "List of interfaces that are implemented by the proxy class that should be serialized" + }, + "reasons": { + "$ref": "config-reasons-schema-v1.0.0.json", + "title": "List of reasons justifying the configuration" + } + }, + "required": [ + "interfaces" + ], + "additionalProperties": false, + "type": "object", + "title": "Proxy that should be registered for serialization" + }, + "title": "Each entry in enables the proxy serialization by providing an interface list that a proxy implements.", + "type": "array" + } + }, + "required": [ + "types", + "lambdaCapturingTypes", + "proxies" + ], + "additionalProperties": false, + "type": "object", + "title": "JSON schema for the serialization-config that GraalVM Native Image uses" +} \ No newline at end of file