1   /*
2    * SPDX-FileCopyrightText: none
3    * SPDX-License-Identifier: CC0-1.0
4    */
5   
6   package dev.metaschema.databind.model;
7   
8   import dev.metaschema.core.model.IBoundObject;
9   import dev.metaschema.core.model.IInstance;
10  import edu.umd.cs.findbugs.annotations.NonNull;
11  import edu.umd.cs.findbugs.annotations.Nullable;
12  
13  /**
14   * Represents a Metaschema module instance bound to Java data.
15   *
16   * @param <ITEM>
17   *          the Java type for associated bound objects
18   */
19  public interface IBoundInstance<ITEM> extends IBoundProperty<ITEM>, IBoundModelElement, IInstance {
20    @Override
21    IBoundDefinitionModel<IBoundObject> getContainingDefinition();
22  
23    @Override
24    default IBoundModule getContainingModule() {
25      return getContainingDefinition().getContainingModule();
26    }
27  
28    /**
29     * {@inheritDoc}
30     * <p>
31     * Always bound to a field.
32     */
33    @Override
34    @Nullable
35    default Object getValue(@NonNull Object parent) {
36      return IBoundProperty.super.getValue(parent);
37    }
38  
39    /**
40     * {@inheritDoc}
41     * <p>
42     * Always bound to a field.
43     */
44    @Override
45    default void setValue(@NonNull Object parentObject, @Nullable Object value) {
46      IBoundProperty.super.setValue(parentObject, value);
47    }
48  }