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