summaryrefslogtreecommitdiff
path: root/java/java.go
diff options
context:
space:
mode:
authorPaul Duffin <paulduffin@google.com>2020-02-28 14:39:53 +0000
committerPaul Duffin <paulduffin@google.com>2020-04-22 12:51:29 +0100
commit2b9e3d39d9548e7e333bd0d56c42a88239483706 (patch)
tree68c3e07366db6bb7d739d470dda1c7d613656543 /java/java.go
parentb0cbec3adaebe1dbfefcb365dceaf68dc1a76b4a (diff)
Simplify java library sdk member code
Adds the accessor function for retrieving the impl/header jars to the librarySdkMemberType structure instead of passing it into its buildSnapshot() method. That enabled: * The removal of the [header/impl]LibrarySdkMemberType structs. * The removal of their implementations of BuildSnapshot. * Replacing buildSnapshot() with BuildSnapshot() This will make subsequent refactoring of the SdkMemberType interface a little simpler. Bug: 153306490 Test: m nothing Bug: 150451422 Merged-In: I1f96986bb497cf9d9df9916e40065f66b35a4704 Change-Id: I1f96986bb497cf9d9df9916e40065f66b35a4704
Diffstat (limited to 'java/java.go')
-rw-r--r--java/java.go64
1 files changed, 23 insertions, 41 deletions
diff --git a/java/java.go b/java/java.go
index 79568131d..e4b51c00c 100644
--- a/java/java.go
+++ b/java/java.go
@@ -39,11 +39,17 @@ func init() {
// Register sdk member types.
android.RegisterSdkMemberType(javaHeaderLibsSdkMemberType)
- android.RegisterSdkMemberType(&implLibrarySdkMemberType{
- librarySdkMemberType{
- android.SdkMemberTypeBase{
- PropertyName: "java_libs",
- },
+ android.RegisterSdkMemberType(&librarySdkMemberType{
+ android.SdkMemberTypeBase{
+ PropertyName: "java_libs",
+ },
+ func(j *Library) android.Path {
+ implementationJars := j.ImplementationJars()
+ if len(implementationJars) != 1 {
+ panic(fmt.Errorf("there must be only one implementation jar from %q", j.Name()))
+ }
+
+ return implementationJars[0]
},
})
@@ -1870,6 +1876,10 @@ func sdkSnapshotFilePathForMember(member android.SdkMember, suffix string) strin
type librarySdkMemberType struct {
android.SdkMemberTypeBase
+
+ // Function to retrieve the appropriate output jar (implementation or header) from
+ // the library.
+ jarToExportGetter func(j *Library) android.Path
}
func (mt *librarySdkMemberType) AddDependencies(mctx android.BottomUpMutatorContext, dependencyTag blueprint.DependencyTag, names []string) {
@@ -1881,11 +1891,7 @@ func (mt *librarySdkMemberType) IsInstance(module android.Module) bool {
return ok
}
-func (mt *librarySdkMemberType) buildSnapshot(
- sdkModuleContext android.ModuleContext,
- builder android.SnapshotBuilder,
- member android.SdkMember,
- jarToExportGetter func(j *Library) android.Path) {
+func (mt *librarySdkMemberType) BuildSnapshot(sdkModuleContext android.ModuleContext, builder android.SnapshotBuilder, member android.SdkMember) {
variants := member.Variants()
if len(variants) != 1 {
@@ -1897,7 +1903,7 @@ func (mt *librarySdkMemberType) buildSnapshot(
variant := variants[0]
j := variant.(*Library)
- exportedJar := jarToExportGetter(j)
+ exportedJar := mt.jarToExportGetter(j)
snapshotRelativeJavaLibPath := sdkSnapshotFilePathForJar(member)
builder.CopyToSnapshot(exportedJar, snapshotRelativeJavaLibPath)
@@ -1913,43 +1919,19 @@ func (mt *librarySdkMemberType) buildSnapshot(
module.AddProperty("jars", []string{snapshotRelativeJavaLibPath})
}
-var javaHeaderLibsSdkMemberType android.SdkMemberType = &headerLibrarySdkMemberType{
- librarySdkMemberType{
- android.SdkMemberTypeBase{
- PropertyName: "java_header_libs",
- SupportsSdk: true,
- },
+var javaHeaderLibsSdkMemberType android.SdkMemberType = &librarySdkMemberType{
+ android.SdkMemberTypeBase{
+ PropertyName: "java_header_libs",
+ SupportsSdk: true,
},
-}
-
-type headerLibrarySdkMemberType struct {
- librarySdkMemberType
-}
-
-func (mt *headerLibrarySdkMemberType) BuildSnapshot(sdkModuleContext android.ModuleContext, builder android.SnapshotBuilder, member android.SdkMember) {
- mt.librarySdkMemberType.buildSnapshot(sdkModuleContext, builder, member, func(j *Library) android.Path {
+ func(j *Library) android.Path {
headerJars := j.HeaderJars()
if len(headerJars) != 1 {
panic(fmt.Errorf("there must be only one header jar from %q", j.Name()))
}
return headerJars[0]
- })
-}
-
-type implLibrarySdkMemberType struct {
- librarySdkMemberType
-}
-
-func (mt *implLibrarySdkMemberType) BuildSnapshot(sdkModuleContext android.ModuleContext, builder android.SnapshotBuilder, member android.SdkMember) {
- mt.librarySdkMemberType.buildSnapshot(sdkModuleContext, builder, member, func(j *Library) android.Path {
- implementationJars := j.ImplementationJars()
- if len(implementationJars) != 1 {
- panic(fmt.Errorf("there must be only one implementation jar from %q", j.Name()))
- }
-
- return implementationJars[0]
- })
+ },
}
// java_library builds and links sources into a `.jar` file for the device, and possibly for the host as well.