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.Set;
11 import java.util.stream.Stream;
12
13 import dev.metaschema.core.model.IFlagInstance;
14 import edu.umd.cs.findbugs.annotations.NonNull;
15
16
17
18
19
20
21 public class JsonSchemaPropertyFlag
22 extends AbstractJsonSchemaPropertyNamed<IFlagInstance>
23 implements IJsonSchemaPropertyFlag {
24 private final IJsonSchemaDefinition definitionSchema;
25
26
27
28
29
30
31
32
33
34 public JsonSchemaPropertyFlag(
35 @NonNull IFlagInstance instance,
36 @NonNull IJsonGenerationState state) {
37 super(instance, instance.getJsonName());
38 this.definitionSchema = state.getFlagDefinition(instance.getDefinition());
39 }
40
41 @Override
42 public String getName() {
43 return getInstance().getJsonName();
44 }
45
46 @Override
47 public boolean isRequired() {
48 return getInstance().isRequired();
49 }
50
51 @Override
52 public Stream<IJsonSchemaDefinable> collectDefinitions(
53 Set<IJsonSchemaDefinitionAssembly> visited,
54 IJsonGenerationState state) {
55 return definitionSchema.collectDefinitions(visited, state);
56 }
57
58 @Override
59 protected void generateMetadata(ObjectNode obj, IJsonGenerationState state) {
60 IFlagInstance instance = getInstance();
61 JsonSchemaHelper.generateTitle(instance, obj);
62 JsonSchemaHelper.generateDescription(instance, obj);
63 JsonSchemaHelper.generateDefault(instance, obj);
64 }
65
66 @Override
67 protected void generateBody(ObjectNode obj, IJsonGenerationState state) {
68 definitionSchema.generateJsonSchemaOrDefinitionRef(obj, state);
69 assert !obj.isEmpty();
70 }
71 }