1
2
3
4
5
6 package gov.nist.secauto.metaschema.databind.model;
7
8 import gov.nist.secauto.metaschema.core.model.INamedModelInstanceAbsolute;
9 import gov.nist.secauto.metaschema.core.model.JsonGroupAsBehavior;
10 import gov.nist.secauto.metaschema.core.qname.IEnhancedQName;
11
12 import java.util.Collection;
13
14 import edu.umd.cs.findbugs.annotations.NonNull;
15 import edu.umd.cs.findbugs.annotations.Nullable;
16
17 public interface IBoundInstanceModelNamed<ITEM>
18 extends IBoundInstanceModel<ITEM>, INamedModelInstanceAbsolute {
19
20 @Override
21 @NonNull
22 IBoundDefinitionModel<ITEM> getDefinition();
23
24 @Override
25 default String getName() {
26
27 return getDefinition().getName();
28 }
29
30 @Override
31 default Integer getIndex() {
32
33 return getDefinition().getIndex();
34 }
35
36 @Override
37 @Nullable
38 default IBoundInstanceFlag getEffectiveJsonKey() {
39 return JsonGroupAsBehavior.KEYED.equals(getJsonGroupAsBehavior())
40 ? getJsonKey()
41 : null;
42 }
43
44 @Override
45 default IBoundInstanceFlag getJsonKey() {
46 return getDefinition().getJsonKey();
47 }
48
49 @Override
50 default IBoundInstanceFlag getItemJsonKey(Object item) {
51 return getEffectiveJsonKey();
52 }
53
54 @Override
55 default Collection<? extends Object> getItemValues(Object value) {
56 return getCollectionInfo().getItemsFromValue(value);
57 }
58
59 @Override
60 default boolean canHandleXmlQName(IEnhancedQName qname) {
61 return qname.equals(getQName());
62 }
63 }