Skip to content
This repository was archived by the owner on Feb 26, 2023. It is now read-only.

Commit b49ca79

Browse files
committed
Fix possible repeated SuppressWarning with @eview
In case of @Eviews, we add a @SuppressWarnings annotation to the class. Since we also copy annotations from the annotated class, this can result in repeated annotations. This commit fixes the issue by only adding the annotation (or an annotation array member) if needed.
1 parent d4a6b8c commit b49ca79

1 file changed

Lines changed: 39 additions & 8 deletions

File tree

  • AndroidAnnotations/androidannotations/src/main/java/org/androidannotations/holder

‎AndroidAnnotations/androidannotations/src/main/java/org/androidannotations/holder/EViewHolder.java‎

Lines changed: 39 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -15,19 +15,33 @@
1515
*/
1616
package org.androidannotations.holder;
1717

18-
import com.sun.codemodel.*;
19-
import org.androidannotations.process.ProcessHolder;
18+
import static com.sun.codemodel.JExpr.invoke;
19+
import static com.sun.codemodel.JMod.PRIVATE;
20+
import static com.sun.codemodel.JMod.PUBLIC;
21+
import static com.sun.codemodel.JMod.STATIC;
22+
import static javax.lang.model.element.ElementKind.CONSTRUCTOR;
23+
24+
import java.util.ArrayList;
25+
import java.util.Collection;
26+
import java.util.List;
2027

2128
import javax.lang.model.element.Element;
2229
import javax.lang.model.element.ExecutableElement;
2330
import javax.lang.model.element.TypeElement;
2431
import javax.lang.model.element.VariableElement;
25-
import java.util.ArrayList;
26-
import java.util.List;
2732

28-
import static com.sun.codemodel.JExpr.invoke;
29-
import static com.sun.codemodel.JMod.*;
30-
import static javax.lang.model.element.ElementKind.CONSTRUCTOR;
33+
import org.androidannotations.process.ProcessHolder;
34+
35+
import com.sun.codemodel.JAnnotationArrayMember;
36+
import com.sun.codemodel.JAnnotationUse;
37+
import com.sun.codemodel.JBlock;
38+
import com.sun.codemodel.JClass;
39+
import com.sun.codemodel.JExpr;
40+
import com.sun.codemodel.JFieldVar;
41+
import com.sun.codemodel.JInvocation;
42+
import com.sun.codemodel.JMethod;
43+
import com.sun.codemodel.JType;
44+
import com.sun.codemodel.JVar;
3145

3246
public class EViewHolder extends EComponentWithViewSupportHolder {
3347

@@ -56,8 +70,25 @@ public EViewHolder(ProcessHolder processHolder, TypeElement annotatedElement) th
5670
}
5771

5872
private void addSuppressWarning() {
59-
generatedClass.annotate(SuppressWarnings.class).param("value", "unused");
6073
generatedClass.javadoc().append(SUPPRESS_WARNING_COMMENT);
74+
75+
Collection<JAnnotationUse> annotations = getGeneratedClass().annotations();
76+
for (JAnnotationUse annotationUse : annotations) {
77+
if (annotationUse.getAnnotationClass().fullName().equals(SuppressWarnings.class.getCanonicalName())) {
78+
JAnnotationArrayMember value = (JAnnotationArrayMember) annotationUse.getAnnotationMembers().get("value");
79+
80+
for (String v : getAnnotatedElement().getAnnotation(SuppressWarnings.class).value()) {
81+
if (v.equals("unused")) {
82+
return;
83+
}
84+
}
85+
86+
value.param("unused");
87+
return;
88+
}
89+
}
90+
91+
generatedClass.annotate(SuppressWarnings.class).param("value", "unused");
6192
}
6293

6394
private void createConstructorAndBuilder() {

0 commit comments

Comments
 (0)