Update rules_java v8.0.0-rc2 & stop exporting the java rules from `@_builtins`

 - keeps the native stub definitions for now
 - cleanup of the rules & updating to rules_java v8.0.0 will be in a followup

PiperOrigin-RevId: 682810444
Change-Id: I9dee6631697309af157655f0814532506e94cb2e
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/mock/BUILD b/src/test/java/com/google/devtools/build/lib/analysis/mock/BUILD
index aaa659e..11e1770 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/mock/BUILD
+++ b/src/test/java/com/google/devtools/build/lib/analysis/mock/BUILD
@@ -23,7 +23,7 @@
         "@rules_cc//cc:srcs",
         "@rules_cc//cc/common:srcs",
         "@rules_cc//cc/toolchains:srcs",
-        "@rules_java//java:rules",
+        "@rules_java//java:for_bazel_tests",
         "@rules_java//toolchains:srcs",
         "@rules_python//python:defs_bzl",
     ],
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/mock/BazelAnalysisMock.java b/src/test/java/com/google/devtools/build/lib/analysis/mock/BazelAnalysisMock.java
index 9458fab..e1efd57 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/mock/BazelAnalysisMock.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/mock/BazelAnalysisMock.java
@@ -36,6 +36,7 @@
 import com.google.devtools.build.lib.packages.util.MockCcSupport;
 import com.google.devtools.build.lib.packages.util.MockGenruleSupport;
 import com.google.devtools.build.lib.packages.util.MockPlatformSupport;
+import com.google.devtools.build.lib.packages.util.MockProtoSupport;
 import com.google.devtools.build.lib.packages.util.MockPythonSupport;
 import com.google.devtools.build.lib.packages.util.MockToolsConfig;
 import com.google.devtools.build.lib.rules.repository.RepositoryFunction;
