001/* 002 * SPDX-FileCopyrightText: none 003 * SPDX-License-Identifier: CC0-1.0 004 */ 005 006package dev.metaschema.databind.codegen.config; 007 008import java.util.List; 009import java.util.Map; 010 011import edu.umd.cs.findbugs.annotations.NonNull; 012import edu.umd.cs.findbugs.annotations.Nullable; 013 014/** 015 * Provides binding configuration for a specific Metaschema definition. 016 * <p> 017 * This interface defines how an individual field or assembly definition is 018 * mapped to a generated Java class, including the class name, base class, and 019 * interfaces to implement. 020 */ 021public interface IDefinitionBindingConfiguration { 022 /** 023 * Get the class name to use for the generated class associated with this 024 * binding. 025 * 026 * @return a class name 027 */ 028 @Nullable 029 String getClassName(); 030 031 /** 032 * Get the class that the associated generated class will extend. 033 * 034 * @return a full type, including the package 035 */ 036 @Nullable 037 String getQualifiedBaseClassName(); 038 039 /** 040 * A collection of interfaces that the associated generated class will 041 * implement. 042 * 043 * @return a list of fully qualified type names for interfaces 044 */ 045 @NonNull 046 List<String> getInterfacesToImplement(); 047 048 /** 049 * Get the choice group binding configurations for this definition. 050 * 051 * <p> 052 * Choice group bindings provide configuration for choice groups within this 053 * assembly definition, keyed by the choice group's {@code group-as} name. 054 * 055 * @return a map of group-as name to choice group binding configuration 056 */ 057 @NonNull 058 Map<String, IChoiceGroupBindingConfiguration> getChoiceGroupBindings(); 059}