1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package io.github.tonywasher.joceanus.themis.xanalysis.solver.reflect;
18
19 import com.github.javaparser.ast.NodeList;
20 import com.github.javaparser.ast.body.ClassOrInterfaceDeclaration;
21 import com.github.javaparser.ast.expr.SimpleName;
22 import com.github.javaparser.ast.type.TypeParameter;
23 import io.github.tonywasher.joceanus.oceanus.base.OceanusException;
24
25 import java.util.Optional;
26
27
28
29
30 public class ThemisXAnalysisReflectClass
31 extends ClassOrInterfaceDeclaration {
32
33
34
35 private final Class<?> theClass;
36
37
38
39
40 private final String theFullName;
41
42
43
44
45
46
47
48 ThemisXAnalysisReflectClass(final Class<?> pClazz) throws OceanusException {
49
50 theClass = pClazz;
51
52
53 theFullName = theClass.getCanonicalName();
54
55
56 setName(new SimpleName(theClass.getSimpleName()));
57
58
59 setInterface(theClass.isInterface());
60
61
62 setModifiers(ThemisXAnalysisReflectUtils.buildModifiers(theClass));
63
64
65 setExtendedTypes(ThemisXAnalysisReflectUtils.buildExtended(theClass));
66 setImplementedTypes(ThemisXAnalysisReflectUtils.buildImplements(theClass));
67
68
69 setMembers(ThemisXAnalysisReflectMemberUtils.buildMembers(theClass));
70
71
72 final NodeList<TypeParameter> myParams = ThemisXAnalysisReflectBaseUtils.buildTypeParams(theClass.getTypeParameters());
73 setTypeParameters(myParams);
74 }
75
76 @Override
77 public Optional<String> getFullyQualifiedName() {
78 return Optional.of(theFullName);
79 }
80
81 @Override
82 public boolean isTopLevelType() {
83 return !theClass.isMemberClass();
84 }
85 }