001/*
002 * SPDX-FileCopyrightText: none
003 * SPDX-License-Identifier: CC0-1.0
004 */
005
006package dev.metaschema.databind.model;
007
008import java.lang.reflect.ParameterizedType;
009import java.lang.reflect.Type;
010
011import dev.metaschema.core.model.IValued;
012import edu.umd.cs.findbugs.annotations.NonNull;
013
014/**
015 * Extends {@link IValued} to provide the ability to set a value on a parent
016 * object.
017 */
018@FunctionalInterface
019public interface IValuedMutable extends IValued {
020  /**
021   * Set the provided value on the provided object. The provided object must be of
022   * the item's type associated with this instance.
023   *
024   * @param parentObject
025   *          the object
026   * @param value
027   *          a value, which may be a simple {@link Type} or a
028   *          {@link ParameterizedType} for a collection
029   */
030  void setValue(@NonNull Object parentObject, Object value);
031}