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.RecordDeclaration;
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 ThemisXAnalysisReflectRecord
31 extends RecordDeclaration {
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 ThemisXAnalysisReflectRecord(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 setModifiers(ThemisXAnalysisReflectUtils.buildModifiers(theClass));
60
61
62 setImplementedTypes(ThemisXAnalysisReflectUtils.buildImplements(theClass));
63
64
65 setMembers(ThemisXAnalysisReflectMemberUtils.buildMembers(theClass));
66
67
68 final NodeList<TypeParameter> myParams = ThemisXAnalysisReflectBaseUtils.buildTypeParams(theClass.getTypeParameters());
69 setTypeParameters(myParams);
70 }
71
72 @Override
73 public Optional<String> getFullyQualifiedName() {
74 return Optional.of(theFullName);
75 }
76
77 @Override
78 public boolean isTopLevelType() {
79 return !theClass.isMemberClass();
80 }
81 }