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

Commit 2d0888c8 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

parents 490e264e 2be985df
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;
}