Revert "Improve error reporting when depending on prebuilt implementation jar"

This reverts commit c61783b20d70789d657dcb82050369480cc443c7.

Bug: 257969510
Reason for revert: b/255275437 - breaks checkbuild target

Change-Id: I01f88053cc24dbc1a4eb5c009f15473bdff3d565
diff --git a/java/java.go b/java/java.go
index 3471abb..b6fc6b8 100644
--- a/java/java.go
+++ b/java/java.go
@@ -86,11 +86,11 @@
 var (
 	// Supports adding java header libraries to module_exports and sdk.
 	javaHeaderLibsSdkMemberType = &librarySdkMemberType{
-		SdkMemberTypeBase: android.SdkMemberTypeBase{
+		android.SdkMemberTypeBase{
 			PropertyName: "java_header_libs",
 			SupportsSdk:  true,
 		},
-		jarToExportGetter: func(_ android.SdkMemberContext, j *Library) android.Path {
+		func(_ android.SdkMemberContext, 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()))
@@ -98,8 +98,8 @@
 
 			return headerJars[0]
 		},
-		snapshotPathGetter:    sdkSnapshotFilePathForJar,
-		onlyCopyJarToSnapshot: copyEverythingToSnapshot,
+		sdkSnapshotFilePathForJar,
+		copyEverythingToSnapshot,
 	}
 
 	// Export implementation classes jar as part of the sdk.
@@ -113,12 +113,12 @@
 
 	// Supports adding java implementation libraries to module_exports but not sdk.
 	javaLibsSdkMemberType = &librarySdkMemberType{
-		SdkMemberTypeBase: android.SdkMemberTypeBase{
+		android.SdkMemberTypeBase{
 			PropertyName: "java_libs",
 		},
-		jarToExportGetter:     exportImplementationClassesJar,
-		snapshotPathGetter:    sdkSnapshotFilePathForJar,
-		onlyCopyJarToSnapshot: copyEverythingToSnapshot,
+		exportImplementationClassesJar,
+		sdkSnapshotFilePathForJar,
+		copyEverythingToSnapshot,
 	}
 
 	snapshotRequiresImplementationJar = func(ctx android.SdkMemberContext) bool {
@@ -143,11 +143,11 @@
 	// necessary. The java_boot_libs property to allow those modules to be exported as part of the
 	// sdk/module_exports without exposing any unnecessary information.
 	javaBootLibsSdkMemberType = &librarySdkMemberType{
-		SdkMemberTypeBase: android.SdkMemberTypeBase{
+		android.SdkMemberTypeBase{
 			PropertyName: "java_boot_libs",
 			SupportsSdk:  true,
 		},
-		jarToExportGetter: func(ctx android.SdkMemberContext, j *Library) android.Path {
+		func(ctx android.SdkMemberContext, j *Library) android.Path {
 			if snapshotRequiresImplementationJar(ctx) {
 				return exportImplementationClassesJar(ctx, j)
 			}
@@ -156,9 +156,9 @@
 			// jar for use by dexpreopting and boot jars package check. They do not need to provide an
 			// actual implementation jar but the java_import will need a file that exists so just copy an
 			// empty file. Any attempt to use that file as a jar will cause a build error.
-			return nil
+			return ctx.SnapshotBuilder().EmptyFile()
 		},
-		snapshotPathGetter: func(ctx android.SdkMemberContext, osPrefix, name string) string {
+		func(ctx android.SdkMemberContext, osPrefix, name string) string {
 			if snapshotRequiresImplementationJar(ctx) {
 				return sdkSnapshotFilePathForJar(ctx, osPrefix, name)
 			}
@@ -168,7 +168,7 @@
 			// TODO(b/175714559): Provide a proper error message in Soong not ninja.
 			return filepath.Join(osPrefix, "java_boot_libs", "snapshot", "jars", "are", "invalid", name+jarFileSuffix)
 		},
-		onlyCopyJarToSnapshot: onlyCopyJarToSnapshot,
+		onlyCopyJarToSnapshot,
 	}
 
 	// Supports adding java systemserver libraries to module_exports and sdk.
@@ -182,27 +182,27 @@
 	// necessary. The java_systemserver_libs property to allow those modules to be exported as part of
 	// the sdk/module_exports without exposing any unnecessary information.
 	javaSystemserverLibsSdkMemberType = &librarySdkMemberType{
-		SdkMemberTypeBase: android.SdkMemberTypeBase{
+		android.SdkMemberTypeBase{
 			PropertyName: "java_systemserver_libs",
 			SupportsSdk:  true,
 
 			// This was only added in Tiramisu.
 			SupportedBuildReleaseSpecification: "Tiramisu+",
 		},
-		jarToExportGetter: func(ctx android.SdkMemberContext, j *Library) android.Path {
+		func(ctx android.SdkMemberContext, j *Library) android.Path {
 			// Java systemserver libs are only provided in the SDK to provide access to their dex
 			// implementation jar for use by dexpreopting. They do not need to provide an actual
 			// implementation jar but the java_import will need a file that exists so just copy an empty
 			// file. Any attempt to use that file as a jar will cause a build error.
-			return nil
+			return ctx.SnapshotBuilder().EmptyFile()
 		},
-		snapshotPathGetter: func(_ android.SdkMemberContext, osPrefix, name string) string {
+		func(_ android.SdkMemberContext, osPrefix, name string) string {
 			// Create a special name for the implementation jar to try and provide some useful information
 			// to a developer that attempts to compile against this.
 			// TODO(b/175714559): Provide a proper error message in Soong not ninja.
 			return filepath.Join(osPrefix, "java_systemserver_libs", "snapshot", "jars", "are", "invalid", name+jarFileSuffix)
 		},
-		onlyCopyJarToSnapshot: onlyCopyJarToSnapshot,
+		onlyCopyJarToSnapshot,
 	}
 
 	// Supports adding java test libraries to module_exports but not sdk.
@@ -232,7 +232,7 @@
 	ImplementationAndResourcesJars android.Paths
 
 	// ImplementationJars is a list of jars that contain the implementations of classes in the
-	// module.
+	//module.
 	ImplementationJars android.Paths
 
 	// ResourceJars is a list of jars that contain the resources included in the module.
@@ -718,8 +718,7 @@
 	android.SdkMemberTypeBase
 
 	// Function to retrieve the appropriate output jar (implementation or header) from
-	// the library, if this returns nil then it is assumed that the snapshot must not provide access
-	// to the jar.
+	// the library.
 	jarToExportGetter func(ctx android.SdkMemberContext, j *Library) android.Path
 
 	// Function to compute the snapshot relative path to which the named library's
@@ -756,11 +755,7 @@
 type librarySdkMemberProperties struct {
 	android.SdkMemberPropertiesBase
 
-	JarToExport android.Path `android:"arch_variant"`
-
-	// The path to a script to use when the jar is invalid.
-	InvalidJarScript android.Path
-
+	JarToExport     android.Path `android:"arch_variant"`
 	AidlIncludeDirs android.Paths
 
 	// The list of permitted packages that need to be passed to the prebuilts as they are used to
@@ -771,15 +766,7 @@
 func (p *librarySdkMemberProperties) PopulateFromVariant(ctx android.SdkMemberContext, variant android.Module) {
 	j := variant.(*Library)
 
-	memberType := ctx.MemberType().(*librarySdkMemberType)
-	p.JarToExport = memberType.jarToExportGetter(ctx, j)
-
-	// If no jar was provided for export then disallow access to it completely.
-	if p.JarToExport == nil {
-		// Copy the script to prevent access to the jar into the snapshot.
-		p.InvalidJarScript = android.PathForSource(ctx.SdkModuleContext(),
-			"build/soong/java/invalid_implementation_jar.sh")
-	}
+	p.JarToExport = ctx.MemberType().(*librarySdkMemberType).jarToExportGetter(ctx, j)
 
 	p.AidlIncludeDirs = j.AidlIncludeDirs()
 
@@ -802,21 +789,6 @@
 		propertySet.AddProperty("jars", []string{snapshotRelativeJavaLibPath})
 	}
 
-	if scriptSrc := p.InvalidJarScript; scriptSrc != nil {
-		// Copy the script to prevent access to the jar into the snapshot.
-		scriptDest := filepath.Join("scripts", scriptSrc.Base())
-		builder.CopyToSnapshot(scriptSrc, scriptDest)
-
-		// Generate a genrule module that will invoke the script passing in the module name.
-		genrule := builder.AddInternalModule(p, "genrule", "error")
-		genRuleName := genrule.Name()
-		genrule.AddProperty("out", []string{"this-file-will-never-be-created.jar"})
-		genrule.AddProperty("tool_files", []string{scriptDest})
-		genrule.AddProperty("cmd", fmt.Sprintf("$(location %s) %s", scriptDest, p.Name()))
-
-		propertySet.AddPropertyWithTag("jars", []string{":" + genRuleName}, builder.SdkMemberReferencePropertyTag(true))
-	}
-
 	if len(p.PermittedPackages) > 0 {
 		propertySet.AddProperty("permitted_packages", p.PermittedPackages)
 	}
@@ -1678,7 +1650,7 @@
 }
 
 func (j *Import) commonBuildActions(ctx android.ModuleContext) {
-	// TODO(b/231322772) these should come from Bazel once available
+	//TODO(b/231322772) these should come from Bazel once available
 	j.sdkVersion = j.SdkVersion(ctx)
 	j.minSdkVersion = j.MinSdkVersion(ctx)
 
@@ -2281,7 +2253,7 @@
 		resources.Append(android.BazelLabelForModuleSrc(ctx, m.properties.Java_resources))
 	}
 
-	// TODO(b/179889880) handle case where glob includes files outside package
+	//TODO(b/179889880) handle case where glob includes files outside package
 	resDeps := ResourceDirsToFiles(
 		ctx,
 		m.properties.Java_resource_dirs,
@@ -2429,7 +2401,7 @@
 	}
 
 	epEnabled := m.properties.Errorprone.Enabled
-	// TODO(b/227504307) add configuration that depends on RUN_ERROR_PRONE environment variable
+	//TODO(b/227504307) add configuration that depends on RUN_ERROR_PRONE environment variable
 	if Bool(epEnabled) {
 		javacopts = append(javacopts, m.properties.Errorprone.Javacflags...)
 	}
@@ -2665,7 +2637,7 @@
 		HeaderJars:                     android.PathsIfNonNil(i.combinedClasspathFile),
 		ImplementationAndResourcesJars: android.PathsIfNonNil(i.combinedClasspathFile),
 		ImplementationJars:             android.PathsIfNonNil(i.combinedClasspathFile),
-		// TODO(b/240308299) include AIDL information from Bazel
+		//TODO(b/240308299) include AIDL information from Bazel
 	})
 
 	i.maybeInstall(ctx, jarName, outputFile)