1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 package gov.nist.secauto.metaschema.core.model.xml;
28
29 import gov.nist.secauto.metaschema.core.datatype.markup.MarkupLine;
30 import gov.nist.secauto.metaschema.core.datatype.markup.MarkupMultiline;
31 import gov.nist.secauto.metaschema.core.model.AbstractFieldInstance;
32 import gov.nist.secauto.metaschema.core.model.IFieldDefinition;
33 import gov.nist.secauto.metaschema.core.model.IModelContainer;
34 import gov.nist.secauto.metaschema.core.model.JsonGroupAsBehavior;
35 import gov.nist.secauto.metaschema.core.model.MetaschemaModelConstants;
36 import gov.nist.secauto.metaschema.core.model.XmlGroupAsBehavior;
37 import gov.nist.secauto.metaschema.core.model.xml.xmlbeans.FieldReferenceType;
38 import gov.nist.secauto.metaschema.core.util.CollectionUtil;
39 import gov.nist.secauto.metaschema.core.util.ObjectUtils;
40
41 import java.util.Collection;
42 import java.util.Collections;
43 import java.util.Map;
44 import java.util.Set;
45
46 import javax.xml.namespace.QName;
47
48 import edu.umd.cs.findbugs.annotations.NonNull;
49
50 class XmlFieldInstance
51 extends AbstractFieldInstance {
52 @NonNull
53 private final FieldReferenceType xmlField;
54
55
56
57
58
59
60
61
62
63
64 public XmlFieldInstance(
65 @NonNull FieldReferenceType xmlField,
66 @NonNull IModelContainer container) {
67 super(container);
68 this.xmlField = xmlField;
69 }
70
71
72
73
74
75
76 protected FieldReferenceType getXmlField() {
77 return xmlField;
78 }
79
80 @Override
81 public IFieldDefinition getDefinition() {
82
83 return ObjectUtils.notNull(getContainingModule().getScopedFieldDefinitionByName(getName()));
84 }
85
86 @Override
87 public boolean isInXmlWrapped() {
88 boolean retval;
89 if (getDefinition().getJavaTypeAdapter().isUnrappedValueAllowedInXml()) {
90
91 retval = MetaschemaModelConstants.DEFAULT_FIELD_IN_XML_WRAPPED;
92 if (getXmlField().isSetInXml()) {
93 retval = getXmlField().getInXml().booleanValue();
94 }
95 } else {
96
97 retval = true;
98 }
99 return retval;
100 }
101
102 @SuppressWarnings("CPD-START")
103 @Override
104 public String getFormalName() {
105 return getXmlField().isSetFormalName() ? getXmlField().getFormalName() : null;
106 }
107
108 @SuppressWarnings("null")
109 @Override
110 public MarkupLine getDescription() {
111 return getXmlField().isSetDescription() ? MarkupStringConverter.toMarkupString(getXmlField().getDescription())
112 : null;
113 }
114
115 @Override
116 public Map<QName, Set<String>> getProperties() {
117 return ModelFactory.toProperties(CollectionUtil.listOrEmpty(getXmlField().getPropList()));
118 }
119
120 @SuppressWarnings("null")
121 @Override
122 public String getName() {
123 return getXmlField().getRef();
124 }
125
126 @Override
127 public String getUseName() {
128 return getXmlField().isSetUseName() ? getXmlField().getUseName() : null;
129 }
130
131 @Override
132 public String getGroupAsName() {
133 return getXmlField().isSetGroupAs() ? getXmlField().getGroupAs().getName() : null;
134 }
135
136 @Override
137 public int getMinOccurs() {
138 return XmlModelParser.getMinOccurs(getXmlField().getMinOccurs());
139 }
140
141 @Override
142 public int getMaxOccurs() {
143 return XmlModelParser.getMaxOccurs(getXmlField().getMaxOccurs());
144 }
145
146 @Override
147 public JsonGroupAsBehavior getJsonGroupAsBehavior() {
148 return XmlModelParser.getJsonGroupAsBehavior(getXmlField().getGroupAs());
149 }
150
151 @Override
152 public XmlGroupAsBehavior getXmlGroupAsBehavior() {
153 return XmlModelParser.getXmlGroupAsBehavior(getXmlField().getGroupAs());
154 }
155
156 @SuppressWarnings("null")
157 @Override
158 public MarkupMultiline getRemarks() {
159 return getXmlField().isSetRemarks() ? MarkupStringConverter.toMarkupString(getXmlField().getRemarks()) : null;
160 }
161
162 @SuppressWarnings("CPD-END")
163 @Override
164 public Object getValue(@NonNull Object parentValue) {
165
166 return null;
167 }
168
169 @SuppressWarnings("null")
170 @Override
171 public Collection<?> getItemValues(Object instanceValue) {
172
173 return Collections.emptyList();
174 }
175 }