1   package com.atlassian.plugins.codegen.modules;
2   
3   import com.atlassian.plugins.codegen.ClassId;
4   
5   import static com.atlassian.plugins.codegen.ClassId.fullyQualified;
6   
7   /**
8    * @since 3.6
9    */
10  public abstract class AbstractClassBasedModuleProperties extends AbstractNameBasedModuleProperties implements ClassBasedModuleProperties
11  {
12      private ClassId classId;
13      private ClassId classUnderTestId;
14      
15      protected AbstractClassBasedModuleProperties()
16      {
17          super();
18      }
19  
20      protected AbstractClassBasedModuleProperties(AbstractClassBasedModuleProperties from)
21      {
22          super(from);
23          this.classId = from.classId;
24          this.classUnderTestId = classUnderTestId;
25      }
26  
27      protected AbstractClassBasedModuleProperties(AbstractClassBasedModuleProperties from, ClassId newClass)
28      {
29          this(from);
30          this.classId = newClass;
31          setProperty(FQ_CLASSNAME, newClass.getFullName());
32          setProperty(PACKAGE, newClass.getPackage());
33          setProperty(CLASSNAME, newClass.getName());
34      }
35  
36      public void setFullyQualifiedClassname(String fqName)
37      {
38          classId = fullyQualified(fqName);
39          setProperty(FQ_CLASSNAME, fqName);
40          setProperty(PACKAGE, classId.getPackage());
41          setProperty(CLASSNAME, classId.getName());
42          setClassUnderTest(fqName);
43      }
44  
45      public void setClassUnderTest(String fqName)
46      {
47          classUnderTestId = fullyQualified(fqName);
48          setProperty(FQ_CLASS_UNDER_TEST, fqName);
49          setProperty(PACKAGE_UNDER_TEST, classUnderTestId.getPackage());
50          setProperty(CLASS_UNDER_TEST, classUnderTestId.getName());
51      }
52  
53      public ClassId getClassId()
54      {
55          return classId;
56      }
57      
58      public ClassId getClassUnderTest()
59      {
60          return classUnderTestId;
61      }
62  }