1   /*
2    * SPDX-FileCopyrightText: none
3    * SPDX-License-Identifier: CC0-1.0
4    */
5   
6   package gov.nist.secauto.metaschema.core.mdm;
7   
8   import gov.nist.secauto.metaschema.core.mdm.impl.DefinitionFlagNodeItem;
9   import gov.nist.secauto.metaschema.core.metapath.StaticContext;
10  import gov.nist.secauto.metaschema.core.metapath.item.atomic.IAnyAtomicItem;
11  import gov.nist.secauto.metaschema.core.metapath.item.node.IFlagNodeItem;
12  import gov.nist.secauto.metaschema.core.model.IFlagDefinition;
13  
14  import edu.umd.cs.findbugs.annotations.NonNull;
15  
16  /**
17   * Represents a Metapath flag node item that is backed by a simple Metaschema
18   * module-based data model.
19   */
20  public interface IDMFlagNodeItem extends IFlagNodeItem, IDMNodeItem {
21    /**
22     * Create new flag node item that is detached from a parent node item.
23     *
24     * @param definition
25     *          the Metaschema flag definition describing the flag
26     * @param value
27     *          the flag's initial value
28     * @param staticContext
29     *          the atomic flag value
30     * @return the new flag node item
31     */
32    @NonNull
33    static IDMFlagNodeItem newInstance(
34        @NonNull IFlagDefinition definition,
35        @NonNull IAnyAtomicItem value,
36        @NonNull StaticContext staticContext) {
37      return new DefinitionFlagNodeItem(definition, value, staticContext);
38    }
39  }