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}