1 /* 2 * SPDX-FileCopyrightText: none 3 * SPDX-License-Identifier: CC0-1.0 4 */ 5 6 package gov.nist.secauto.metaschema.databind.codegen.config; 7 8 import gov.nist.secauto.metaschema.core.model.IModelDefinition; 9 import gov.nist.secauto.metaschema.core.model.IModule; 10 11 import java.util.List; 12 13 import edu.umd.cs.findbugs.annotations.NonNull; 14 import edu.umd.cs.findbugs.annotations.Nullable; 15 16 public interface IBindingConfiguration { 17 18 /** 19 * Generates a Java package name for the provided Module module. 20 * 21 * @param module 22 * the Module module to generate a package name for 23 * @return a Java package name 24 */ 25 @NonNull 26 String getPackageNameForModule(@NonNull IModule module); 27 28 /** 29 * Get the Java class name for the provided field or assembly definition. 30 * 31 * @param definition 32 * the definition to generate the Java class name for 33 * @return a Java class name 34 */ 35 @NonNull 36 String getClassName(@NonNull IModelDefinition definition); 37 38 /** 39 * Get the Java class name for the provided Module module. 40 * 41 * @param module 42 * the Module module to generate the Java class name for 43 * @return a Java class name 44 */ 45 @NonNull 46 String getClassName(@NonNull IModule module); 47 48 /** 49 * Get the Java class name of the base class to use for the class associated 50 * with the provided definition. 51 * 52 * @param definition 53 * a definition that may be built as a class 54 * @return the name of the base class or {@code null} if no base class is to be 55 * used 56 */ 57 @Nullable 58 String getQualifiedBaseClassName(@NonNull IModelDefinition definition); 59 60 /** 61 * Get the Java class names of the superinterfaces to use for the class 62 * associated with the provided definition. 63 * 64 * @param definition 65 * a definition that may be built as a class 66 * @return a list of superinterface class names 67 */ 68 @NonNull 69 List<String> getQualifiedSuperinterfaceClassNames(@NonNull IModelDefinition definition); 70 }