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.IFieldInstanceGrouped;
13  import dev.metaschema.databind.model.annotations.BoundGroupedField;
14  import edu.umd.cs.findbugs.annotations.NonNull;
15  
16  public class GroupedFieldInstanceTypeInfo
17      extends AbstractGroupedNamedModelInstanceTypeInfo<IFieldInstanceGrouped>
18      implements IGroupedFieldInstanceTypeInfo {
19  
20    /**
21     * Constructs a new type information object for a grouped field instance.
22     *
23     * @param modelInstance
24     *          the grouped field instance
25     * @param choiceGroupTypeInfo
26     *          the type information for the parent choice group containing this
27     *          instance
28     */
29    public GroupedFieldInstanceTypeInfo(
30        @NonNull IFieldInstanceGrouped modelInstance,
31        @NonNull IChoiceGroupTypeInfo choiceGroupTypeInfo) {
32      super(modelInstance, choiceGroupTypeInfo);
33    }
34  
35    @Override
36    protected Class<? extends Annotation> getBindingAnnotation() {
37      return BoundGroupedField.class;
38    }
39  
40    @Override
41    protected void applyInstanceAnnotation(
42        @NonNull AnnotationSpec.Builder instanceAnnotation,
43        @NonNull AnnotationSpec.Builder choiceGroupAnnotation) {
44      choiceGroupAnnotation.addMember("fields", "$L", instanceAnnotation.build());
45    }
46  }