1   /*
2    * SPDX-FileCopyrightText: none
3    * SPDX-License-Identifier: CC0-1.0
4    */
5   
6   package gov.nist.secauto.metaschema.databind.codegen.impl;
7   
8   import com.squareup.javapoet.ClassName;
9   
10  import gov.nist.secauto.metaschema.core.model.IAssemblyDefinition;
11  import gov.nist.secauto.metaschema.core.model.IModelDefinition;
12  import gov.nist.secauto.metaschema.databind.codegen.IGeneratedDefinitionClass;
13  
14  import java.nio.file.Path;
15  
16  import edu.umd.cs.findbugs.annotations.NonNull;
17  
18  /**
19   * Contains information about a generated class for a Module definition.
20   */
21  // TODO: make package private
22  public class DefaultGeneratedDefinitionClass
23      extends DefaultGeneratedClass
24      implements IGeneratedDefinitionClass {
25    @NonNull
26    private final IModelDefinition definition;
27  
28    /**
29     * Construct a new class information object for a generated class.
30     *
31     * @param classFile
32     *          the file the class was written to
33     * @param className
34     *          the type info for the class
35     * @param definition
36     *          the definition on which the class was based
37     */
38    public DefaultGeneratedDefinitionClass(@NonNull Path classFile, @NonNull ClassName className,
39        @NonNull IModelDefinition definition) {
40      super(classFile, className);
41      this.definition = definition;
42    }
43  
44    @Override
45    public IModelDefinition getDefinition() {
46      return definition;
47    }
48  
49    @Override
50    public boolean isRootClass() {
51      return definition instanceof IAssemblyDefinition && ((IAssemblyDefinition) definition).isRoot();
52    }
53  }