Loading tools/protologtool/src/com/android/protolog/tool/ProtoLogTool.kt +46 −27 Original line number Diff line number Diff line Loading @@ -27,7 +27,6 @@ import com.github.javaparser.ast.CompilationUnit import com.github.javaparser.ast.Modifier import com.github.javaparser.ast.NodeList import com.github.javaparser.ast.body.ClassOrInterfaceDeclaration import com.github.javaparser.ast.body.InitializerDeclaration import com.github.javaparser.ast.expr.ArrayAccessExpr import com.github.javaparser.ast.expr.ArrayCreationExpr import com.github.javaparser.ast.expr.ArrayInitializerExpr Loading @@ -43,7 +42,10 @@ import com.github.javaparser.ast.expr.NullLiteralExpr import com.github.javaparser.ast.expr.ObjectCreationExpr import com.github.javaparser.ast.expr.SimpleName import com.github.javaparser.ast.expr.StringLiteralExpr import com.github.javaparser.ast.expr.VariableDeclarationExpr import com.github.javaparser.ast.stmt.BlockStmt import com.github.javaparser.ast.stmt.ReturnStmt import com.github.javaparser.ast.type.ClassOrInterfaceType import java.io.File import java.io.FileInputStream import java.io.FileNotFoundException Loading Loading @@ -194,6 +196,7 @@ object ProtoLogTool { groups: Map<String, LogGroup>, protoLogGroupsClassName: String ) { var needsCreateLogGroupsMap = false classDeclaration.fields.forEach { field -> field.getAnnotationByClass(ProtoLogToolInjected::class.java) .ifPresent { annotationExpr -> Loading Loading @@ -221,33 +224,10 @@ object ProtoLogTool { } ?: NullLiteralExpr()) } ProtoLogToolInjected.Value.LOG_GROUPS.name -> { val initializerBlockStmt = BlockStmt() for (group in groups) { initializerBlockStmt.addStatement( MethodCallExpr() .setName("put") .setArguments( NodeList(StringLiteralExpr(group.key), FieldAccessExpr() .setScope( NameExpr( protoLogGroupsClassName )) .setName(group.value.name))) ) group.key } val treeMapCreation = ObjectCreationExpr() .setType("TreeMap<String, IProtoLogGroup>") .setAnonymousClassBody(NodeList( InitializerDeclaration().setBody( initializerBlockStmt ) )) needsCreateLogGroupsMap = true field.setFinal(true) field.variables.first().setInitializer(treeMapCreation) field.variables.first().setInitializer( MethodCallExpr().setName("createLogGroupsMap")) } ProtoLogToolInjected.Value.CACHE_UPDATER.name -> { field.setFinal(true) Loading @@ -260,6 +240,45 @@ object ProtoLogTool { } } } if (needsCreateLogGroupsMap) { val body = BlockStmt() body.addStatement(AssignExpr( VariableDeclarationExpr( ClassOrInterfaceType("TreeMap<String, IProtoLogGroup>"), "result" ), ObjectCreationExpr().setType("TreeMap<String, IProtoLogGroup>"), AssignExpr.Operator.ASSIGN )) for (group in groups) { body.addStatement( MethodCallExpr( NameExpr("result"), "put", NodeList( StringLiteralExpr(group.key), FieldAccessExpr() .setScope( NameExpr( protoLogGroupsClassName )) .setName(group.value.name) ) ) ) } body.addStatement(ReturnStmt(NameExpr("result"))) val method = classDeclaration.addMethod( "createLogGroupsMap", Modifier.Keyword.PRIVATE, Modifier.Keyword.STATIC, Modifier.Keyword.FINAL ) method.setType("TreeMap<String, IProtoLogGroup>") method.setBody(body) } } private fun injectCacheClass( Loading Loading
tools/protologtool/src/com/android/protolog/tool/ProtoLogTool.kt +46 −27 Original line number Diff line number Diff line Loading @@ -27,7 +27,6 @@ import com.github.javaparser.ast.CompilationUnit import com.github.javaparser.ast.Modifier import com.github.javaparser.ast.NodeList import com.github.javaparser.ast.body.ClassOrInterfaceDeclaration import com.github.javaparser.ast.body.InitializerDeclaration import com.github.javaparser.ast.expr.ArrayAccessExpr import com.github.javaparser.ast.expr.ArrayCreationExpr import com.github.javaparser.ast.expr.ArrayInitializerExpr Loading @@ -43,7 +42,10 @@ import com.github.javaparser.ast.expr.NullLiteralExpr import com.github.javaparser.ast.expr.ObjectCreationExpr import com.github.javaparser.ast.expr.SimpleName import com.github.javaparser.ast.expr.StringLiteralExpr import com.github.javaparser.ast.expr.VariableDeclarationExpr import com.github.javaparser.ast.stmt.BlockStmt import com.github.javaparser.ast.stmt.ReturnStmt import com.github.javaparser.ast.type.ClassOrInterfaceType import java.io.File import java.io.FileInputStream import java.io.FileNotFoundException Loading Loading @@ -194,6 +196,7 @@ object ProtoLogTool { groups: Map<String, LogGroup>, protoLogGroupsClassName: String ) { var needsCreateLogGroupsMap = false classDeclaration.fields.forEach { field -> field.getAnnotationByClass(ProtoLogToolInjected::class.java) .ifPresent { annotationExpr -> Loading Loading @@ -221,33 +224,10 @@ object ProtoLogTool { } ?: NullLiteralExpr()) } ProtoLogToolInjected.Value.LOG_GROUPS.name -> { val initializerBlockStmt = BlockStmt() for (group in groups) { initializerBlockStmt.addStatement( MethodCallExpr() .setName("put") .setArguments( NodeList(StringLiteralExpr(group.key), FieldAccessExpr() .setScope( NameExpr( protoLogGroupsClassName )) .setName(group.value.name))) ) group.key } val treeMapCreation = ObjectCreationExpr() .setType("TreeMap<String, IProtoLogGroup>") .setAnonymousClassBody(NodeList( InitializerDeclaration().setBody( initializerBlockStmt ) )) needsCreateLogGroupsMap = true field.setFinal(true) field.variables.first().setInitializer(treeMapCreation) field.variables.first().setInitializer( MethodCallExpr().setName("createLogGroupsMap")) } ProtoLogToolInjected.Value.CACHE_UPDATER.name -> { field.setFinal(true) Loading @@ -260,6 +240,45 @@ object ProtoLogTool { } } } if (needsCreateLogGroupsMap) { val body = BlockStmt() body.addStatement(AssignExpr( VariableDeclarationExpr( ClassOrInterfaceType("TreeMap<String, IProtoLogGroup>"), "result" ), ObjectCreationExpr().setType("TreeMap<String, IProtoLogGroup>"), AssignExpr.Operator.ASSIGN )) for (group in groups) { body.addStatement( MethodCallExpr( NameExpr("result"), "put", NodeList( StringLiteralExpr(group.key), FieldAccessExpr() .setScope( NameExpr( protoLogGroupsClassName )) .setName(group.value.name) ) ) ) } body.addStatement(ReturnStmt(NameExpr("result"))) val method = classDeclaration.addMethod( "createLogGroupsMap", Modifier.Keyword.PRIVATE, Modifier.Keyword.STATIC, Modifier.Keyword.FINAL ) method.setType("TreeMap<String, IProtoLogGroup>") method.setBody(body) } } private fun injectCacheClass( Loading