@@ -217,145 +218,147 @@
     config.create(
         "embedded_tools/tools/jdk/BUILD",
         """
-        load(
-            ":java_toolchain_alias.bzl",
-            "java_host_runtime_alias",
-            "java_runtime_alias",
-            "java_toolchain_alias",
-        )
-        load(":launcher_flag_alias.bzl", "launcher_flag_alias")
+load("@rules_java//java:defs.bzl",
+  "java_binary", "java_import", "java_toolchain")
+load(
+    ":java_toolchain_alias.bzl",
+    "java_host_runtime_alias",
+    "java_runtime_alias",
+    "java_toolchain_alias",
+)
+load(":launcher_flag_alias.bzl", "launcher_flag_alias")
 
-        package(default_visibility = ["//visibility:public"])
+package(default_visibility = ["//visibility:public"])
 
-        java_toolchain(
-            name = "toolchain",
-            bootclasspath = [":bootclasspath"],
-            genclass = ["GenClass_deploy.jar"],
-            header_compiler = ["turbine_deploy.jar"],
-            header_compiler_direct = ["TurbineDirect_deploy.jar"],
-            ijar = ["ijar"],
-            jacocorunner = ":JacocoCoverage",
-            java_runtime = "host_jdk",
-            javabuilder = ["JavaBuilder_deploy.jar"],
-            singlejar = ["singlejar"],
-            source_version = "8",
-            target_version = "8",
-        )
+java_toolchain(
+    name = "toolchain",
+    bootclasspath = [":bootclasspath"],
+    genclass = ["GenClass_deploy.jar"],
+    header_compiler = ["turbine_deploy.jar"],
+    header_compiler_direct = ["TurbineDirect_deploy.jar"],
+    ijar = ["ijar"],
+    jacocorunner = ":JacocoCoverage",
+    java_runtime = "host_jdk",
+    javabuilder = ["JavaBuilder_deploy.jar"],
+    singlejar = ["singlejar"],
+    source_version = "8",
+    target_version = "8",
+)
 
-        java_toolchain(
-            name = "remote_toolchain",
-            bootclasspath = [":bootclasspath"],
-            genclass = ["GenClass_deploy.jar"],
-            header_compiler = ["turbine_deploy.jar"],
-            header_compiler_direct = ["TurbineDirect_deploy.jar"],
-            ijar = ["ijar"],
-            jacocorunner = ":JacocoCoverage",
-            java_runtime = "host_jdk",
-            javabuilder = ["JavaBuilder_deploy.jar"],
-            singlejar = ["singlejar"],
-            source_version = "8",
-            target_version = "8",
-        )
+java_toolchain(
+    name = "remote_toolchain",
+    bootclasspath = [":bootclasspath"],
+    genclass = ["GenClass_deploy.jar"],
+    header_compiler = ["turbine_deploy.jar"],
+    header_compiler_direct = ["TurbineDirect_deploy.jar"],
+    ijar = ["ijar"],
+    jacocorunner = ":JacocoCoverage",
+    java_runtime = "host_jdk",
+    javabuilder = ["JavaBuilder_deploy.jar"],
+    singlejar = ["singlejar"],
+    source_version = "8",
+    target_version = "8",
+)
 
-        java_import(
-            name = "JacocoCoverageRunner",
-            jars = ["JacocoCoverage_jarjar_deploy.jar"],
-        )
+java_import(
+    name = "JacocoCoverageRunner",
+    jars = ["JacocoCoverage_jarjar_deploy.jar"],
+)
 
-        java_import(
-            name = "proguard_import",
-            jars = ["proguard_rt.jar"],
-        )
+java_import(
+    name = "proguard_import",
+    jars = ["proguard_rt.jar"],
+)
 
-        java_binary(
-            name = "proguard",
-            main_class = "proguard.Proguard",
-            runtime_deps = [":proguard_import"],
-        )
+java_binary(
+    name = "proguard",
+    main_class = "proguard.Proguard",
+    runtime_deps = [":proguard_import"],
+)
 
-        java_import(
-            name = "TestRunner",
-            jars = ["TestRunner.jar"],
-        )
+java_import(
+    name = "TestRunner",
+    jars = ["TestRunner.jar"],
+)
 
-        java_runtime(
-            name = "jdk",
-            srcs = [],
-        )
+java_runtime(
+    name = "jdk",
+    srcs = [],
+)
 
-        java_runtime(
-            name = "host_jdk",
-            srcs = [],
-        )
+java_runtime(
+    name = "host_jdk",
+    srcs = [],
+)
 
-        java_runtime(
-            name = "remote_jdk11",
-            srcs = [],
-        )
+java_runtime(
+    name = "remote_jdk11",
+    srcs = [],
+)
 
-        java_toolchain_alias(name = "current_java_toolchain")
+java_toolchain_alias(name = "current_java_toolchain")
 
-        java_runtime_alias(name = "current_java_runtime")
+java_runtime_alias(name = "current_java_runtime")
 
-        java_host_runtime_alias(name = "current_host_java_runtime")
+java_host_runtime_alias(name = "current_host_java_runtime")
 
-        filegroup(
-            name = "bootclasspath",
-            srcs = ["jdk/jre/lib/rt.jar"],
-        )
+filegroup(
+    name = "bootclasspath",
+    srcs = ["jdk/jre/lib/rt.jar"],
+)
 
-        filegroup(
-            name = "extdir",
-            srcs = glob(
-                ["jdk/jre/lib/ext/*"],
-                allow_empty = True,
-            ),
-        )
+filegroup(
+    name = "extdir",
+    srcs = glob(
+        ["jdk/jre/lib/ext/*"],
+        allow_empty = True,
+    ),
+)
 
-        filegroup(
-            name = "java",
-            srcs = ["jdk/jre/bin/java"],
-        )
+filegroup(
+    name = "java",
+    srcs = ["jdk/jre/bin/java"],
+)
 
-        filegroup(
-            name = "JacocoCoverage",
-            srcs = ["JacocoCoverage_deploy.jar"],
-        )
+filegroup(
+    name = "JacocoCoverage",
+    srcs = ["JacocoCoverage_deploy.jar"],
+)
 
-        exports_files([
-            "JavaBuilder_deploy.jar",
-            "singlejar",
-            "TestRunner_deploy.jar",
-            "ijar",
-            "GenClass_deploy.jar",
-            "turbine_deploy.jar",
-            "TurbineDirect_deploy.jar",
-            "proguard_allowlister.par",
-        ])
+exports_files([
+    "JavaBuilder_deploy.jar",
+    "singlejar",
+    "TestRunner_deploy.jar",
+    "ijar",
+    "GenClass_deploy.jar",
+    "turbine_deploy.jar",
+    "TurbineDirect_deploy.jar",
+    "proguard_allowlister.par",
+])
 
-        toolchain_type(name = "toolchain_type")
+toolchain_type(name = "toolchain_type")
 
-        toolchain_type(name = "runtime_toolchain_type")
+toolchain_type(name = "runtime_toolchain_type")
 
-        toolchain(
-            name = "dummy_java_toolchain",
-            toolchain = ":toolchain",
-            toolchain_type = ":toolchain_type",
-        )
+toolchain(
+    name = "dummy_java_toolchain",
+    toolchain = ":toolchain",
+    toolchain_type = ":toolchain_type",
+)
 
-        toolchain(
-            name = "dummy_java_runtime_toolchain",
-            toolchain = ":jdk",
-            toolchain_type = ":runtime_toolchain_type",
-        )
+toolchain(
+    name = "dummy_java_runtime_toolchain",
+    toolchain = ":jdk",
+    toolchain_type = ":runtime_toolchain_type",
+)
 
-        java_plugins_flag_alias(name = "java_plugins_flag_alias")
+java_plugins_flag_alias(name = "java_plugins_flag_alias")
 
-        launcher_flag_alias(
-            name = "launcher_flag_alias",
-            visibility = ["//visibility:public"],
-        )
-        """);
+launcher_flag_alias(
+    name = "launcher_flag_alias",
+    visibility = ["//visibility:public"],
+)
+""");
 
     config.create(
         TestConstants.CONSTRAINTS_PATH + "/android/BUILD",
@@ -372,19 +375,14 @@
     // Create the actual SDKs.
     config.create(
         "embedded_tools/src/tools/android/java/com/google/devtools/build/android/r8/BUILD",
-        "java_library(name='r8')\n");
+        """
+        filegroup(name='r8', srcs = [])
+        """);
     config.create(
         "android_gmaven_r8/jar/BUILD",
         """
