Refactor deps/runtime_deps collection

This keeps only the common bits[1] in java_helper.bzl and do the rest in the respective rule classes

PiperOrigin-RevId: 515720416
Change-Id: I5a7a5ccb4dc24bf7899c252fcb12637dd487355e
diff --git a/src/main/starlark/builtins_bzl/bazel/java/bazel_java_binary.bzl b/src/main/starlark/builtins_bzl/bazel/java/bazel_java_binary.bzl
index 3074ab6..83116c5 100644
--- a/src/main/starlark/builtins_bzl/bazel/java/bazel_java_binary.bzl
+++ b/src/main/starlark/builtins_bzl/bazel/java/bazel_java_binary.bzl
@@ -23,8 +23,8 @@
 JavaInfo = _builtins.toplevel.JavaInfo
 
 def _bazel_java_binary_impl(ctx):
-    deps = helper.collect_all_targets_as_compile_deps(ctx)
-    runtime_deps = helper.collect_all_targets_as_runtime_deps(ctx)
+    deps = _collect_all_targets_as_deps(ctx, classpath_type = "compile_only")
+    runtime_deps = _collect_all_targets_as_deps(ctx)
 
     main_class = _check_and_get_main_class(ctx)
     coverage_main_class = main_class
@@ -71,7 +71,7 @@
 
     runfiles = default_info.runfiles
 
-    test_support = _get_test_support(ctx)
+    test_support = helper.get_test_support(ctx)
     if test_support:
         runfiles = runfiles.merge(test_support[DefaultInfo].default_runfiles)
 
@@ -83,10 +83,16 @@
 
     return providers.values()
 
-def _get_test_support(ctx):
-    if ctx.attr.create_executable and ctx.attr.use_testrunner:
-        return ctx.attr._test_support
-    return None
+def _collect_all_targets_as_deps(ctx, classpath_type = "all"):
+    deps = helper.collect_all_targets_as_deps(ctx, classpath_type = classpath_type)
+
+    if classpath_type == "compile_only" and ctx.fragments.java.enforce_explicit_java_test_deps():
+        return deps
+
+    test_support = helper.get_test_support(ctx)
+    if test_support:
+        deps.append(test_support)
+    return deps
 
 def _check_and_get_main_class(ctx):
     create_executable = ctx.attr.create_executable
@@ -150,7 +156,7 @@
     runfiles_enabled = helper.runfiles_enabled(ctx)
     coverage_enabled = ctx.configuration.coverage_enabled
 
-    test_support = _get_test_support(ctx)
+    test_support = helper.get_test_support(ctx)
     test_support_jars = test_support[JavaInfo].transitive_runtime_jars if test_support else depset()
     classpath = depset(
         transitive = [
diff --git a/src/main/starlark/builtins_bzl/common/java/java_helper.bzl b/src/main/starlark/builtins_bzl/common/java/java_helper.bzl
index 102440b..8f2a515 100644
--- a/src/main/starlark/builtins_bzl/common/java/java_helper.bzl
+++ b/src/main/starlark/builtins_bzl/common/java/java_helper.bzl
@@ -19,12 +19,6 @@
 load(":common/paths.bzl", "paths")
 load(":common/cc/cc_common.bzl", "cc_common")
 
-def _collect_all_targets_as_runtime_deps(ctx):
-    return _collect_all_targets_as_deps(ctx)
-
-def _collect_all_targets_as_compile_deps(ctx):
-    return _collect_all_targets_as_deps(ctx, classpath_type = "compile_only")
-
 def _collect_all_targets_as_deps(ctx, classpath_type = "all"):
     deps = []
     if not classpath_type == "compile_only":
@@ -35,12 +29,6 @@
 
     deps.extend(ctx.attr.deps or [])
 
-    if (
-        ctx.fragments.java.add_test_support_to_compile_deps and
-        hasattr(ctx.attr, "_test_support") and ctx.attr._test_support
-    ):
-        deps.append(ctx.attr._test_support)
-
     launcher = _filter_launcher_for_target(ctx)
     if launcher:
         deps.append(launcher)
@@ -272,9 +260,13 @@
 def _runfiles_enabled(ctx):
     return ctx.configuration.runfiles_enabled()
 
+def _get_test_support(ctx):
+    if ctx.attr.create_executable and ctx.attr.use_testrunner:
+        return ctx.attr._test_support
+    return None
+
 util = struct(
-    collect_all_targets_as_runtime_deps = _collect_all_targets_as_runtime_deps,
-    collect_all_targets_as_compile_deps = _collect_all_targets_as_compile_deps,
+    collect_all_targets_as_deps = _collect_all_targets_as_deps,
     filter_launcher_for_target = _filter_launcher_for_target,
     launcher_artifact_for_target = _launcher_artifact_for_target,
     check_and_get_main_class = _check_and_get_main_class,
@@ -291,4 +283,5 @@
     is_absolute_path = _is_absolute_path,
     is_windows = _is_windows,
     runfiles_enabled = _runfiles_enabled,
+    get_test_support = _get_test_support,
 )