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

Commit 4b8ca6a7 authored by Yiming Pan's avatar Yiming Pan Committed by Automerger Merge Worker
Browse files

Merge "Change API format in the map file." into main am: 2be985df am: 2d0888c8

parents 15cd320c 2d0888c8
Loading
Loading
Loading
Loading
+34 −26
Original line number Original line Diff line number Diff line
@@ -23,9 +23,10 @@ import java.io.FileWriter
/** Usage: extract-flagged-apis <api text file> <output .pb file> */
/** Usage: extract-flagged-apis <api text file> <output .pb file> */
fun main(args: Array<String>) {
fun main(args: Array<String>) {
    var cb = ApiFile.parseApi(listOf(File(args[0])))
    var cb = ApiFile.parseApi(listOf(File(args[0])))
    val flagToApi = mutableMapOf<String, MutableList<String>>()
    var builder = FlagApiMap.newBuilder()
    cb.getPackages()
    for (pkg in cb.getPackages().packages) {
        .allClasses()
        var packageName = pkg.qualifiedName()
        pkg.allClasses()
            .filter { it.methods().size > 0 }
            .filter { it.methods().size > 0 }
            .forEach {
            .forEach {
                for (method in it.methods()) {
                for (method in it.methods()) {
@@ -36,22 +37,29 @@ fun main(args: Array<String>) {
                            ?.value
                            ?.value
                            ?.value()
                            ?.value()
                    if (flagValue != null && flagValue is String) {
                    if (flagValue != null && flagValue is String) {
                    val methodQualifiedName = "${it.qualifiedName()}.${method.name()}"
                        var api =
                    if (flagToApi.containsKey(flagValue)) {
                            JavaMethod.newBuilder()
                        flagToApi.get(flagValue)?.add(methodQualifiedName)
                                .setPackageName(packageName)
                    } else {
                                .setClassName(it.fullName())
                        flagToApi.put(flagValue, mutableListOf(methodQualifiedName))
                                .setMethodName(method.name())
                        for (param in method.parameters()) {
                            api.addParameterTypes(param.type().toTypeString())
                        }
                        }
                        if (builder.containsFlagToApi(flagValue)) {
                            var updatedApis =
                                builder
                                    .getFlagToApiOrThrow(flagValue)
                                    .toBuilder()
                                    .addJavaMethods(api)
                                    .build()
                            builder.putFlagToApi(flagValue, updatedApis)
                        } else {
                            var apis = FlaggedApis.newBuilder().addJavaMethods(api).build()
                            builder.putFlagToApi(flagValue, apis)
                        }
                        }
                    }
                    }
                }
                }
    var builder = FlagApiMap.newBuilder()
    for (flag in flagToApi.keys) {
        var flaggedApis = FlaggedApis.newBuilder()
        for (method in flagToApi.get(flag).orEmpty()) {
            flaggedApis.addFlaggedApi(FlaggedApi.newBuilder().setQualifiedName(method))
            }
            }
        builder.putFlagToApi(flag, flaggedApis.build())
    }
    }
    val flagApiMap = builder.build()
    val flagApiMap = builder.build()
    FileWriter(args[1]).use { it.write(flagApiMap.toString()) }
    FileWriter(args[1]).use { it.write(flagApiMap.toString()) }
+6 −3
Original line number Original line Diff line number Diff line
@@ -25,10 +25,13 @@ message FlagApiMap {
}
}


message FlaggedApis {
message FlaggedApis {
  repeated FlaggedApi flagged_api = 1;
  repeated JavaMethod java_methods = 1;
}
}


message FlaggedApi {
message JavaMethod {
  string qualified_name = 1;
  string package_name = 1;
  string class_name = 2;
  string method_name = 3;
  repeated string parameter_types = 4;
}
}