-        java_import(
-            name = "jar",
-            jars = ["r8.jar"],
-        )
-
-        filegroup(
-            name = "file",
-            srcs = [],
-        )
+        filegroup(name = "jar", srcs = ["r8.jar"])
+        filegroup(name = "file", srcs = [])
         """);
     config.create("android_gmaven_r8/WORKSPACE");
 
@@ -686,7 +684,7 @@
             packages = ["public"],
         )
         """);
-
+    MockProtoSupport.setupWorkspace(config);
     MockPlatformSupport.setup(config);
     ccSupport().setup(config);
     javaSupport().setupRulesJava(config, runfiles::rlocation);
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/util/AbstractMockJavaSupport.java b/src/test/java/com/google/devtools/build/lib/analysis/util/AbstractMockJavaSupport.java
index d93584d..bfed88e 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/util/AbstractMockJavaSupport.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/util/AbstractMockJavaSupport.java
@@ -13,14 +13,10 @@
 // limitations under the License.
 package com.google.devtools.build.lib.analysis.util;
 
-import static java.nio.charset.StandardCharsets.UTF_8;
 
-import com.google.common.collect.ImmutableList;
-import com.google.common.io.MoreFiles;
 import com.google.devtools.build.lib.packages.util.MockToolsConfig;
+import com.google.devtools.build.lib.vfs.PathFragment;
 import java.io.IOException;
