1   /*
2    * SPDX-FileCopyrightText: none
3    * SPDX-License-Identifier: CC0-1.0
4    */
5   
6   package dev.metaschema.core.mdm.impl;
7   
8   import dev.metaschema.core.metapath.StaticContext;
9   import dev.metaschema.core.metapath.item.atomic.IAnyAtomicItem;
10  import dev.metaschema.core.metapath.item.node.IAssemblyNodeItem;
11  import dev.metaschema.core.metapath.item.node.INodeItem;
12  import dev.metaschema.core.model.IFieldDefinition;
13  import dev.metaschema.core.model.IFieldInstance;
14  import edu.umd.cs.findbugs.annotations.NonNull;
15  
16  /**
17   * A Metapath field node item that is orphaned from a document-based data model.
18   */
19  public class DefinitionFieldNodeItem
20      extends AbstractDMFieldNodeItem {
21    @NonNull
22    private final IFieldDefinition definition;
23    @NonNull
24    private final StaticContext staticContext;
25  
26    /**
27     * Construct a new node item.
28     *
29     * @param definition
30     *          the Metaschema module definition associated with this node
31     * @param value
32     *          the initial field value
33     * @param staticContext
34     *          the static context to use when evaluating Metapath expressions
35     *          against this node
36     */
37    public DefinitionFieldNodeItem(
38        @NonNull IFieldDefinition definition,
39        @NonNull IAnyAtomicItem value,
40        @NonNull StaticContext staticContext) {
41      super(value);
42      this.definition = definition;
43      this.staticContext = staticContext;
44    }
45  
46    @Override
47    public int getPosition() {
48      return 1;
49    }
50  
51    @Override
52    public INodeItem getParentNodeItem() {
53      // always null
54      return null;
55    }
56  
57    @Override
58    public IAssemblyNodeItem getParentContentNodeItem() {
59      // always null
60      return null;
61    }
62  
63    @Override
64    public IFieldDefinition getDefinition() {
65      return definition;
66    }
67  
68    @Override
69    public IFieldInstance getInstance() {
70      // always null
71      return null;
72    }
73  
74    @Override
75    public StaticContext getStaticContext() {
76      return staticContext;
77    }
78  }