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
This commit is contained in:
64
java/java.go
64
java/java.go
@@ -39,11 +39,17 @@ func init() {
|
|||||||
// Register sdk member types.
|
// Register sdk member types.
|
||||||
android.RegisterSdkMemberType(javaHeaderLibsSdkMemberType)
|
android.RegisterSdkMemberType(javaHeaderLibsSdkMemberType)
|
||||||
|
|
||||||
android.RegisterSdkMemberType(&implLibrarySdkMemberType{
|
android.RegisterSdkMemberType(&librarySdkMemberType{
|
||||||
librarySdkMemberType{
|
android.SdkMemberTypeBase{
|
||||||
android.SdkMemberTypeBase{
|
PropertyName: "java_libs",
|
||||||
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 {
|
type librarySdkMemberType struct {
|
||||||
android.SdkMemberTypeBase
|
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) {
|
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
|
return ok
|
||||||
}
|
}
|
||||||
|
|
||||||
func (mt *librarySdkMemberType) buildSnapshot(
|
func (mt *librarySdkMemberType) BuildSnapshot(sdkModuleContext android.ModuleContext, builder android.SnapshotBuilder, member android.SdkMember) {
|
||||||
sdkModuleContext android.ModuleContext,
|
|
||||||
builder android.SnapshotBuilder,
|
|
||||||
member android.SdkMember,
|
|
||||||
jarToExportGetter func(j *Library) android.Path) {
|
|
||||||
|
|
||||||
variants := member.Variants()
|
variants := member.Variants()
|
||||||
if len(variants) != 1 {
|
if len(variants) != 1 {
|
||||||
@@ -1897,7 +1903,7 @@ func (mt *librarySdkMemberType) buildSnapshot(
|
|||||||
variant := variants[0]
|
variant := variants[0]
|
||||||
j := variant.(*Library)
|
j := variant.(*Library)
|
||||||
|
|
||||||
exportedJar := jarToExportGetter(j)
|
exportedJar := mt.jarToExportGetter(j)
|
||||||
snapshotRelativeJavaLibPath := sdkSnapshotFilePathForJar(member)
|
snapshotRelativeJavaLibPath := sdkSnapshotFilePathForJar(member)
|
||||||
builder.CopyToSnapshot(exportedJar, snapshotRelativeJavaLibPath)
|
builder.CopyToSnapshot(exportedJar, snapshotRelativeJavaLibPath)
|
||||||
|
|
||||||
@@ -1913,43 +1919,19 @@ func (mt *librarySdkMemberType) buildSnapshot(
|
|||||||
module.AddProperty("jars", []string{snapshotRelativeJavaLibPath})
|
module.AddProperty("jars", []string{snapshotRelativeJavaLibPath})
|
||||||
}
|
}
|
||||||
|
|
||||||
var javaHeaderLibsSdkMemberType android.SdkMemberType = &headerLibrarySdkMemberType{
|
var javaHeaderLibsSdkMemberType android.SdkMemberType = &librarySdkMemberType{
|
||||||
librarySdkMemberType{
|
android.SdkMemberTypeBase{
|
||||||
android.SdkMemberTypeBase{
|
PropertyName: "java_header_libs",
|
||||||
PropertyName: "java_header_libs",
|
SupportsSdk: true,
|
||||||
SupportsSdk: true,
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
}
|
func(j *Library) android.Path {
|
||||||
|
|
||||||
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 {
|
|
||||||
headerJars := j.HeaderJars()
|
headerJars := j.HeaderJars()
|
||||||
if len(headerJars) != 1 {
|
if len(headerJars) != 1 {
|
||||||
panic(fmt.Errorf("there must be only one header jar from %q", j.Name()))
|
panic(fmt.Errorf("there must be only one header jar from %q", j.Name()))
|
||||||
}
|
}
|
||||||
|
|
||||||
return headerJars[0]
|
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.
|
// java_library builds and links sources into a `.jar` file for the device, and possibly for the host as well.
|
||||||
|
Reference in New Issue
Block a user