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  }