1818import java .io .IOException ;
1919import java .io .PrintWriter ;
2020import java .io .StringWriter ;
21+ import java .util .Map ;
2122import java .util .Set ;
2223
2324import javax .annotation .processing .Messager ;
5152import com .googlecode .androidannotations .annotations .RoboGuice ;
5253import com .googlecode .androidannotations .annotations .SystemService ;
5354import com .googlecode .androidannotations .annotations .Touch ;
55+ import com .googlecode .androidannotations .annotations .Trace ;
5456import com .googlecode .androidannotations .annotations .Transactional ;
5557import com .googlecode .androidannotations .annotations .UiThread ;
5658import com .googlecode .androidannotations .annotations .UiThreadDelayed ;
118120import com .googlecode .androidannotations .processing .SharedPrefProcessor ;
119121import com .googlecode .androidannotations .processing .SystemServiceProcessor ;
120122import com .googlecode .androidannotations .processing .TouchProcessor ;
123+ import com .googlecode .androidannotations .processing .TraceProcessor ;
121124import com .googlecode .androidannotations .processing .TransactionalProcessor ;
122125import com .googlecode .androidannotations .processing .UiThreadDelayedProcessor ;
123126import com .googlecode .androidannotations .processing .UiThreadProcessor ;
159162import com .googlecode .androidannotations .validation .SharedPrefValidator ;
160163import com .googlecode .androidannotations .validation .SystemServiceValidator ;
161164import com .googlecode .androidannotations .validation .TouchValidator ;
165+ import com .googlecode .androidannotations .validation .TraceValidator ;
162166import com .googlecode .androidannotations .validation .TransactionalValidator ;
163167import com .googlecode .androidannotations .validation .ViewByIdValidator ;
164168import com .googlecode .androidannotations .validation .rest .AcceptValidator ;
222226 HtmlRes .class , //
223227 NoTitle .class , //
224228 Fullscreen .class , //
225- RestService .class //
229+ RestService .class , //
230+ Trace .class //
226231})
227232@ SupportedSourceVersion (SourceVersion .RELEASE_6 )
228233public class AndroidAnnotationProcessor extends AnnotatedAbstractProcessor {
@@ -348,9 +353,6 @@ private ModelValidator buildModelValidator(IRClass rClass, AndroidSystemServices
348353 for (AndroidRes androidRes : AndroidRes .values ()) {
349354 modelValidator .register (new ResValidator (androidRes , processingEnv , rClass ));
350355 }
351- modelValidator .register (new RunnableValidator (UiThreadDelayed .class , processingEnv ));
352- modelValidator .register (new RunnableValidator (UiThread .class , processingEnv ));
353- modelValidator .register (new RunnableValidator (Background .class , processingEnv ));
354356 modelValidator .register (new TransactionalValidator (processingEnv ));
355357 modelValidator .register (new ExtraValidator (processingEnv ));
356358 modelValidator .register (new SystemServiceValidator (processingEnv , androidSystemServices ));
@@ -372,9 +374,25 @@ private ModelValidator buildModelValidator(IRClass rClass, AndroidSystemServices
372374 modelValidator .register (new NoTitleValidator (processingEnv ));
373375 modelValidator .register (new FullscreenValidator (processingEnv ));
374376 modelValidator .register (new RestServiceValidator (processingEnv ));
377+ modelValidator .register (new RunnableValidator (UiThreadDelayed .class , processingEnv ));
378+ modelValidator .register (new RunnableValidator (UiThread .class , processingEnv ));
379+ modelValidator .register (new RunnableValidator (Background .class , processingEnv ));
380+ if (traceActivated ()) {
381+ modelValidator .register (new TraceValidator (processingEnv ));
382+ }
375383 return modelValidator ;
376384 }
377385
386+ private boolean traceActivated () {
387+ Map <String , String > options = processingEnv .getOptions ();
388+ if (options .containsKey ("trace" )) {
389+ String trace = options .get ("trace" );
390+ return !"false" .equals (trace );
391+ } else {
392+ return true ;
393+ }
394+ }
395+
378396 private JCodeModel processAnnotations (AnnotationElements validatedModel , IRClass rClass , AndroidSystemServices androidSystemServices , AndroidManifest androidManifest ) {
379397 timeStats .start ("Process Annotations" );
380398 ModelProcessor modelProcessor = buildModelProcessor (rClass , androidSystemServices , androidManifest );
@@ -401,9 +419,6 @@ private ModelProcessor buildModelProcessor(IRClass rClass, AndroidSystemServices
401419 for (AndroidRes androidRes : AndroidRes .values ()) {
402420 modelProcessor .register (new ResProcessor (androidRes , rClass ));
403421 }
404- modelProcessor .register (new UiThreadProcessor ());
405- modelProcessor .register (new UiThreadDelayedProcessor ());
406- modelProcessor .register (new BackgroundProcessor ());
407422 modelProcessor .register (new TransactionalProcessor ());
408423 modelProcessor .register (new ExtraProcessor ());
409424 modelProcessor .register (new SystemServiceProcessor (androidSystemServices ));
@@ -423,6 +438,10 @@ private ModelProcessor buildModelProcessor(IRClass rClass, AndroidSystemServices
423438 modelProcessor .register (new NoTitleProcessor ());
424439 modelProcessor .register (new FullscreenProcessor ());
425440 modelProcessor .register (new RestServiceProcessor ());
441+ modelProcessor .register (new TraceProcessor ());
442+ modelProcessor .register (new UiThreadProcessor ());
443+ modelProcessor .register (new UiThreadDelayedProcessor ());
444+ modelProcessor .register (new BackgroundProcessor ());
426445 return modelProcessor ;
427446 }
428447
0 commit comments