Loading api/coverage/tools/ExtractFlaggedApis.kt +34 −26 Original line number Original line Diff line number Diff line Loading @@ -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()) { Loading @@ -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()) } Loading api/coverage/tools/extract_flagged_apis.proto +6 −3 Original line number Original line Diff line number Diff line Loading @@ -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; } } Loading
api/coverage/tools/ExtractFlaggedApis.kt +34 −26 Original line number Original line Diff line number Diff line Loading @@ -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()) { Loading @@ -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()) } Loading
api/coverage/tools/extract_flagged_apis.proto +6 −3 Original line number Original line Diff line number Diff line Loading @@ -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; } }