001/*
002 * SPDX-FileCopyrightText: none
003 * SPDX-License-Identifier: CC0-1.0
004 */
005
006package gov.nist.secauto.metaschema.databind.model;
007
008import gov.nist.secauto.metaschema.core.model.IFieldDefinition;
009
010import edu.umd.cs.findbugs.annotations.Nullable;
011
012/**
013 * Represents a field definition bound to Java data.
014 * <p>
015 * Classes and interfaces implementing this interface can be:
016 * <ul>
017 * <li>"scalar", meaning they have only a scalar field value, or</li>
018 * <li>"complex", meaning they allow flags and are bound to a Java class.
019 * </ul>
020 *
021 * @param <ITEM>
022 *          the Java type for associated bound objects
023 */
024public interface IBoundDefinitionModelField<ITEM>
025    extends IFieldDefinition, IBoundDefinitionModel<ITEM> {
026
027  @Override
028  default IBoundInstanceModelField<ITEM> getInlineInstance() {
029    // never inline
030    return null;
031  }
032
033  @Override
034  @Nullable
035  IBoundInstanceFlag getJsonValueKeyFlagInstance();
036}