Skip to content

Commit ded587d

Browse files
committed
Merge JavaSourceInfoProvider.
1 parent b2658e2 commit ded587d

File tree

2 files changed

+31
-6
lines changed

2 files changed

+31
-6
lines changed

src/main/java/com/google/devtools/build/lib/rules/java/JavaInfo.java

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515

1616
import com.google.common.base.Preconditions;
1717
import com.google.common.collect.ImmutableList;
18+
import com.google.common.collect.ImmutableMap;
1819
import com.google.common.collect.ImmutableSet;
1920
import com.google.common.collect.Streams;
2021
import com.google.devtools.build.lib.actions.Artifact;
@@ -43,8 +44,11 @@
4344
import com.google.devtools.build.lib.syntax.Runtime;
4445
import com.google.devtools.build.lib.syntax.SkylarkList;
4546
import com.google.devtools.build.lib.syntax.SkylarkNestedSet;
47+
import com.google.devtools.build.lib.vfs.PathFragment;
48+
4649
import java.util.ArrayList;
4750
import java.util.List;
51+
import java.util.Map;
4852
import java.util.Objects;
4953
import java.util.function.Function;
5054
import java.util.stream.Stream;
@@ -127,6 +131,7 @@ public static JavaInfo merge(List<JavaInfo> providers) {
127131
JavaInfo.fetchProvidersFromList(providers, JavaExportsProvider.class);
128132
List<JavaRuleOutputJarsProvider> javaRuleOutputJarsProviders =
129133
JavaInfo.fetchProvidersFromList(providers, JavaRuleOutputJarsProvider.class);
134+
List<JavaSourceInfoProvider> sourceInfos = JavaInfo.fetchProvidersFromList(providers, JavaSourceInfoProvider.class);
130135

131136
Runfiles mergedRunfiles = Runfiles.EMPTY;
132137
for (JavaRunfilesProvider javaRunfilesProvider : javaRunfilesProviders) {
@@ -141,12 +146,6 @@ public static JavaInfo merge(List<JavaInfo> providers) {
141146
javaConstraints.addAll(javaInfo.getJavaConstraints());
142147
}
143148

144-
145-
// JavaCompilationInfoProvider
146-
147-
// JavaSourceInfoProvider
148-
149-
150149
return JavaInfo.Builder.create()
151150
.addProvider(
152151
JavaCompilationArgsProvider.class,
@@ -163,7 +162,9 @@ public static JavaInfo merge(List<JavaInfo> providers) {
163162
.addProvider(
164163
JavaPluginInfoProvider.class, JavaPluginInfoProvider.merge(javaPluginInfoProviders))
165164
.addProvider(JavaExportsProvider.class, JavaExportsProvider.merge(javaExportsProviders))
165+
.addProvider(JavaSourceInfoProvider.class, JavaSourceInfoProvider.merge(sourceInfos))
166166
// TODO(b/65618333): add merge function to JavaGenJarsProvider. See #3769
167+
// TODO(iirina): merge or remove JavaCompilationInfoProvider
167168
.setRuntimeJars(runtimeJars.build())
168169
.setJavaConstraints(javaConstraints.build())
169170
.build();

src/main/java/com/google/devtools/build/lib/rules/java/JavaSourceInfoProvider.java

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,30 @@ public static JavaSourceInfoProvider fromJavaTargetAttributes(
108108
.build();
109109
}
110110

111+
public static JavaSourceInfoProvider merge(Collection<JavaSourceInfoProvider> sourceInfos) {
112+
JavaSourceInfoProvider.Builder javaSourceInfo = new JavaSourceInfoProvider.Builder();
113+
ImmutableList.Builder<Artifact> jarFiles = new ImmutableList.Builder<>();
114+
ImmutableMap.Builder<PathFragment, Artifact> resources = new ImmutableMap.Builder<>();
115+
ImmutableList.Builder<Artifact> sourceFiles = new ImmutableList.Builder<>();
116+
ImmutableList.Builder<Artifact> sourceJars = new ImmutableList.Builder<>();
117+
ImmutableList.Builder<Artifact> sourceJarsForJarFiles = new ImmutableList.Builder<>();
118+
119+
120+
for (JavaSourceInfoProvider sourceInfo : sourceInfos) {
121+
jarFiles.addAll(sourceInfo.getJarFiles());
122+
resources.putAll(sourceInfo.getResources());
123+
sourceFiles.addAll(sourceInfo.getSourceFiles());
124+
sourceJars.addAll(sourceInfo.getSourceJars());
125+
sourceJarsForJarFiles.addAll(sourceInfo.getSourceJarsForJarFiles());
126+
}
127+
javaSourceInfo.setJarFiles(jarFiles.build());
128+
javaSourceInfo.setResources(resources.build());
129+
javaSourceInfo.setSourceFiles(sourceFiles.build());
130+
javaSourceInfo.setSourceJars(sourceJars.build());
131+
javaSourceInfo.setSourceJarsForJarFiles(sourceJarsForJarFiles.build());
132+
return javaSourceInfo.build();
133+
}
134+
111135
/** Builder class for constructing JavaSourceInfoProviders. */
112136
public static final class Builder {
113137
private Collection<Artifact> sourceFiles = ImmutableList.<Artifact>of();

0 commit comments

Comments
 (0)