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