aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main
diff options
context:
space:
mode:
authorGravatar dbabkin <dbabkin@google.com>2018-01-16 02:30:04 -0800
committerGravatar Copybara-Service <copybara-piper@google.com>2018-01-16 02:31:23 -0800
commit5bd53cb609480ca896ca2d011f415b424c63ce63 (patch)
treea498f1ad057795c230adb6a7e538273dd8e648ec /src/main
parent68371172ae9012a1b368d05c4a0d6483812fcd42 (diff)
Create function createJavaInfo with new API. Implement JavaSourceJarsProvider.
Added tests for checking JavaSourceJarsProvider state. All other providers will be implemented in next CLs. previous CL with JavaCompilationArgsProvider implementation is https://github.com/bazelbuild/bazel/commit/32dff21d00ad7d1bdf50e8761d675a6e7e002de9 RELNOTES:none PiperOrigin-RevId: 182028182
Diffstat (limited to 'src/main')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/JavaInfo.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/JavaInfoBuildHelper.java29
2 files changed, 27 insertions, 4 deletions
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 0f792bb480..1b777ace06 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
@@ -368,7 +368,7 @@ public final class JavaInfo extends NativeInfo {
structField = true
)
public SkylarkList<Artifact> getSourceJars() {
- //TODO(http://github.com/bazelbuild/bazel/issues/4221) change return type to NestedSet<Artifact>
+ //TODO(#4221) change return type to NestedSet<Artifact>
JavaSourceJarsProvider provider = providers.getProvider(JavaSourceJarsProvider.class);
ImmutableList<Artifact> sourceJars =
provider == null ? ImmutableList.of() : provider.getSourceJars();
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 6cff33a4e1..38c25b1c18 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
@@ -71,7 +71,7 @@ final class JavaInfoBuildHelper {
* @return new created JavaInfo instance
* @throws EvalException if some mandatory parameter are missing
*/
- //todo(b/69780248 gh/3769) only populates JavaInfo with JavaCompilationArgsProvider
+ // TODO(b/69780248) only populates JavaInfo with JavaCompilationArgsProvider. See #3769
public JavaInfo createJavaInfo(
Artifact outputJar,
SkylarkList<Artifact> sourceFiles,
@@ -80,7 +80,7 @@ final class JavaInfoBuildHelper {
Boolean neverlink,
SkylarkList<JavaInfo> compileTimeDeps,
SkylarkList<JavaInfo> runtimeDeps,
- SkylarkList<JavaInfo> exports, //todo(b/69780248 gh/3769) handle exports.
+ SkylarkList<JavaInfo> exports, // TODO(b/69780248) handle exports. See #3769
Object action,
Object javaToolchain,
Location location)
@@ -120,11 +120,34 @@ final class JavaInfoBuildHelper {
JavaCompilationArgsProvider.class,
JavaCompilationArgsProvider.create(
javaCompilationArgsBuilder.build(), recursiveJavaCompilationArgsBuilder.build()));
- //todo(b/69780248 gh/3769) add other providers.
+
+ NestedSetBuilder<Artifact> transitiveSourceJars = NestedSetBuilder.stableOrder();
+ transitiveSourceJars.addAll(sourceJars);
+ addSourceJars(transitiveSourceJars, Iterables.concat(compileTimeDeps, runtimeDeps));
+
+ javaInfoBuilder.addProvider(
+ JavaSourceJarsProvider.class,
+ JavaSourceJarsProvider.create(transitiveSourceJars.build(), sourceJars));
+
+ // TODO(b/69780248) add other providers. See #3769
return javaInfoBuilder.build();
}
+
+ private void addSourceJars(NestedSetBuilder<Artifact> builder, Iterable<JavaInfo> javaInfos){
+ List<JavaSourceJarsProvider> javaSourceJarsProviders =
+ JavaInfo.getProvidersFromListOfJavaProviders(JavaSourceJarsProvider.class, javaInfos);
+
+ for (JavaSourceJarsProvider sourceJarsProvider : javaSourceJarsProviders) {
+ builder.addTransitive(sourceJarsProvider.getTransitiveSourceJars());
+
+ NestedSet<Artifact> directSrc = NestedSetBuilder.<Artifact>stableOrder()
+ .addAll(sourceJarsProvider.getSourceJars()).build();
+ builder.addTransitive(directSrc);
+ }
+ }
+
public JavaInfo create(
@Nullable Object actionsUnchecked,
NestedSet<Artifact> compileTimeJars,