diff options
author | 2018-01-16 02:30:04 -0800 | |
---|---|---|
committer | 2018-01-16 02:31:23 -0800 | |
commit | 5bd53cb609480ca896ca2d011f415b424c63ce63 (patch) | |
tree | a498f1ad057795c230adb6a7e538273dd8e648ec /src/main | |
parent | 68371172ae9012a1b368d05c4a0d6483812fcd42 (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.java | 2 | ||||
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/rules/java/JavaInfoBuildHelper.java | 29 |
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, |