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.model.IFieldInstanceGrouped;
12 import gov.nist.secauto.metaschema.core.util.ObjectUtils;
13
14 import java.util.List;
15 import java.util.stream.Collectors;
16 import java.util.stream.Stream;
17
18 import edu.umd.cs.findbugs.annotations.NonNull;
19
20
21
22
23
24
25 public class JsonSchemaPropertyGroupedField
26 extends AbstractJsonSchemaPropertyGrouped<IFieldInstanceGrouped>
27 implements IJsonSchemaDefinitionField {
28 @NonNull
29 private final IDataTypeJsonSchema fieldValueDataType;
30 @NonNull
31 private final List<? extends IJsonSchemaPropertyNamed> nonValueProperties;
32
33
34
35
36
37
38
39
40
41 public JsonSchemaPropertyGroupedField(
42 @NonNull IFieldInstanceGrouped instance,
43 @NonNull IJsonGenerationState state) {
44 super(instance, state);
45 this.fieldValueDataType = state.getDataTypeSchemaForDefinition(instance.getDefinition());
46 this.nonValueProperties = ObjectUtils.notNull(Stream.concat(
47 getFlagProperties().stream(),
48 Stream.of(new DiscriminatorProperty()))
49 .collect(Collectors.toUnmodifiableList()));
50 }
51
52 @Override
53 public IFieldDefinition getDefinition() {
54 return getInstance().getDefinition();
55 }
56
57 @Override
58 public List<? extends IJsonSchemaPropertyNamed> getNonValueProperties() {
59 return nonValueProperties;
60 }
61
62 @Override
63 public IDataTypeJsonSchema getFieldValue() {
64 return fieldValueDataType;
65 }
66
67 @Override
68 public void generateBody(ObjectNode node, IJsonGenerationState state) {
69 JsonSchemaHelper.generateFieldBody(this, node, state);
70 }
71 }