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  public class DefaultGeneratedDefinitionClass
22      extends DefaultGeneratedClass
23      implements IGeneratedDefinitionClass {
24    @NonNull
25    private final IModelDefinition definition;
26  
27    /**
28     * Construct a new class information object for a generated class.
29     *
30     * @param classFile
31     *          the file the class was written to
32     * @param className
33     *          the type info for the class
34     * @param definition
35     *          the definition on which the class was based
36     */
37    public DefaultGeneratedDefinitionClass(@NonNull Path classFile, @NonNull ClassName className,
38        @NonNull IModelDefinition definition) {
39      super(classFile, className);
40      this.definition = definition;
41    }
42  
43    @Override
44    public IModelDefinition getDefinition() {
45      return definition;
46    }
47  
48    @Override
49    public boolean isRootClass() {
50      return definition instanceof IAssemblyDefinition && ((IAssemblyDefinition) definition).isRoot();
51    }
52  }