1
2
3
4
5
6 package gov.nist.secauto.metaschema.databind.model.impl;
7
8 import gov.nist.secauto.metaschema.core.datatype.markup.MarkupLine;
9 import gov.nist.secauto.metaschema.core.datatype.markup.MarkupMultiline;
10 import gov.nist.secauto.metaschema.core.model.AbstractAssemblyInstance;
11 import gov.nist.secauto.metaschema.core.model.IBoundObject;
12 import gov.nist.secauto.metaschema.core.util.ObjectUtils;
13 import gov.nist.secauto.metaschema.databind.model.IBoundDefinitionModelAssembly;
14 import gov.nist.secauto.metaschema.databind.model.IBoundInstanceModelChoiceGroup;
15 import gov.nist.secauto.metaschema.databind.model.IBoundInstanceModelGroupedAssembly;
16 import gov.nist.secauto.metaschema.databind.model.IBoundProperty;
17 import gov.nist.secauto.metaschema.databind.model.annotations.BoundGroupedAssembly;
18 import gov.nist.secauto.metaschema.databind.model.annotations.ModelUtil;
19
20 import java.util.Map;
21
22 import edu.umd.cs.findbugs.annotations.NonNull;
23 import nl.talsmasoftware.lazy4j.Lazy;
24
25
26
27
28
29 public class InstanceModelGroupedAssembly
30 extends AbstractAssemblyInstance<
31 IBoundInstanceModelChoiceGroup,
32 IBoundDefinitionModelAssembly,
33 IBoundInstanceModelGroupedAssembly,
34 IBoundDefinitionModelAssembly>
35
36 implements IBoundInstanceModelGroupedAssembly {
37 @NonNull
38 private final BoundGroupedAssembly annotation;
39 @NonNull
40 private final IBoundDefinitionModelAssembly definition;
41 @NonNull
42 private final Lazy<Map<String, IBoundProperty<?>>> jsonProperties;
43
44
45
46
47
48
49
50
51
52
53
54
55 public InstanceModelGroupedAssembly(
56 @NonNull BoundGroupedAssembly annotation,
57 @NonNull IBoundDefinitionModelAssembly definition,
58 @NonNull IBoundInstanceModelChoiceGroup container) {
59 super(container);
60 this.annotation = annotation;
61 this.definition = definition;
62
63
64
65
66 this.jsonProperties = ObjectUtils.notNull(Lazy.lazy(() -> getDefinition().getJsonProperties(null)));
67 }
68
69 private BoundGroupedAssembly getAnnotation() {
70 return annotation;
71 }
72
73
74
75
76
77 @Override
78 public Class<? extends IBoundObject> getBoundClass() {
79 return getAnnotation().binding();
80 }
81
82 @Override
83 public Map<String, IBoundProperty<?>> getJsonProperties() {
84 return ObjectUtils.notNull(jsonProperties.get());
85 }
86
87 @Override
88 public IBoundDefinitionModelAssembly getDefinition() {
89 return definition;
90 }
91
92 @Override
93 public String getFormalName() {
94 return ModelUtil.resolveNoneOrValue(getAnnotation().formalName());
95 }
96
97 @Override
98 public MarkupLine getDescription() {
99 return ModelUtil.resolveToMarkupLine(getAnnotation().description());
100 }
101
102 @Override
103 public MarkupMultiline getRemarks() {
104 return ModelUtil.resolveToMarkupMultiline(getAnnotation().remarks());
105 }
106
107 @Override
108 public String getDiscriminatorValue() {
109 return ModelUtil.resolveNoneOrValue(getAnnotation().discriminatorValue());
110 }
111
112 @Override
113 public String getUseName() {
114 return ModelUtil.resolveNoneOrValue(getAnnotation().useName());
115 }
116
117 @Override
118 public Integer getUseIndex() {
119 return ModelUtil.resolveDefaultInteger(getAnnotation().useIndex());
120 }
121 }