1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115 | package Torello.JDUInternal.Annotations.TypeAnnotations.Mirror;
import Torello.JDUInternal.Miscellaneous.Where.JDUAnnotations;
import Torello.JavaDoc.Messager.Messager;
import Torello.JavaDoc.Messager.MsgPrintTools;
import static Torello.Java.C.RESET;
import static Torello.Java.C.BCYAN;
import static Torello.Java.C.BGREEN;
import Torello.Java.StrCmpr;
import com.sun.source.tree.ClassTree;
import com.sun.source.tree.AnnotationTree;
// A Java Annotation-Mirror used as a 'data-class' to hold the actual values (during upgrade
// processing) that the user has actually assigned to an Annotation inside his or her
// '.java' source-files.
public class TypeAnnotationMirrors
{
// @StaticFunctional
public final SFMirror sfMirror;
// @JDHeaderBackgroundImg Data
public final JDHBIMirror jdhbiMirror;
// @CSSStyleSheets Data
public final CSSLMirror csslMirror;
// @JavaScriptImport
public final JSIMirror jsiMirror;
public TypeAnnotationMirrors(
final ClassTree ct,
final String fileName,
final String fullNameNoGenerics
)
{
SFMirror sfMirror = null;
JDHBIMirror jdhbiMirror = null;
CSSLMirror csslMirror = null;
JSIMirror jsiMirror = null;
for (final AnnotationTree at : ct.getModifiers().getAnnotations())
{
final String annotationName = at.getAnnotationType().toString();
final String annotationAsStr = at.toString();
if (StrCmpr.equalsXOR
(annotationName, "StaticFunctional", "Torello.JavaDoc.StaticFunctional"))
{
if (sfMirror != null)
dupError(annotationAsStr, sfMirror, fileName, fullNameNoGenerics);
sfMirror = new SFMirror(at.getArguments(), annotationAsStr);
}
else if (StrCmpr.equalsXOR
(annotationName, "JDHeaderBackgroundImg", "Torello.JavaDoc.JDHeaderBackgroundImg"))
{
if (jdhbiMirror != null)
dupError(annotationAsStr, jdhbiMirror, fileName, fullNameNoGenerics);
jdhbiMirror = new JDHBIMirror(at.getArguments(), annotationAsStr);
}
else if (StrCmpr.equalsXOR
(annotationName, "CSSLinks", "Torello.JavaDoc.CSSLinks"))
{
if (csslMirror != null)
dupError(annotationAsStr, csslMirror, fileName, fullNameNoGenerics);
csslMirror = new CSSLMirror(at.getArguments(), annotationAsStr);
}
else if (StrCmpr.equalsXOR
(annotationName, "JavaScriptImport", "Torello.JavaDoc.JavaScriptImport"))
{
if (jsiMirror != null)
dupError(annotationAsStr, jsiMirror, fileName, fullNameNoGenerics);
jsiMirror = new JSIMirror(at.getArguments(), annotationAsStr);
}
}
this.sfMirror = sfMirror;
this.jdhbiMirror = jdhbiMirror;
this.csslMirror = csslMirror;
this.jsiMirror = jsiMirror;
}
private static void dupError(
final String annotationAsStr,
final TypeAnnotationMirror mirror,
final String fileName,
final String fullNameNoGenerics
)
{
Messager.assertFail(
"There have been multiple placements of Type-Annotation " +
'[' + BCYAN + '@' + mirror.getAnnotationName() + RESET + "] which have been placed " +
"on type [" + BGREEN + fullNameNoGenerics + RESET + "]:\n" +
MsgPrintTools.annotationAsStr(annotationAsStr) +
"and:\n" +
MsgPrintTools.annotationAsStr(mirror.getAnnotationAsString()) +
"Found in File:\n" +
MsgPrintTools.fileName(fileName) + '\n' +
MsgPrintTools.annotationProcessingError(),
JDUAnnotations.TypeAnnotationMirrors
);
}
}
|