1
2
3
4
5
6 package gov.nist.secauto.metaschema.schemagen.json.impl;
7
8 import com.fasterxml.jackson.databind.node.ObjectNode;
9
10 import gov.nist.secauto.metaschema.core.model.IFlagInstance;
11
12 import java.util.Set;
13 import java.util.stream.Stream;
14
15 import edu.umd.cs.findbugs.annotations.NonNull;
16
17
18
19
20
21
22 public class JsonSchemaPropertyFlag
23 extends AbstractJsonSchemaPropertyNamed<IFlagInstance>
24 implements IJsonSchemaPropertyFlag {
25 private final IJsonSchemaDefinition definitionSchema;
26
27
28
29
30
31
32
33
34
35 public JsonSchemaPropertyFlag(
36 @NonNull IFlagInstance instance,
37 @NonNull IJsonGenerationState state) {
38 super(instance, instance.getJsonName());
39 this.definitionSchema = state.getFlagDefinition(instance.getDefinition());
40 }
41
42 @Override
43 public String getName() {
44 return getInstance().getJsonName();
45 }
46
47 @Override
48 public boolean isRequired() {
49 return getInstance().isRequired();
50 }
51
52 @Override
53 public Stream<IJsonSchemaDefinable> collectDefinitions(
54 Set<IJsonSchemaDefinitionAssembly> visited,
55 IJsonGenerationState state) {
56 return definitionSchema.collectDefinitions(visited, state);
57 }
58
59 @Override
60 protected void generateMetadata(ObjectNode obj, IJsonGenerationState state) {
61 IFlagInstance instance = getInstance();
62 JsonSchemaHelper.generateTitle(instance, obj);
63 JsonSchemaHelper.generateDescription(instance, obj);
64 JsonSchemaHelper.generateDefault(instance, obj);
65 }
66
67 @Override
68 protected void generateBody(ObjectNode obj, IJsonGenerationState state) {
69 definitionSchema.generateJsonSchemaOrDefinitionRef(obj, state);
70 assert !obj.isEmpty();
71 }
72 }