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