Skip to content

Commit 1f2e9d9

Browse files
committed
Merge pull request androidannotations#1782 from dodgex/1750_fix_disabling_annotations
Fix disabling annotations
2 parents ccbec01 + 775d5dd commit 1f2e9d9

7 files changed

Lines changed: 36 additions & 11 deletions

File tree

‎AndroidAnnotations/androidannotations-core/androidannotations/src/main/java/org/androidannotations/handler/AnnotationHandler.java‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,4 +27,6 @@ public interface AnnotationHandler<T extends GeneratedClassHolder> {
2727
ElementValidation validate(Element element);
2828

2929
void process(Element element, T holder) throws Exception;
30+
31+
boolean isEnabled();
3032
}

‎AndroidAnnotations/androidannotations-core/androidannotations/src/main/java/org/androidannotations/handler/BaseAnnotationHandler.java‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,10 @@ public ElementValidation validate(Element element) {
6666
return validation;
6767
}
6868

69+
public boolean isEnabled() {
70+
return true;
71+
}
72+
6973
protected abstract void validate(Element element, ElementValidation validation);
7074

7175
protected AndroidAnnotationsEnvironment getEnvironment() {

‎AndroidAnnotations/androidannotations-core/androidannotations/src/main/java/org/androidannotations/internal/core/CorePlugin.java‎

Lines changed: 5 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,7 @@
9494
import org.androidannotations.internal.core.handler.ServiceActionHandler;
9595
import org.androidannotations.internal.core.handler.SharedPrefHandler;
9696
import org.androidannotations.internal.core.handler.SupposeBackgroundHandler;
97+
import org.androidannotations.internal.core.handler.SupposeThreadHandler;
9798
import org.androidannotations.internal.core.handler.SupposeUiThreadHandler;
9899
import org.androidannotations.internal.core.handler.SystemServiceHandler;
99100
import org.androidannotations.internal.core.handler.TextChangeHandler;
@@ -112,17 +113,14 @@ public class CorePlugin extends AndroidAnnotationsPlugin {
112113

113114
private static final String NAME = "AndroidAnnotations";
114115

115-
private static final Option OPTION_TRACE = new Option("trace", "false");
116-
private static final Option OPTION_THREAD_CONTROL = new Option("threadControl", "true");
117-
118116
@Override
119117
public String getName() {
120118
return NAME;
121119
}
122120

123121
@Override
124122
public List<Option> getSupportedOptions() {
125-
return Arrays.asList(OPTION_TRACE, OPTION_THREAD_CONTROL);
123+
return Arrays.asList(TraceHandler.OPTION_TRACE, SupposeThreadHandler.OPTION_THREAD_CONTROL);
126124
}
127125

128126
@Override
@@ -219,9 +217,7 @@ public List<AnnotationHandler<?>> getHandlers(AndroidAnnotationsEnvironment andr
219217
annotationHandlers.add(new PreferenceClickHandler(androidAnnotationEnv));
220218
annotationHandlers.add(new AfterPreferencesHandler(androidAnnotationEnv));
221219

222-
if (androidAnnotationEnv.getOptionBooleanValue(OPTION_TRACE)) {
223-
annotationHandlers.add(new TraceHandler(androidAnnotationEnv));
224-
}
220+
annotationHandlers.add(new TraceHandler(androidAnnotationEnv));
225221

226222
/*
227223
* WakeLockHandler must be after TraceHandler but before UiThreadHandler
@@ -240,10 +236,8 @@ public List<AnnotationHandler<?>> getHandlers(AndroidAnnotationsEnvironment andr
240236
* SupposeUiThreadHandler and SupposeBackgroundHandler must be after all
241237
* handlers that modifies generated method body
242238
*/
243-
if (androidAnnotationEnv.getOptionBooleanValue(OPTION_THREAD_CONTROL)) {
244-
annotationHandlers.add(new SupposeUiThreadHandler(androidAnnotationEnv));
245-
annotationHandlers.add(new SupposeBackgroundHandler(androidAnnotationEnv));
246-
}
239+
annotationHandlers.add(new SupposeUiThreadHandler(androidAnnotationEnv));
240+
annotationHandlers.add(new SupposeBackgroundHandler(androidAnnotationEnv));
247241

248242
return annotationHandlers;
249243
}

‎AndroidAnnotations/androidannotations-core/androidannotations/src/main/java/org/androidannotations/internal/core/handler/SupposeThreadHandler.java‎

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,15 +19,23 @@
1919

2020
import org.androidannotations.AndroidAnnotationsEnvironment;
2121
import org.androidannotations.ElementValidation;
22+
import org.androidannotations.Option;
2223
import org.androidannotations.handler.BaseAnnotationHandler;
2324
import org.androidannotations.holder.EComponentHolder;
2425

2526
public abstract class SupposeThreadHandler extends BaseAnnotationHandler<EComponentHolder> {
2627

28+
public static final Option OPTION_THREAD_CONTROL = new Option("threadControl", "true");
29+
2730
public SupposeThreadHandler(Class<?> targetClass, AndroidAnnotationsEnvironment environment) {
2831
super(targetClass, environment);
2932
}
3033

34+
@Override
35+
public boolean isEnabled() {
36+
return getEnvironment().getOptionBooleanValue(OPTION_THREAD_CONTROL);
37+
}
38+
3139
@Override
3240
protected void validate(Element element, ElementValidation valid) {
3341
validatorHelper.enclosingElementHasEnhancedComponentAnnotation(element, valid);

‎AndroidAnnotations/androidannotations-core/androidannotations/src/main/java/org/androidannotations/internal/core/handler/TraceHandler.java‎

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030

3131
import org.androidannotations.AndroidAnnotationsEnvironment;
3232
import org.androidannotations.ElementValidation;
33+
import org.androidannotations.Option;
3334
import org.androidannotations.annotations.Trace;
3435
import org.androidannotations.handler.BaseAnnotationHandler;
3536
import org.androidannotations.holder.EComponentHolder;
@@ -48,10 +49,17 @@
4849

4950
public class TraceHandler extends BaseAnnotationHandler<EComponentHolder> {
5051

52+
public static final Option OPTION_TRACE = new Option("trace", "false");
53+
5154
public TraceHandler(AndroidAnnotationsEnvironment environment) {
5255
super(Trace.class, environment);
5356
}
5457

58+
@Override
59+
public boolean isEnabled() {
60+
return getEnvironment().getOptionBooleanValue(OPTION_TRACE);
61+
}
62+
5563
@Override
5664
public void validate(Element element, ElementValidation validation) {
5765
validatorHelper.enclosingElementHasEnhancedComponentAnnotation(element, validation);

‎AndroidAnnotations/androidannotations-core/androidannotations/src/main/java/org/androidannotations/internal/process/ModelProcessor.java‎

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,9 @@ public ProcessResult process(AnnotationElements validatedModel) throws Exception
7979
LOGGER.info("Processing enclosed elements");
8080

8181
for (AnnotationHandler annotationHandler : environment.getDecoratingHandlers()) {
82+
if (!annotationHandler.isEnabled()) {
83+
continue;
84+
}
8285
String annotationName = annotationHandler.getTarget();
8386

8487
/*
@@ -167,6 +170,9 @@ private boolean isAbstractClass(Element annotatedElement) {
167170
private boolean generateElements(AnnotationElements validatedModel, ProcessHolder processHolder) throws Exception {
168171
boolean isElementRemaining = false;
169172
for (GeneratingAnnotationHandler generatingAnnotationHandler : environment.getGeneratingHandlers()) {
173+
if (!generatingAnnotationHandler.isEnabled()) {
174+
continue;
175+
}
170176
String annotationName = generatingAnnotationHandler.getTarget();
171177
Set<? extends Element> annotatedElements = validatedModel.getRootAnnotatedElements(annotationName);
172178

‎AndroidAnnotations/androidannotations-core/androidannotations/src/main/java/org/androidannotations/internal/process/ModelValidator.java‎

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,9 @@ public AnnotationElements validate(AnnotationElements extractedModel, Annotation
5353
*/
5454

5555
for (AnnotationHandler annotationHandler : environment.getHandlers()) {
56+
if (!annotationHandler.isEnabled()) {
57+
continue;
58+
}
5659
String validatorSimpleName = annotationHandler.getClass().getSimpleName();
5760
String annotationName = annotationHandler.getTarget();
5861

0 commit comments

Comments
 (0)