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

Commit 2be985df authored by Yiming Pan's avatar Yiming Pan Committed by Gerrit Code Review
Browse files

Merge "Change API format in the map file." into main

parents 52553bec 090155e8
Loading
Loading
Loading
Loading
+34 −26
Original line number Diff line number Diff line
@@ -23,9 +23,10 @@ import java.io.FileWriter
/** Usage: extract-flagged-apis <api text file> <output .pb file> */
fun main(args: Array<String>) {
    var cb = ApiFile.parseApi(listOf(File(args[0])))
    val flagToApi = mutableMapOf<String, MutableList<String>>()
    cb.getPackages()
        .allClasses()
    var builder = FlagApiMap.newBuilder()
    for (pkg in cb.getPackages().packages) {
        var packageName = pkg.qualifiedName()
        pkg.allClasses()
            .filter { it.methods().size > 0 }
            .forEach {
                for (method in it.methods()) {
@@ -36,22 +37,29 @@ fun main(args: Array<String>) {
                            ?.value
                            ?.value()
                    if (flagValue != null && flagValue is String) {
                    val methodQualifiedName = "${it.qualifiedName()}.${method.name()}"
                    if (flagToApi.containsKey(flagValue)) {
                        flagToApi.get(flagValue)?.add(methodQualifiedName)
                    } else {
                        flagToApi.put(flagValue, mutableListOf(methodQualifiedName))
                        var api =
                            JavaMethod.newBuilder()
                                .setPackageName(packageName)
                                .setClassName(it.fullName())
                                .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()
    FileWriter(args[1]).use { it.write(flagApiMap.toString()) }
+6 −3
Original line number Diff line number Diff line
@@ -25,10 +25,13 @@ message FlagApiMap {
}

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

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