Add Java ProtoCommon.compile calling Starlark proto_common.compile.

PiperOrigin-RevId: 440105671
diff --git a/src/main/java/com/google/devtools/build/lib/rules/proto/ProtoCommon.java b/src/main/java/com/google/devtools/build/lib/rules/proto/ProtoCommon.java
index 4758eb4..aa75f71 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/proto/ProtoCommon.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/proto/ProtoCommon.java
@@ -16,19 +16,32 @@
 
 import com.google.common.annotations.VisibleForTesting;
 import com.google.common.collect.ImmutableList;
+import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.Interner;
 import com.google.devtools.build.lib.actions.Artifact;
 import com.google.devtools.build.lib.actions.ArtifactRoot;
+import com.google.devtools.build.lib.analysis.ConfiguredTarget;
+import com.google.devtools.build.lib.analysis.FilesToRunProvider;
 import com.google.devtools.build.lib.analysis.RuleContext;
 import com.google.devtools.build.lib.analysis.config.CoreOptionConverters.StrictDepsMode;
+import com.google.devtools.build.lib.analysis.starlark.Args;
 import com.google.devtools.build.lib.cmdline.Label;
+import com.google.devtools.build.lib.collect.nestedset.Depset;
+import com.google.devtools.build.lib.collect.nestedset.Depset.ElementType;
+import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
+import com.google.devtools.build.lib.collect.nestedset.Order;
 import com.google.devtools.build.lib.concurrent.BlazeInterners;
 import com.google.devtools.build.lib.packages.BazelModuleContext;
+import com.google.devtools.build.lib.packages.RuleClass.ConfiguredTargetFactory.RuleErrorException;
 import com.google.devtools.build.lib.vfs.FileSystemUtils;
 import com.google.devtools.build.lib.vfs.PathFragment;
+import javax.annotation.Nullable;
 import net.starlark.java.eval.EvalException;
 import net.starlark.java.eval.Module;
 import net.starlark.java.eval.Starlark;
+import net.starlark.java.eval.StarlarkCallable;
+import net.starlark.java.eval.StarlarkFunction;
+import net.starlark.java.eval.StarlarkList;
 import net.starlark.java.eval.StarlarkThread;
 
 /** Utility functions for proto_library and proto aspect implementations. */
@@ -137,4 +150,60 @@
       throw Starlark.errorf("Rule in '%s' cannot use private API", label.getPackageName());
     }
   }
+
+  public static void compile(
+      RuleContext ruleContext,
+      ConfiguredTarget protoTarget,
+      ProtoLangToolchainProvider protoLangToolchainInfo,
+      Iterable<Artifact> generatedFiles,
+      @Nullable Object pluginOutput,
+      @Nullable Args additionalArgs,
+      Iterable<FilesToRunProvider> additionalTools,
+      Iterable<Artifact> additionalInputs,
+      @Nullable StarlarkCallable resourceSet,
+      String progressMessage)
+      throws RuleErrorException, InterruptedException {
+    StarlarkFunction compile =
+        (StarlarkFunction) ruleContext.getStarlarkDefinedBuiltin("proto_common_compile");
+    ruleContext.initStarlarkRuleContext();
+    ruleContext.callStarlarkOrThrowRuleError(
+        compile,
+        ImmutableList.of(
+            /* actions */ ruleContext.getStarlarkRuleContext().actions(),
+            /* proto_library_target */ protoTarget,
+            /* proto_lang_toolchain_info */ protoLangToolchainInfo,
+            /* generated_files */ StarlarkList.immutableCopyOf(generatedFiles),
+            /* plugin_output */ pluginOutput == null ? Starlark.NONE : pluginOutput,
+            /* additional_args */ additionalArgs == null ? Starlark.NONE : additionalArgs,
+            /* additional_tools */ StarlarkList.immutableCopyOf(additionalTools),
+            /* additional_inputs */ additionalInputs == null
+                ? Depset.of(ElementType.EMPTY, NestedSetBuilder.emptySet(Order.STABLE_ORDER))
+                : Depset.of(
+                    Artifact.TYPE, NestedSetBuilder.wrap(Order.STABLE_ORDER, additionalInputs)),
+            /* resource_set */ resourceSet == null ? Starlark.NONE : resourceSet,
+            /* experimental_progress_message */ progressMessage),
+        ImmutableMap.of());
+  }
+
+  public static void compile(
+      RuleContext ruleContext,
+      ConfiguredTarget protoTarget,
+      ProtoLangToolchainProvider protoLangToolchainInfo,
+      Iterable<Artifact> generatedFiles,
+      @Nullable Object pluginOutput,
+      String progressMessage)
+      throws RuleErrorException, InterruptedException {
+    StarlarkFunction compile =
+        (StarlarkFunction) ruleContext.getStarlarkDefinedBuiltin("proto_common_compile");
+    ruleContext.initStarlarkRuleContext();
+    ruleContext.callStarlarkOrThrowRuleError(
+        compile,
+        ImmutableList.of(
+            /* actions */ ruleContext.getStarlarkRuleContext().actions(),
+            /* proto_library_target */ protoTarget,
+            /* proto_lang_toolchain_info */ protoLangToolchainInfo,
+            /* generated_files */ StarlarkList.immutableCopyOf(generatedFiles),
+            /* plugin_output */ pluginOutput == null ? Starlark.NONE : pluginOutput),
+        ImmutableMap.of("experimental_progress_message", progressMessage));
+  }
 }
diff --git a/src/main/starlark/builtins_bzl/common/exports.bzl b/src/main/starlark/builtins_bzl/common/exports.bzl
index 0ce3ac4..d96c127 100755
--- a/src/main/starlark/builtins_bzl/common/exports.bzl
+++ b/src/main/starlark/builtins_bzl/common/exports.bzl
@@ -60,5 +60,6 @@
 exported_to_java = {
     "register_compile_and_archive_actions_for_j2objc": compilation_support.register_compile_and_archive_actions_for_j2objc,
     "create_proto_compile_action": proto_common.create_proto_compile_action,
+    "proto_common_compile": proto_common_do_not_use.compile,
     "link_multi_arch_static_library": linking_support.link_multi_arch_static_library,
 }