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 * Provides loading capabilities for Metaschema modules. 012 * 013 * @param <M> 014 * the type of Metaschema module loaded by this loader 015 */ 016public interface IModuleLoader<M extends IModuleExtended<M, ?, ?, ?, ?>> extends ILoader<M> { 017 /** 018 * Used to define a post-processing operation to perform on a module. 019 */ 020 @FunctionalInterface 021 interface IModulePostProcessor { 022 /** 023 * Perform a post-processing operation on the provided module. 024 * 025 * @param module 026 * the Metaschema module to post-process 027 */ 028 void processModule(@NonNull IModule module); 029 } 030}