1
2
3
4
5
6 package gov.nist.secauto.metaschema.schemagen.json;
7
8 import com.fasterxml.jackson.core.JsonGenerator;
9 import com.fasterxml.jackson.databind.node.JsonNodeFactory;
10
11 import gov.nist.secauto.metaschema.core.datatype.IDataTypeAdapter;
12 import gov.nist.secauto.metaschema.core.model.IDefinition;
13 import gov.nist.secauto.metaschema.core.model.IValuedDefinition;
14 import gov.nist.secauto.metaschema.schemagen.IGenerationState;
15 import gov.nist.secauto.metaschema.schemagen.json.IDefineableJsonSchema.IKey;
16
17 import edu.umd.cs.findbugs.annotations.NonNull;
18 import edu.umd.cs.findbugs.annotations.Nullable;
19
20 public interface IJsonGenerationState extends IGenerationState<JsonGenerator> {
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39 @NonNull
40 default <DEF extends IDefinition> IDefinitionJsonSchema<DEF> getSchema(
41 @NonNull DEF definition,
42 @Nullable String jsonKeyFlagName,
43 @Nullable String discriminatorProperty,
44 @Nullable String discriminatorValue) {
45 return getSchema(IKey.of(definition, jsonKeyFlagName, discriminatorProperty, discriminatorValue));
46 }
47
48 @NonNull
49 <DEF extends IDefinition> IDefinitionJsonSchema<DEF> getSchema(@NonNull IKey key);
50
51 @NonNull
52 IDataTypeJsonSchema getSchema(@NonNull IDataTypeAdapter<?> datatype);
53
54 @NonNull
55 IDataTypeJsonSchema getDataTypeSchemaForDefinition(@NonNull IValuedDefinition definition);
56
57 @NonNull
58 JsonNodeFactory getJsonNodeFactory();
59
60 void registerDefinitionSchema(IDefinitionJsonSchema<?> schema);
61
62 boolean isDefinitionRegistered(IDefinitionJsonSchema<?> schema);
63 }