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

Commit 2671eebc 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
Merged-In: I45cf318778dbc8820a41237afefc4a6ee650b5a1
parent e74cf64e
Loading
Loading
Loading
Loading
+48 −27
Original line number Diff line number Diff line
@@ -24,9 +24,10 @@ import com.github.javaparser.ParseProblemException
import com.github.javaparser.ParserConfiguration
import com.github.javaparser.StaticJavaParser
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.AssignExpr
import com.github.javaparser.ast.expr.FieldAccessExpr
import com.github.javaparser.ast.expr.MethodCallExpr
import com.github.javaparser.ast.expr.NameExpr
@@ -34,7 +35,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
@@ -180,6 +184,7 @@ object ProtoLogTool {
        groups: Map<String, LogGroup>,
        protoLogGroupsClassName: String
    ) {
        var needsCreateLogGroupsMap = false
        classDeclaration.fields.forEach { field ->
            field.getAnnotationByClass(ProtoLogToolInjected::class.java)
                    .ifPresent { annotationExpr ->
@@ -207,38 +212,54 @@ object ProtoLogTool {
                                            } ?: NullLiteralExpr())
                                }
                                ProtoLogToolInjected.Value.LOG_GROUPS.name -> {
                                    val initializerBlockStmt = BlockStmt()
                                    needsCreateLogGroupsMap = true
                                    field.setFinal(true)
                                    field.variables.first().setInitializer(
                                        MethodCallExpr().setName("createLogGroupsMap"))
                                }
                                else -> error("Unhandled ProtoLogToolInjected value: $valueName.")
                            }
                        }
                    }
        }

        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) {
                                        initializerBlockStmt.addStatement(
                                            MethodCallExpr()
                                                    .setName("put")
                                                    .setArguments(
                                                        NodeList(StringLiteralExpr(group.key),
                body.addStatement(
                    MethodCallExpr(
                        NameExpr("result"),
                        "put",
                        NodeList(
                                StringLiteralExpr(group.key),
                                FieldAccessExpr()
                                        .setScope(
                                            NameExpr(
                                                protoLogGroupsClassName
                                            ))
                                                                    .setName(group.value.name)))
                                        .setName(group.value.name)
                        )
                    )
                )
                                        group.key
            }
            body.addStatement(ReturnStmt(NameExpr("result")))

                                    val treeMapCreation = ObjectCreationExpr()
                                            .setType("TreeMap<String, IProtoLogGroup>")
                                            .setAnonymousClassBody(NodeList(
                                                InitializerDeclaration().setBody(
                                                    initializerBlockStmt
            val method = classDeclaration.addMethod(
                "createLogGroupsMap",
                Modifier.Keyword.PRIVATE,
                Modifier.Keyword.STATIC,
                Modifier.Keyword.FINAL
            )
                                            ))

                                    field.setFinal(true)
                                    field.variables.first().setInitializer(treeMapCreation)
                                }
                                else -> error("Unhandled ProtoLogToolInjected value: $valueName.")
                            }
                        }
                    }
            method.setType("TreeMap<String, IProtoLogGroup>")
            method.setBody(body)
        }
    }