Expose missing information from the `JavaInfo` public API to allow recreating native JavaInfo from a Starlark instance
PiperOrigin-RevId: 540377614
Change-Id: Ied09df18de6b90c02d0dc46fdc32b428a12e5386
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaInfo.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaInfo.java
index d5ee0f8..c5611a3 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaInfo.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaInfo.java
@@ -506,6 +506,24 @@
}
@Override
+ public Depset getTransitiveFullCompileJars() {
+ return Depset.of(
+ Artifact.class,
+ getProviderAsNestedSet(
+ JavaCompilationArgsProvider.class,
+ JavaCompilationArgsProvider::getTransitiveFullCompileTimeJars));
+ }
+
+ @Override
+ public Depset getCompileTimeJavaDependencies() {
+ return Depset.of(
+ Artifact.class,
+ getProviderAsNestedSet(
+ JavaCompilationArgsProvider.class,
+ JavaCompilationArgsProvider::getCompileTimeJavaDependencyArtifacts));
+ }
+
+ @Override
public JavaPluginData plugins() {
return providerJavaPlugin == null ? JavaPluginData.empty() : providerJavaPlugin.plugins();
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaInfoBuildHelper.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaInfoBuildHelper.java
index cb6f45f..775c85a 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaInfoBuildHelper.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaInfoBuildHelper.java
@@ -103,10 +103,6 @@
javaCompilationArgsBuilder.addDirectCompileTimeJar(
/* interfaceJar= */ javaOutput.getCompileJar(), /* fullJar= */ javaOutput.getClassJar());
}
- if (javaOutput.getCompileJdeps() != null) {
- javaCompilationArgsBuilder.addCompileTimeJavaDependencyArtifacts(
- NestedSetBuilder.create(Order.STABLE_ORDER, javaOutput.getCompileJdeps()));
- }
JavaRuleOutputJarsProvider javaRuleOutputJarsProvider =
JavaRuleOutputJarsProvider.builder().addJavaOutput(javaOutput).build();
@@ -122,6 +118,11 @@
streamProviders(runtimeDeps, JavaCompilationArgsProvider.class)
.forEach(args -> javaCompilationArgsBuilder.addDeps(args, RUNTIME_ONLY));
+ if (javaOutput.getCompileJdeps() != null) {
+ javaCompilationArgsBuilder.addCompileTimeJavaDependencyArtifacts(
+ NestedSetBuilder.create(Order.STABLE_ORDER, javaOutput.getCompileJdeps()));
+ }
+
javaInfoBuilder.javaCompilationArgs(javaCompilationArgsBuilder.build());
javaInfoBuilder.javaPluginInfo(mergeExportedJavaPluginInfo(exportedPlugins, exports));
diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/java/JavaInfoApi.java b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/java/JavaInfoApi.java
index 15ae548..93fc1a4 100644
--- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/java/JavaInfoApi.java
+++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/java/JavaInfoApi.java
@@ -175,6 +175,15 @@
structField = true)
JavaModuleFlagsProviderApi getJavaModuleFlagsInfo();
+ @StarlarkMethod(
+ name = "_transitive_full_compile_time_jars",
+ documented = false,
+ structField = true)
+ Depset getTransitiveFullCompileJars();
+
+ @StarlarkMethod(name = "_compile_time_java_dependencies", documented = false, structField = true)
+ Depset getCompileTimeJavaDependencies();
+
/** Provider class for {@link JavaInfoApi} objects. */
@StarlarkBuiltin(name = "Provider", documented = false, doc = "")
interface JavaInfoProviderApi extends ProviderApi {