diff --git a/java/java.go b/java/java.go index 3c6d8484e..25b6349bf 100644 --- a/java/java.go +++ b/java/java.go @@ -1552,8 +1552,8 @@ type JavaApiLibraryProperties struct { // name of the API surface Api_surface *string - // list of API provider modules that consists this API surface - Api_providers []string + // list of Java API contribution modules that consists this API surface + Api_contributions []string // List of flags to be passed to the javac compiler to generate jar file Javacflags []string @@ -1621,12 +1621,12 @@ func (al *ApiLibrary) stubsFlags(ctx android.ModuleContext, cmd *android.RuleBui } } -var javaApiProviderTag = dependencyTag{name: "java-api-provider"} +var javaApiContributionTag = dependencyTag{name: "java-api-contribution"} func (al *ApiLibrary) DepsMutator(ctx android.BottomUpMutatorContext) { - apiProviders := al.properties.Api_providers - for _, apiProviderName := range apiProviders { - ctx.AddDependency(ctx.Module(), javaApiProviderTag, apiProviderName) + apiContributions := al.properties.Api_contributions + for _, apiContributionName := range apiContributions { + ctx.AddDependency(ctx.Module(), javaApiContributionTag, apiContributionName) } } @@ -1645,16 +1645,11 @@ func (al *ApiLibrary) GenerateAndroidBuildActions(ctx android.ModuleContext) { homeDir := android.PathForModuleOut(ctx, "metalava", "home") - apiProviders := al.properties.Api_providers - srcFiles := make([]android.Path, len(apiProviders)) - for i, apiProviderName := range apiProviders { - apiProvider := ctx.GetDirectDepWithTag(apiProviderName, javaApiProviderTag) - if apiProvider == nil { - panic(fmt.Errorf("Java API provider module %s not found, called from %s", apiProviderName, al.Name())) - } - provider := ctx.OtherModuleProvider(apiProvider, JavaApiImportProvider).(JavaApiImportInfo) - srcFiles[i] = android.PathForModuleSrc(ctx, provider.ApiFile.String()) - } + var srcFiles []android.Path + ctx.VisitDirectDepsWithTag(javaApiContributionTag, func(dep android.Module) { + provider := ctx.OtherModuleProvider(dep, JavaApiImportProvider).(JavaApiImportInfo) + srcFiles = append(srcFiles, android.PathForModuleSrc(ctx, provider.ApiFile.String())) + }) cmd := metalavaStubCmd(ctx, rule, srcFiles, homeDir) diff --git a/java/java_test.go b/java/java_test.go index 3f8cd8e90..62c284595 100644 --- a/java/java_test.go +++ b/java/java_test.go @@ -1823,13 +1823,13 @@ func TestJavaApiLibraryAndProviderLink(t *testing.T) { java_api_library { name: "bar1", api_surface: "public", - api_providers: ["foo1"], + api_contributions: ["foo1"], } java_api_library { name: "bar2", api_surface: "system", - api_providers: ["foo1", "foo2"], + api_contributions: ["foo1", "foo2"], } `, map[string][]byte{ @@ -1876,13 +1876,13 @@ func TestJavaApiLibraryJarGeneration(t *testing.T) { java_api_library { name: "bar1", api_surface: "public", - api_providers: ["foo1"], + api_contributions: ["foo1"], } java_api_library { name: "bar2", api_surface: "system", - api_providers: ["foo1", "foo2"], + api_contributions: ["foo1", "foo2"], } `, map[string][]byte{