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.IFieldDefinition;
11  import gov.nist.secauto.metaschema.core.qname.IEnhancedQName;
12  
13  import java.util.List;
14  
15  import edu.umd.cs.findbugs.annotations.NonNull;
16  import edu.umd.cs.findbugs.annotations.Nullable;
17  
18  
19  
20  
21  
22  public class JsonSchemaDefinitionField
23      extends AbstractJsonSchemaModelDefinition<IFieldDefinition>
24      implements IJsonSchemaDefinitionField {
25    @NonNull
26    private final IDataTypeJsonSchema fieldValueDataType;
27  
28    
29  
30  
31  
32  
33  
34  
35  
36  
37  
38  
39  
40    public JsonSchemaDefinitionField(
41        @NonNull IFieldDefinition definition,
42        @Nullable IEnhancedQName jsonKeyFlagName,
43        @NonNull IJsonGenerationState state) {
44      super(definition, jsonKeyFlagName, state);
45      this.fieldValueDataType = state.getDataTypeSchemaForDefinition(getDefinition());
46    }
47  
48    @Override
49    public List<? extends IJsonSchemaPropertyNamed> getNonValueProperties() {
50      return getFlagProperties();
51    }
52  
53    @Override
54    public IDataTypeJsonSchema getFieldValue() {
55      return fieldValueDataType;
56    }
57  
58    @Override
59    public void generateBody(ObjectNode node, IJsonGenerationState state) {
60      JsonSchemaHelper.generateFieldBody(this, node, state);
61    }
62  }