From 4762436a8dbb3d791d91c1b9e575c79e8df2180f Mon Sep 17 00:00:00 2001 From: Paul Duffin Date: Wed, 20 May 2020 12:19:10 +0100 Subject: [PATCH] Retry: "java_sdk_library: Extract common stubs redirect code" The java_sdk_library and java_sdk_library_import redirect a request for header and implementation jars to broadly the same place although the java_sdk_library does have some special code that is mixed in with the common code. This change separates the java_sdk_library special code from the common code and moves the common code into its own method for use by both module types. That makes the special behavior clearer and ensures the common behavior remains consistent in future. Test: m nothing Bug: 155164730 (cherry picked from commit b05d4295de0883cb1e31c04971a6c5dbea719ed1) Change-Id: Id21cc74d2d37c5a75983fdcd7393f6a37f8872c9 --- java/sdk_library.go | 89 ++++++++++++++++++++------------------------- 1 file changed, 39 insertions(+), 50 deletions(-) diff --git a/java/sdk_library.go b/java/sdk_library.go index e85b692a1..e46460e51 100644 --- a/java/sdk_library.go +++ b/java/sdk_library.go @@ -564,6 +564,31 @@ func (c *commonToSdkLibraryAndImport) getScopePaths(scope *apiScope) *scopePaths return paths } +func (c *commonToSdkLibraryAndImport) sdkJarsCommon(ctx android.BaseModuleContext, sdkVersion sdkSpec, headerJars bool) android.Paths { + + // If a specific numeric version has been requested then use prebuilt versions of the sdk. + if sdkVersion.version.isNumbered() { + return PrebuiltJars(ctx, c.moduleBase.BaseModuleName(), sdkVersion) + } + + var apiScope *apiScope + switch sdkVersion.kind { + case sdkSystem: + apiScope = apiScopeSystem + case sdkTest: + apiScope = apiScopeTest + default: + apiScope = apiScopePublic + } + + paths := c.getScopePaths(apiScope) + if headerJars { + return paths.stubsHeaderPath + } else { + return paths.stubsImplPath + } +} + type SdkLibrary struct { Library @@ -1015,41 +1040,20 @@ func PrebuiltJars(ctx android.BaseModuleContext, baseName string, s sdkSpec) and return android.Paths{jarPath.Path()} } -func (module *SdkLibrary) sdkJars( - ctx android.BaseModuleContext, - sdkVersion sdkSpec, - headerJars bool) android.Paths { +func (module *SdkLibrary) sdkJars(ctx android.BaseModuleContext, sdkVersion sdkSpec, headerJars bool) android.Paths { - // If a specific numeric version has been requested then use prebuilt versions of the sdk. - if sdkVersion.version.isNumbered() { - return PrebuiltJars(ctx, module.BaseModuleName(), sdkVersion) - } else { - if !sdkVersion.specified() { - if headerJars { - return module.HeaderJars() - } else { - return module.ImplementationJars() - } - } - var apiScope *apiScope - switch sdkVersion.kind { - case sdkSystem: - apiScope = apiScopeSystem - case sdkTest: - apiScope = apiScopeTest - case sdkPrivate: - return module.HeaderJars() - default: - apiScope = apiScopePublic - } - - paths := module.getScopePaths(apiScope) + // Check any special cases for java_sdk_library. + if !sdkVersion.specified() { if headerJars { - return paths.stubsHeaderPath + return module.HeaderJars() } else { - return paths.stubsImplPath + return module.ImplementationJars() } + } else if sdkVersion.kind == sdkPrivate { + return module.HeaderJars() } + + return module.sdkJarsCommon(ctx, sdkVersion, headerJars) } // to satisfy SdkLibraryDependency interface @@ -1463,27 +1467,12 @@ func (module *sdkLibraryImport) GenerateAndroidBuildActions(ctx android.ModuleCo }) } -func (module *sdkLibraryImport) sdkJars( - ctx android.BaseModuleContext, - sdkVersion sdkSpec) android.Paths { +func (module *sdkLibraryImport) sdkJars(ctx android.BaseModuleContext, sdkVersion sdkSpec) android.Paths { - // If a specific numeric version has been requested then use prebuilt versions of the sdk. - if sdkVersion.version.isNumbered() { - return PrebuiltJars(ctx, module.BaseModuleName(), sdkVersion) - } - - var apiScope *apiScope - switch sdkVersion.kind { - case sdkSystem: - apiScope = apiScopeSystem - case sdkTest: - apiScope = apiScopeTest - default: - apiScope = apiScopePublic - } - - paths := module.getScopePaths(apiScope) - return paths.stubsHeaderPath + // The java_sdk_library_import can only ever give back header jars as it does not + // have an implementation jar. + headerJars := true + return module.sdkJarsCommon(ctx, sdkVersion, headerJars) } // to satisfy SdkLibraryDependency interface