28
28
29
29
class AnnotationType {
30
30
@ SuppressWarnings ("unchecked" )
31
- private StringBuilder render () {
32
- // FIXME: Use the StringBuilder from the caller.
33
- final StringBuilder b = new StringBuilder ();
34
- if (attributes .size () > 0 ) {
35
- for (final Map .Entry <String ,Object > entry : attributes .entrySet ()) { // [S]
36
- if (b .length () > 0 )
37
- b .append (", " );
38
-
39
- final String key = entry .getKey ();
40
- final Object value = entry .getValue ();
41
-
42
- final Method method = Classes .getMethod (annotationType , key );
43
- final Object defaultValue = method .getDefaultValue ();
44
- if (value instanceof List ) {
45
- final Object [] defaultArray = (Object [])defaultValue ;
46
- final List <Object > items = (List <Object >)value ;
47
- final int i$ = items .size ();
48
- if (defaultArray != null ) {
49
- if (i$ == 0 && defaultArray .length == 0 )
50
- continue ;
51
-
52
- if (defaultArray .equals (items .toArray ()))
53
- continue ;
54
- }
31
+ private void render (final StringBuilder b ) {
32
+ final int len = b .length ();
33
+ for (final Map .Entry <String ,Object > entry : attributes .entrySet ()) { // [S]
34
+ if (b .length () > len )
35
+ b .append (", " );
36
+
37
+ final String key = entry .getKey ();
38
+ final Object value = entry .getValue ();
39
+
40
+ final Method method = Classes .getMethod (annotationType , key );
41
+ final Object defaultValue = method .getDefaultValue ();
42
+ if (value instanceof List ) {
43
+ final Object [] defaultArray = (Object [])defaultValue ;
44
+ final List <Object > items = (List <Object >)value ;
45
+ final int i$ = items .size ();
46
+ if (defaultArray != null ) {
47
+ if (i$ == 0 && defaultArray .length == 0 )
48
+ continue ;
49
+
50
+ if (defaultArray .equals (items .toArray ()))
51
+ continue ;
52
+ }
55
53
56
- b .append (key ).append (" = " );
57
- if (i$ == 1 ) {
58
- b .append (items .get (0 ));
54
+ b .append (key ).append (" = " );
55
+ if (i$ == 1 ) {
56
+ b .append (items .get (0 ));
57
+ }
58
+ else {
59
+ b .append ('{' );
60
+ int i = 0 ;
61
+ if (CollectionUtil .isRandomAccess (items )) {
62
+ do { // [RA]
63
+ if (i > 0 )
64
+ b .append (", " );
65
+
66
+ b .append (items .get (i ));
67
+ }
68
+ while (++i < i$ );
59
69
}
60
70
else {
61
- b .append ('{' );
62
- if (CollectionUtil .isRandomAccess (items )) {
63
- int i = 0 ;
64
- do { // [RA]
65
- if (i > 0 )
66
- b .append (", " );
71
+ final Iterator <Object > it = items .iterator ();
72
+ do { // [I]
73
+ if (++i > 1 )
74
+ b .append (", " );
67
75
68
- b .append (items .get (i ));
69
- }
70
- while (++i < i$ );
76
+ b .append (it .next ());
71
77
}
72
- else {
73
- final Iterator <Object > it = items .iterator ();
74
- int j = 0 ;
75
- do { // [RA]
76
- if (j > 0 )
77
- b .append (", " );
78
-
79
- b .append (it .next ());
80
- }
81
- while (it .hasNext ());
82
- }
83
-
84
- b .append ('}' );
78
+ while (it .hasNext ());
85
79
}
80
+
81
+ b .append ('}' );
86
82
}
87
- else {
88
- final Object fixedDefaultValue = defaultValue != null && value instanceof String ? " \" " + defaultValue + " \" " : defaultValue ;
89
- if (! Objects . equals ( fixedDefaultValue , value ))
90
- b . append ( key ). append ( " = " ). append ( value );
91
- }
83
+ }
84
+ else {
85
+ final Object fixedDefaultValue = defaultValue != null && value instanceof String ? " \" " + defaultValue + " \" " : defaultValue ;
86
+ if (! Objects . equals ( fixedDefaultValue , value ))
87
+ b . append ( key ). append ( " = " ). append ( value );
92
88
}
93
89
}
94
-
95
- return b ;
96
90
}
97
91
98
92
private final Class <? extends Annotation > annotationType ;
@@ -107,8 +101,11 @@ private StringBuilder render() {
107
101
public String toString () {
108
102
final StringBuilder b = new StringBuilder ();
109
103
b .append ('@' ).append (annotationType .getName ());
110
- if (attributes .size () > 0 )
111
- b .append ('(' ).append (render ()).append (')' );
104
+ if (attributes .size () > 0 ) {
105
+ b .append ('(' );
106
+ render (b );
107
+ b .append (')' );
108
+ }
112
109
113
110
return b .toString ();
114
111
}
0 commit comments