-import java.nio.file.Files;
-import java.nio.file.Path;
 import java.util.function.Function;
 
 public abstract class AbstractMockJavaSupport {
@@ -32,36 +28,20 @@
             MockToolsConfig config, Function<String, String> runfilesResolver) throws IOException {
           config.create("rules_java_workspace/WORKSPACE", "workspace(name = 'rules_java')");
           config.create("rules_java_workspace/MODULE.bazel", "module(name = 'rules_java')");
-          config.create("rules_java_workspace/java/BUILD");
-          config.create("rules_java_workspace/java/common/BUILD");
-          config.create("rules_java_workspace/java/private/BUILD");
-          config.create("rules_java_workspace/java/toolchains/BUILD");
-          config.create("rules_java_workspace/toolchains/BUILD");
-          ImmutableList<String> toolsToCopy =
-              ImmutableList.of(
-                  "java/defs.bzl",
-                  "java/java_binary.bzl",
-                  "java/java_import.bzl",
-                  "java/java_library.bzl",
-                  "java/java_plugin.bzl",
-                  "java/java_test.bzl",
-                  "java/common/java_common.bzl",
-                  "java/common/java_info.bzl",
-                  "java/common/java_plugin_info.bzl",
-                  "java/private/native.bzl",
-                  "java/toolchains/java_package_configuration.bzl",
-                  "java/toolchains/java_runtime.bzl",
-                  "java/toolchains/java_toolchain.bzl",
-                  "toolchains/java_toolchain_alias.bzl");
-          for (String relativePath : toolsToCopy) {
-            Path path = Path.of(runfilesResolver.apply("rules_java/" + relativePath));
-            if (Files.exists(path)) {
-              config.create(
-                  "rules_java_workspace/" + relativePath,
-                  MoreFiles.asCharSource(path, UTF_8).read());
-            }
-          }
+          PathFragment rulesJavaRoot =
+              PathFragment.create(runfilesResolver.apply("rules_java/java/defs.bzl"))
+                  .getParentDirectory()
+                  .getParentDirectory();
+          config.copyDirectory(
+              rulesJavaRoot.getRelative("java"),
+              "rules_java_workspace/java",
+              Integer.MAX_VALUE,
+              true);
+          config.copyTool(
+              rulesJavaRoot.getRelative("toolchains/java_toolchain_alias.bzl"),
+              "rules_java_workspace/toolchains/java_toolchain_alias.bzl");
           // mocks
+          config.create("rules_java_workspace/toolchains/BUILD");
           config.create(
               "rules_java_workspace/toolchains/local_java_repository.bzl",
               """
@@ -70,7 +50,7 @@
               """);
           config.create(
               "rules_java_workspace/toolchains/jdk_build_file.bzl", "JDK_BUILD_TEMPLATE = ''");
-          config.create(
+          config.overwrite(
               "rules_java_workspace/java/repositories.bzl",
               """
               def rules_java_dependencies():
@@ -81,7 +61,7 @@
                   native.register_toolchains("//java/toolchains/javac:all")
               """);
 
-          config.create(
+          config.overwrite(
               "rules_java_workspace/java/toolchains/runtime/BUILD",
               """
               toolchain_type(name = "toolchain_type")
@@ -92,7 +72,7 @@
                   toolchain_type = "@rules_java//java/toolchains/runtime:toolchain_type",
               )
               """);
-          config.create(
+          config.overwrite(
               "rules_java_workspace/java/toolchains/javac/BUILD",
               """
               toolchain_type(name = "toolchain_type")
diff --git a/src/test/java/com/google/devtools/build/lib/packages/util/MockProtoSupport.java b/src/test/java/com/google/devtools/build/lib/packages/util/MockProtoSupport.java
index eea00ba..ee05d29 100644
--- a/src/test/java/com/google/devtools/build/lib/packages/util/MockProtoSupport.java
+++ b/src/test/java/com/google/devtools/build/lib/packages/util/MockProtoSupport.java
@@ -473,5 +473,11 @@
                     toolchain = name,
                 )
         """);
+    config.create("protobuf_workspace/bazel/common/BUILD");
+    config.create(
+        "protobuf_workspace/bazel/common/proto_info.bzl",
+        """
+        ProtoInfo = provider()
+        """);
   }
 }
diff --git a/src/test/java/com/google/devtools/build/lib/testutil/TestConstants.java b/src/test/java/com/google/devtools/build/lib/testutil/TestConstants.java
index 1045324..72d2046 100644
--- a/src/test/java/com/google/devtools/build/lib/testutil/TestConstants.java
+++ b/src/test/java/com/google/devtools/build/lib/testutil/TestConstants.java
@@ -155,6 +155,7 @@
 
   public static final ImmutableList<String> PRODUCT_SPECIFIC_BUILD_LANG_OPTIONS =
       ImmutableList.of(
+          "--experimental_rule_extension_api",
           // Don't apply autoloads in unit tests, because not all repos are available
           "--incompatible_autoload_externally=");