1
2 package dev.metaschema.core.metapath.item.node;
3
4 import java.net.URI;
5
6 import dev.metaschema.core.metapath.DynamicContext;
7 import dev.metaschema.core.metapath.format.IPathFormatter;
8 import dev.metaschema.core.metapath.item.ICollectionValue;
9 import dev.metaschema.core.metapath.type.IItemType;
10 import dev.metaschema.core.metapath.type.IKindTest;
11 import edu.umd.cs.findbugs.annotations.NonNull;
12
13
14
15
16
17 public interface IDocumentNodeItem extends IDocumentBasedNodeItem {
18
19
20
21
22
23 @NonNull
24 static IItemType type() {
25 return IItemType.document();
26 }
27
28 @Override
29 default IKindTest<IDocumentNodeItem> getType() {
30 return IItemType.document(
31 getRootAssemblyNodeItem().getType());
32 }
33
34 @Override
35 default NodeItemKind getNodeItemKind() {
36 return NodeItemKind.DOCUMENT;
37 }
38
39 @Override
40 default NodeType getNodeType() {
41 return NodeType.DOCUMENT;
42 }
43
44 @Override
45 default IDocumentNodeItem getNodeItem() {
46 return this;
47 }
48
49 @Override
50 @NonNull
51 URI getDocumentUri();
52
53
54
55
56
57
58 @NonNull
59 IRootAssemblyNodeItem getRootAssemblyNodeItem();
60
61 @Override
62 default String format(@NonNull IPathFormatter formatter) {
63 return formatter.formatDocument(this);
64 }
65
66 @Override
67 default <CONTEXT, RESULT> RESULT accept(@NonNull INodeItemVisitor<CONTEXT, RESULT> visitor, CONTEXT context) {
68 return visitor.visitDocument(this, context);
69 }
70
71 @Override
72 default boolean deepEquals(ICollectionValue other, DynamicContext dynamicContext) {
73 return other instanceof IDocumentNodeItem
74 && NodeComparators.compareNodeItem(this, (IDocumentNodeItem) other, dynamicContext);
75 }
76 }