001/* 002 * SPDX-FileCopyrightText: none 003 * SPDX-License-Identifier: CC0-1.0 004 */ 005 006package dev.metaschema.core.model; 007 008import edu.umd.cs.findbugs.annotations.NonNull; 009 010/** 011 * Base implementation of {@link IInstance} providing parent container 012 * management. 013 * 014 * @param <P> 015 * the Java type of the parent container 016 */ 017public abstract class AbstractInstance<P extends IContainer> implements IInstance { 018 @NonNull 019 private final P parent; 020 021 /** 022 * Construct a new instance. 023 * 024 * @param parent 025 * the parent containing the instance. 026 */ 027 protected AbstractInstance(@NonNull P parent) { 028 this.parent = parent; 029 } 030 031 @Override 032 @NonNull 033 public final P getParentContainer() { 034 return parent; 035 } 036}