1   /*
2    * SPDX-FileCopyrightText: none
3    * SPDX-License-Identifier: CC0-1.0
4    */
5   
6   package dev.metaschema.databind.codegen.typeinfo;
7   
8   import com.squareup.javapoet.AnnotationSpec;
9   
10  import java.lang.annotation.Annotation;
11  
12  import dev.metaschema.core.model.IAssemblyInstanceGrouped;
13  import dev.metaschema.databind.model.annotations.BoundGroupedAssembly;
14  import edu.umd.cs.findbugs.annotations.NonNull;
15  
16  public class GroupedAssemblyInstanceTypeInfo
17      extends AbstractGroupedNamedModelInstanceTypeInfo<IAssemblyInstanceGrouped>
18      implements IGroupedAssemblyInstanceTypeInfo {
19  
20    /**
21     * Constructs a new type information object for a grouped assembly instance.
22     *
23     * @param modelInstance
24     *          the grouped assembly instance
25     * @param choiceGroupTypeInfo
26     *          the type information for the parent choice group containing this
27     *          instance
28     */
29    public GroupedAssemblyInstanceTypeInfo(
30        @NonNull IAssemblyInstanceGrouped modelInstance,
31        @NonNull IChoiceGroupTypeInfo choiceGroupTypeInfo) {
32      super(modelInstance, choiceGroupTypeInfo);
33    }
34  
35    @Override
36    protected Class<? extends Annotation> getBindingAnnotation() {
37      return BoundGroupedAssembly.class;
38    }
39  
40    @Override
41    protected void applyInstanceAnnotation(
42        @NonNull AnnotationSpec.Builder instanceAnnotation,
43        @NonNull AnnotationSpec.Builder choiceGroupAnnotation) {
44      choiceGroupAnnotation.addMember("assemblies", "$L", instanceAnnotation.build());
45    }
46  }