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.IInstance; 010import edu.umd.cs.findbugs.annotations.NonNull; 011import edu.umd.cs.findbugs.annotations.Nullable; 012 013/** 014 * Represents a Metaschema module instance bound to Java data. 015 * 016 * @param <ITEM> 017 * the Java type for associated bound objects 018 */ 019public interface IBoundInstance<ITEM> extends IBoundProperty<ITEM>, IBoundModelElement, IInstance { 020 @Override 021 IBoundDefinitionModel<IBoundObject> getContainingDefinition(); 022 023 @Override 024 default IBoundModule getContainingModule() { 025 return getContainingDefinition().getContainingModule(); 026 } 027 028 /** 029 * {@inheritDoc} 030 * <p> 031 * Always bound to a field. 032 */ 033 @Override 034 @Nullable 035 default Object getValue(@NonNull Object parent) { 036 return IBoundProperty.super.getValue(parent); 037 } 038 039 /** 040 * {@inheritDoc} 041 * <p> 042 * Always bound to a field. 043 */ 044 @Override 045 default void setValue(@NonNull Object parentObject, @Nullable Object value) { 046 IBoundProperty.super.setValue(parentObject, value); 047 } 048}