1+ {
2+ "$schema" : " https://json-schema.org/draft/2019-09/schema" ,
3+ "$id" : " https://github.com/oracle/graal/blob/master/docs/reference-manual/native-image/assets/reachability-metadata-schema-v1.0.0.json" ,
4+ "title" : " JSON schema for the reachability metadata used by GraalVM Native Image" ,
5+ "type" : " object" ,
6+ "default" : {},
7+ "properties" : {
8+ "comment" : {
9+ "title" : " A comment applying to the whole file (e.g., generation date, author, etc.)" ,
10+ "oneOf" : [
11+ {
12+ "type" : " string"
13+ },
14+ {
15+ "type" : " array" ,
16+ "items" : {
17+ "type" : " string"
18+ }
19+ }
20+ ],
21+ "default" : " "
22+ },
23+ "reflection" : {
24+ "title" : " Metadata to ensure elements are reachable through reflection" ,
25+ "$ref" : " #/$defs/reflection"
26+ },
27+ "jni" : {
28+ "title" : " Metadata to ensure elements are reachable through JNI" ,
29+ "$ref" : " #/$defs/reflection"
30+ },
31+ "serialization" : {
32+ "title" : " Metadata for types that are serialized or deserialized at run time. The types must extend 'java.io.Serializable'." ,
33+ "type" : " array" ,
34+ "default" : [],
35+ "items" : {
36+ "title" : " Enables serializing and deserializing objects of the class specified by <type>" ,
37+ "type" : " object" ,
38+ "properties" : {
39+ "reason" : {
40+ "title" : " Reason for the type's inclusion in the serialization metadata" ,
41+ "$ref" : " #/$defs/reason"
42+ },
43+ "condition" : {
44+ "title" : " Condition under which the class should be registered for serialization" ,
45+ "$ref" : " #/$defs/condition"
46+ },
47+ "type" : {
48+ "title" : " Type descriptor of the class that should be registered for serialization" ,
49+ "$ref" : " #/$defs/type"
50+ },
51+ "customTargetConstructorClass" : {
52+ "title" : " Fully qualified name of the class whose constructor should be used to serialize the class specified by <type>" ,
53+ "type" : " string"
54+ }
55+ },
56+ "required" : [
57+ " type"
58+ ],
59+ "additionalProperties" : false
60+ }
61+ },
62+ "resources" : {
63+ "title" : " Metadata to ensure resources are available" ,
64+ "type" : " array" ,
65+ "default" : [],
66+ "items" : {
67+ "title" : " Resource that should be available" ,
68+ "type" : " object" ,
69+ "properties" : {
70+ "reason" : {
71+ "title" : " Reason for the resource's inclusion in the metadata" ,
72+ "$ref" : " #/$defs/reason"
73+ },
74+ "condition" : {
75+ "title" : " Condition under which the resource should be registered for runtime access" ,
76+ "$ref" : " #/$defs/condition"
77+ },
78+ "module" : {
79+ "title" : " Module containing the resource" ,
80+ "type" : " string" ,
81+ "default" : " "
82+ },
83+ "glob" : {
84+ "title" : " Resource name or pattern matching multiple resources (accepts * and ** wildcards)" ,
85+ "type" : " string"
86+ }
87+ },
88+ "required" : [
89+ " glob"
90+ ],
91+ "additionalProperties" : false
92+ }
93+ },
94+ "bundles" : {
95+ "title" : " Metadata to ensure resource bundles are available" ,
96+ "type" : " array" ,
97+ "default" : [],
98+ "items" : {
99+ "title" : " Resource bundle that should be available" ,
100+ "type" : " object" ,
101+ "properties" : {
102+ "reason" : {
103+ "title" : " Reason for the resource bundle's inclusion in the metadata" ,
104+ "$ref" : " #/$defs/reason"
105+ },
106+ "condition" : {
107+ "title" : " Condition under which the resource bundle should be registered for runtime access" ,
108+ "$ref" : " #/$defs/condition"
109+ },
110+ "name" : {
111+ "title" : " Name of the resource bundle" ,
112+ "type" : " string"
113+ },
114+ "locales" : {
115+ "title" : " List of locales that should be registered for this resource bundle" ,
116+ "type" : " array" ,
117+ "default" : [],
118+ "items" : {
119+ "type" : " string"
120+ }
121+ }
122+ },
123+ "required" : [
124+ " name"
125+ ],
126+ "additionalProperties" : false
127+ }
128+ }
129+ },
130+ "required" : [],
131+ "additionalProperties" : false ,
132+
133+ "$defs" : {
134+ "reflection" : {
135+ "type" : " array" ,
136+ "default" : [],
137+ "items" : {
138+ "title" : " Elements that should be registered for reflection for a specified type" ,
139+ "type" : " object" ,
140+ "properties" : {
141+ "reason" : {
142+ "title" : " Reason for the element's inclusion" ,
143+ "$ref" : " #/$defs/reason"
144+ },
145+ "condition" : {
146+ "title" : " Condition under which the class should be registered for reflection" ,
147+ "$ref" : " #/$defs/condition"
148+ },
149+ "type" : {
150+ "title" : " Type descriptor of the class that should be registered for reflection" ,
151+ "$ref" : " #/$defs/type"
152+ },
153+ "methods" : {
154+ "title" : " List of methods that should be registered for the type declared in <type>" ,
155+ "type" : " array" ,
156+ "default" : [],
157+ "items" : {
158+ "title" : " Method descriptor of the method that should be registered for reflection" ,
159+ "$ref" : " #/$defs/method"
160+ }
161+ },
162+ "fields" : {
163+ "title" : " List of class fields that can be read or written to for the type declared in <type>" ,
164+ "type" : " array" ,
165+ "default" : [],
166+ "items" : {
167+ "title" : " Field descriptor of the field that should be registered for reflection" ,
168+ "$ref" : " #/$defs/field"
169+ }
170+ },
171+ "allDeclaredMethods" : {
172+ "title" : " Register all declared methods from the type for reflective invocation" ,
173+ "type" : " boolean" ,
174+ "default" : false
175+ },
176+ "allDeclaredFields" : {
177+ "title" : " Register all declared fields from the type for reflective access" ,
178+ "type" : " boolean" ,
179+ "default" : false
180+ },
181+ "allDeclaredConstructors" : {
182+ "title" : " Register all declared constructors from the type for reflective invocation" ,
183+ "type" : " boolean" ,
184+ "default" : false
185+ },
186+ "allPublicMethods" : {
187+ "title" : " Register all public methods from the type for reflective invocation" ,
188+ "type" : " boolean" ,
189+ "default" : false
190+ },
191+ "allPublicFields" : {
192+ "title" : " Register all public fields from the type for reflective access" ,
193+ "type" : " boolean" ,
194+ "default" : false
195+ },
196+ "allPublicConstructors" : {
197+ "title" : " Register all public constructors from the type for reflective invocation" ,
198+ "type" : " boolean" ,
199+ "default" : false
200+ },
201+ "unsafeAllocated" : {
202+ "title" : " Allow objects of this class to be instantiated with a call to jdk.internal.misc.Unsafe#allocateInstance or JNI's AllocObject" ,
203+ "type" : " boolean" ,
204+ "default" : false
205+ }
206+ },
207+ "additionalProperties" : false
208+ }
209+ },
210+ "jni" : {
211+ "type" : " array" ,
212+ "default" : [],
213+ "items" : {
214+ "title" : " Elements that should be registered for JNI for a specified type" ,
215+ "type" : " object" ,
216+ "properties" : {
217+ "reason" : {
218+ "title" : " Reason for the element's inclusion" ,
219+ "$ref" : " #/$defs/reason"
220+ },
221+ "condition" : {
222+ "title" : " Condition under which the class should be registered for JNI" ,
223+ "$ref" : " #/$defs/condition"
224+ },
225+ "type" : {
226+ "title" : " Type descriptor of the class that should be registered for JNI" ,
227+ "$ref" : " #/$defs/type"
228+ },
229+ "methods" : {
230+ "title" : " List of methods that should be registered for the type declared in <type>" ,
231+ "type" : " array" ,
232+ "default" : [],
233+ "items" : {
234+ "title" : " Method descriptor of the method that should be registered for JNI" ,
235+ "$ref" : " #/$defs/method"
236+ }
237+ },
238+ "fields" : {
239+ "title" : " List of class fields that can be read or written to for the type declared in <type>" ,
240+ "type" : " array" ,
241+ "default" : [],
242+ "items" : {
243+ "title" : " Field descriptor of the field that should be registered for JNI" ,
244+ "$ref" : " #/$defs/field"
245+ }
246+ },
247+ "allDeclaredMethods" : {
248+ "title" : " Register all declared methods from the type for JNI access" ,
249+ "type" : " boolean" ,
250+ "default" : false
251+ },
252+ "allDeclaredFields" : {
253+ "title" : " Register all declared fields from the type for JNI access" ,
254+ "type" : " boolean" ,
255+ "default" : false
256+ },
257+ "allDeclaredConstructors" : {
258+ "title" : " Register all declared constructors from the type for JNI access" ,
259+ "type" : " boolean" ,
260+ "default" : false
261+ },
262+ "allPublicMethods" : {
263+ "title" : " Register all public methods from the type for JNI access" ,
264+ "type" : " boolean" ,
265+ "default" : false
266+ },
267+ "allPublicFields" : {
268+ "title" : " Register all public fields from the type for JNI access" ,
269+ "type" : " boolean" ,
270+ "default" : false
271+ },
272+ "allPublicConstructors" : {
273+ "title" : " Register all public constructors from the type for JNI access" ,
274+ "type" : " boolean" ,
275+ "default" : false
276+ }
277+ },
278+ "additionalProperties" : false
279+ }
280+ },
281+ "reason" : {
282+ "type" : " string" ,
283+ "default" : []
284+ },
285+ "condition" : {
286+ "title" : " Condition used by GraalVM Native Image metadata files" ,
287+ "type" : " object" ,
288+ "properties" : {
289+ "typeReached" : {
290+ "title" : " Type descriptor of a class that must be reached in order to enable the corresponding registration" ,
291+ "$ref" : " #/$defs/type"
292+ }
293+ },
294+ "required" : [
295+ " typeReached"
296+ ],
297+ "additionalProperties" : false
298+ },
299+ "type" : {
300+ "title" : " Type descriptors used by GraalVM Native Image metadata files" ,
301+ "oneOf" : [
302+ {
303+ "type" : " string"
304+ },
305+ {
306+ "type" : " object" ,
307+ "properties" : {
308+ "proxy" : {
309+ "title" : " List of interfaces defining the proxy class" ,
310+ "type" : " array" ,
311+ "default" : [],
312+ "items" : {
313+ "title" : " Fully qualified name of the interface defining the proxy class" ,
314+ "type" : " string"
315+ }
316+ }
317+ },
318+ "required" : [
319+ " proxy"
320+ ],
321+ "additionalProperties" : false
322+ }
323+ ]
324+ },
325+ "method" : {
326+ "title" : " Method descriptors used by GraalVM Native Image metadata files" ,
327+ "type" : " object" ,
328+ "properties" : {
329+ "name" : {
330+ "title" : " Method name that should be registered for this class" ,
331+ "type" : " string"
332+ },
333+ "parameterTypes" : {
334+ "default" : [],
335+ "items" : {
336+ "title" : " List of the method's parameter types" ,
337+ "type" : " string"
338+ },
339+ "type" : " array"
340+ }
341+ },
342+ "required" : [
343+ " name"
344+ ],
345+ "additionalProperties" : false
346+ },
347+ "field" : {
348+ "title" : " Field descriptors used by GraalVM Native Image metadata files" ,
349+ "type" : " object" ,
350+ "properties" : {
351+ "name" : {
352+ "title" : " Name of the field that should be registered for reflection" ,
353+ "type" : " string"
354+ }
355+ },
356+ "required" : [
357+ " name"
358+ ],
359+ "additionalProperties" : false
360+ }
361+ }
362+ }
0 commit comments