Skip to content

Commit fe9a8b5

Browse files
committed
Implementing Enter in Trace, and implementing a way to disable all traces with processor argument trace=false
1 parent dae39a3 commit fe9a8b5

5 files changed

Lines changed: 43 additions & 19 deletions

File tree

‎AndroidAnnotations/androidannotations/src/main/java/com/googlecode/androidannotations/AndroidAnnotationProcessor.java‎

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import java.io.IOException;
1919
import java.io.PrintWriter;
2020
import java.io.StringWriter;
21+
import java.util.Map;
2122
import java.util.Set;
2223

2324
import javax.annotation.processing.Messager;
@@ -371,10 +372,22 @@ private ModelValidator buildModelValidator(IRClass rClass, AndroidSystemServices
371372
modelValidator.register(new RunnableValidator(UiThreadDelayed.class, processingEnv));
372373
modelValidator.register(new RunnableValidator(UiThread.class, processingEnv));
373374
modelValidator.register(new RunnableValidator(Background.class, processingEnv));
374-
modelValidator.register(new TraceValidator(processingEnv));
375+
if (traceActivated()) {
376+
modelValidator.register(new TraceValidator(processingEnv));
377+
}
375378
return modelValidator;
376379
}
377380

381+
private boolean traceActivated() {
382+
Map<String, String> options = processingEnv.getOptions();
383+
if (options.containsKey("trace")) {
384+
String trace = options.get("trace");
385+
return !"false".equals(trace);
386+
} else {
387+
return true;
388+
}
389+
}
390+
378391
private JCodeModel processAnnotations(AnnotationElements validatedModel, IRClass rClass, AndroidSystemServices androidSystemServices, AndroidManifest androidManifest) {
379392
timeStats.start("Process Annotations");
380393
ModelProcessor modelProcessor = buildModelProcessor(rClass, androidSystemServices, androidManifest);

‎AndroidAnnotations/androidannotations/src/main/java/com/googlecode/androidannotations/processing/TraceProcessor.java‎

Lines changed: 24 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -57,38 +57,48 @@ public void process(Element element, JCodeModel codeModel, EBeansHolder activiti
5757
JClass systemClass = holder.refClass(System.class);
5858

5959
JMethod method = helper.overrideAnnotatedMethod(executableElement, holder);
60-
60+
6161
JBlock previousMethodBody = helper.removeBody(method);
6262

6363
JBlock methodBody = method.body();
64-
64+
6565
JInvocation isLoggableInvocation = logClass.staticInvoke("isLoggable");
6666
isLoggableInvocation.arg(JExpr.lit(tag)).arg(logLevelFromInt(level, logClass));
6767

6868
JConditional ifStatement = methodBody._if(isLoggableInvocation);
6969

7070
JInvocation currentTimeInvoke = systemClass.staticInvoke("currentTimeMillis");
71-
JVar startDeclaration = ifStatement._then().decl(codeModel.LONG, "start", currentTimeInvoke);
71+
JBlock _thenBody = ifStatement._then();
72+
JVar startDeclaration = _thenBody.decl(codeModel.LONG, "start", currentTimeInvoke);
73+
74+
String methodName = "[" + element.toString() + "]";
75+
76+
// Log In
77+
String logMethodName = logMethodNameFromLevel(level);
78+
JInvocation logEnterInvoke = logClass.staticInvoke(logMethodName);
79+
logEnterInvoke.arg(tag);
80+
81+
JExpression enterMessage = JExpr.lit("Entering " + methodName);
82+
logEnterInvoke.arg(enterMessage);
83+
_thenBody.add(logEnterInvoke);
84+
85+
JTryBlock tryBlock = _thenBody._try();
7286

73-
JTryBlock tryBlock = ifStatement._then()._try();
74-
7587
tryBlock.body().add(previousMethodBody);
76-
88+
7789
JBlock finallyBlock = tryBlock._finally();
7890

7991
JVar durationDeclaration = finallyBlock.decl(codeModel.LONG, "duration", currentTimeInvoke.minus(startDeclaration));
8092

81-
String logMethodString = logMethodNameFromLevel(level);
82-
JInvocation logInvoke = logClass.staticInvoke(logMethodString);
83-
logInvoke.arg(tag);
93+
JInvocation logExitInvoke = logClass.staticInvoke(logMethodName);
94+
logExitInvoke.arg(tag);
8495

85-
String methodName = element.getSimpleName().toString();
86-
JExpression message = JExpr.lit("out " + methodName + ", duration in ms: ").plus(durationDeclaration);
87-
logInvoke.arg(message);
88-
finallyBlock.add(logInvoke);
96+
JExpression exitMessage = JExpr.lit("Exiting " + methodName + ", duration in ms: ").plus(durationDeclaration);
97+
logExitInvoke.arg(exitMessage);
98+
finallyBlock.add(logExitInvoke);
8999

90100
JBlock elseBlock = ifStatement._else();
91-
101+
92102
elseBlock.add(previousMethodBody);
93103
}
94104

‎AndroidAnnotations/androidannotations/src/main/java/com/googlecode/androidannotations/validation/TraceValidator.java‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727

2828
public class TraceValidator implements ElementValidator {
2929

30-
private ValidatorHelper validatorHelper;
30+
private final ValidatorHelper validatorHelper;
3131

3232
public TraceValidator(ProcessingEnvironment processingEnv) {
3333
TargetAnnotationHelper annotationHelper = new TargetAnnotationHelper(processingEnv, getTarget());
@@ -41,7 +41,7 @@ public Class<? extends Annotation> getTarget() {
4141

4242
@Override
4343
public boolean validate(Element element, AnnotationElements validatedElements) {
44-
44+
4545
IsValid valid = new IsValid();
4646

4747
validatorHelper.enclosingElementHasEActivity(element, validatedElements, valid);
Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
1-
#Mon Apr 18 14:25:10 CEST 2011
1+
#Fri Nov 25 11:25:35 CET 2011
22
eclipse.preferences.version=1
33
org.eclipse.jdt.apt.aptEnabled=true
44
org.eclipse.jdt.apt.genSrcDir=.apt_generated
5+
org.eclipse.jdt.apt.processorOptions/trace=true
56
org.eclipse.jdt.apt.reconcileEnabled=true

‎AndroidAnnotations/functional-test-1-5/src/main/java/com/googlecode/androidannotations/test15/TracedActivity.java‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929

3030
@EActivity
3131
public class TracedActivity extends Activity {
32-
32+
3333
public boolean tracedMethodCalled = false;
3434
public boolean voidTracedMethodCalled = false;
3535
public boolean voidTracedMethodDebugCalled = false;

0 commit comments

Comments
 (0)