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.IBoundObject;
009import dev.metaschema.core.model.IJsonNamed;
010import dev.metaschema.databind.io.BindingException;
011import edu.umd.cs.findbugs.annotations.NonNull;
012
013/**
014 * Represents a bound property on a Metaschema definition.
015 * <p>
016 * A bound property combines the model object binding with Java field access and
017 * JSON naming capabilities.
018 *
019 * @param <ITEM>
020 *          the Java type for associated bound objects
021 */
022public interface IBoundProperty<ITEM> extends IBoundModelObject<ITEM>, IFeatureJavaField, IJsonNamed {
023  /**
024   * Copy this instance from one parent object to another.
025   *
026   * @param fromInstance
027   *          the object to copy from
028   * @param toInstance
029   *          the object to copy to
030   * @throws BindingException
031   *           if an error occurred while processing the object bindings
032   */
033  void deepCopy(@NonNull IBoundObject fromInstance, @NonNull IBoundObject toInstance) throws BindingException;
034}