1   
2   package dev.metaschema.core.metapath.item.node;
3   
4   import java.net.URI;
5   
6   import dev.metaschema.core.metapath.function.InvalidTypeFunctionException;
7   import dev.metaschema.core.metapath.item.atomic.IAnyAtomicItem;
8   import edu.umd.cs.findbugs.annotations.Nullable;
9   
10  /**
11   * Represents a Metapath node item that is associated with a document.
12   */
13  public interface IDocumentBasedNodeItem extends INodeItem {
14  
15    @Override
16    default IModelNodeItem<?, ?> getParentContentNodeItem() {
17      // there is no parent
18      return null;
19    }
20  
21    /**
22     * Get the URI associated with this document.
23     *
24     * @return the document's URI or {@code null} if unavailable
25     */
26    @Nullable
27    URI getDocumentUri();
28  
29    @Override
30    default URI getBaseUri() {
31      return getDocumentUri();
32    }
33  
34    @Override
35    default INodeItem getParentNodeItem() {
36      // there is no parent
37      return null;
38    }
39  
40    @Override
41    default IAnyAtomicItem toAtomicItem() {
42      throw new InvalidTypeFunctionException(InvalidTypeFunctionException.DATA_ITEM_IS_FUNCTION, this);
43    }
44  }