Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 165f646b authored by Cole Faust's avatar Cole Faust
Browse files

Fix DoubleBraceInitialization errorprone issues

https://errorprone.info/bugpattern/DoubleBraceInitialization

Flag: EXEMPT refactor
Bug: 253827323
Test: m RUN_ERROR_PRONE=true javac-check
Change-Id: I45cf318778dbc8820a41237afefc4a6ee650b5a1
parent 5548dfc3
Loading
Loading
Loading
Loading
+46 −27
Original line number Diff line number Diff line
@@ -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
@@ -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
@@ -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 ->
@@ -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)
@@ -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(