1
2 package dev.metaschema.core.metapath.item.node;
3
4 import dev.metaschema.core.model.IDefinition;
5 import dev.metaschema.core.model.INamedInstance;
6 import dev.metaschema.core.model.IResourceLocation;
7 import dev.metaschema.core.qname.IEnhancedQName;
8 import edu.umd.cs.findbugs.annotations.NonNull;
9 import edu.umd.cs.findbugs.annotations.Nullable;
10
11
12
13
14
15
16
17
18
19
20 public interface IDefinitionNodeItem<D extends IDefinition, I extends INamedInstance> extends INodeItem {
21
22
23
24
25
26 @NonNull
27 default IEnhancedQName getQName() {
28 I instance = getInstance();
29 return instance == null
30 ? getDefinition().getQName()
31 : instance.getQName();
32 }
33
34
35
36
37
38
39 @NonNull
40 D getDefinition();
41
42
43
44
45
46
47 I getInstance();
48
49 @Override
50 @Nullable
51 default IResourceLocation getLocation() {
52 Object value = getValue();
53 return value == null ? null : getDefinition().getLocation(value);
54 }
55 }