1   /*
2    * SPDX-FileCopyrightText: none
3    * SPDX-License-Identifier: CC0-1.0
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.IFlagDefinition;
11  import gov.nist.secauto.metaschema.core.util.ObjectUtils;
12  
13  import java.util.Set;
14  import java.util.stream.Stream;
15  
16  import edu.umd.cs.findbugs.annotations.NonNull;
17  
18  /**
19   * Provides a means to generate a JSON schema based on a Metaschema flag
20   * definition.
21   */
22  public class JsonSchemaDefinitionFlag
23      extends AbstractJsonSchemaDefinition<IFlagDefinition> {
24  
25    /**
26     * Construct a new JSON schema definition based on a Metaschema module
27     * definition.
28     *
29     * @param definition
30     *          the Metaschema module definition
31     * @param state
32     *          the JSON generation state
33     */
34    public JsonSchemaDefinitionFlag(
35        @NonNull IFlagDefinition definition,
36        @NonNull IJsonGenerationState state) {
37      super(definition, state);
38    }
39  
40    @Override
41    public Stream<IJsonSchemaDefinable> collectDefinitions(
42        Set<IJsonSchemaDefinitionAssembly> visited,
43        IJsonGenerationState state) {
44      return ObjectUtils.notNull(Stream.of(this));
45    }
46  
47    @Override
48    public String generateDefinitionName(IJsonGenerationState state) {
49      return state.generateJsonSchemaDefinitionName(getDefinition(), null, null);
50    }
51  
52    @Override
53    public void generateBody(ObjectNode node, IJsonGenerationState state) {
54      IDataTypeJsonSchema schema = state.getDataTypeSchemaForDefinition(getDefinition());
55      schema.generateJsonSchemaOrDefinitionRef(node, state);
56    }
57  }