aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorGravatar Googler <noreply@google.com>2015-09-30 17:23:34 +0000
committerGravatar Florian Weikert <fwe@google.com>2015-09-30 23:45:43 +0000
commit70af6fe41b9be75768ba410b47cd513014e15c28 (patch)
treee3a0f78a6d0c592683cc945070e6389a549b77d9 /src
parent690e6400d2046a6b9266069e9a4bc2b3aa0baee1 (diff)
Filter idl sources from AndroidStudioInfoAspect.
These java sources are already included in the idl jars. -- MOS_MIGRATED_REVID=104309944
Diffstat (limited to 'src')
-rw-r--r--src/main/java/com/google/devtools/build/lib/ideinfo/AndroidStudioInfoAspect.java18
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/AndroidCommon.java1
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/AndroidIdeInfoProvider.java18
-rw-r--r--src/test/java/com/google/devtools/build/lib/ideinfo/AndroidStudioInfoAspectTest.java6
4 files changed, 39 insertions, 4 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/ideinfo/AndroidStudioInfoAspect.java b/src/main/java/com/google/devtools/build/lib/ideinfo/AndroidStudioInfoAspect.java
index a628b7cf40..c47d969643 100644
--- a/src/main/java/com/google/devtools/build/lib/ideinfo/AndroidStudioInfoAspect.java
+++ b/src/main/java/com/google/devtools/build/lib/ideinfo/AndroidStudioInfoAspect.java
@@ -408,9 +408,21 @@ public class AndroidStudioInfoAspect implements ConfiguredAspectFactory {
private static Collection<Artifact> getSources(ConfiguredTarget base) {
// Calculate source files.
JavaSourceInfoProvider sourceInfoProvider = base.getProvider(JavaSourceInfoProvider.class);
- return sourceInfoProvider != null
- ? sourceInfoProvider.getSourceFiles()
- : ImmutableList.<Artifact>of();
+ if (sourceInfoProvider == null) {
+ return ImmutableList.of();
+ }
+ AndroidIdeInfoProvider androidIdeInfoProvider = base.getProvider(AndroidIdeInfoProvider.class);
+ if (androidIdeInfoProvider == null) {
+ return sourceInfoProvider.getSourceFiles();
+ }
+ ImmutableList.Builder<Artifact> builder = ImmutableList.builder();
+ Collection<Artifact> idlGeneratedJavaFiles = androidIdeInfoProvider.getIdlGeneratedJavaFiles();
+ for (Artifact artifact : sourceInfoProvider.getSourceFiles()) {
+ if (!idlGeneratedJavaFiles.contains(artifact)) {
+ builder.add(artifact);
+ }
+ }
+ return builder.build();
}
private PathFragment getOutputFilePath(ConfiguredTarget base, RuleContext ruleContext) {
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidCommon.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidCommon.java
index c071a03a85..598d121146 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidCommon.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidCommon.java
@@ -217,6 +217,7 @@ public class AndroidCommon {
.setIdlSourceJar(idlHelper.getIdlSourceJar())
.addIdlParcelables(idlHelper.getIdlParcelables())
.addIdlSrcs(idlHelper.getIdlSources())
+ .addIdlGeneratedJavaFiles(idlHelper.getIdlGeneratedJavaSources())
.addAllApksUnderTest(apksUnderTest);
if (zipAlignedApk != null) {
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidIdeInfoProvider.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidIdeInfoProvider.java
index 9fe1faf096..57e4db542e 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidIdeInfoProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidIdeInfoProvider.java
@@ -103,6 +103,7 @@ public final class AndroidIdeInfoProvider implements TransitiveInfoProvider {
private final Set<SourceDirectory> assetDirs = new LinkedHashSet<>();
private final Set<SourceDirectory> idlDirs = new LinkedHashSet<>();
private final Set<Artifact> idlSrcs = new LinkedHashSet<>();
+ private final Set<Artifact> idlGeneratedJavaFiles = new LinkedHashSet<>();
private final Set<Artifact> apksUnderTest = new LinkedHashSet<>();
public AndroidIdeInfoProvider build() {
@@ -116,6 +117,7 @@ public final class AndroidIdeInfoProvider implements TransitiveInfoProvider {
ImmutableList.copyOf(resourceDirs),
ImmutableList.copyOf(idlDirs),
ImmutableList.copyOf(idlSrcs),
+ ImmutableList.copyOf(idlGeneratedJavaFiles),
ImmutableList.copyOf(apksUnderTest));
}
@@ -159,6 +161,14 @@ public final class AndroidIdeInfoProvider implements TransitiveInfoProvider {
}
/**
+ * Add the java files generated from "idl_srcs".
+ */
+ public Builder addIdlGeneratedJavaFiles(Collection<Artifact> idlGeneratedJavaFiles) {
+ this.idlGeneratedJavaFiles.addAll(idlGeneratedJavaFiles);
+ return this;
+ }
+
+ /**
* Add "idl_parcelables" contents.
*/
public Builder addIdlParcelables(Collection<Artifact> idlParcelables) {
@@ -290,6 +300,7 @@ public final class AndroidIdeInfoProvider implements TransitiveInfoProvider {
private final ImmutableCollection<SourceDirectory> assetDirs;
private final ImmutableCollection<SourceDirectory> idlImports;
private final ImmutableCollection<Artifact> idlSrcs;
+ private final ImmutableCollection<Artifact> idlGeneratedJavaFiles;
private final ImmutableCollection<Artifact> apksUnderTest;
AndroidIdeInfoProvider(@Nullable Artifact manifest,
@@ -301,6 +312,7 @@ public final class AndroidIdeInfoProvider implements TransitiveInfoProvider {
ImmutableCollection<SourceDirectory> resourceDirs,
ImmutableCollection<SourceDirectory> idlImports,
ImmutableCollection<Artifact> idlSrcs,
+ ImmutableCollection<Artifact> idlGeneratedJavaFiles,
ImmutableCollection<Artifact> apksUnderTest) {
this.manifest = manifest;
this.generatedManifest = generatedManifest;
@@ -311,6 +323,7 @@ public final class AndroidIdeInfoProvider implements TransitiveInfoProvider {
this.resourceDirs = resourceDirs;
this.idlImports = idlImports;
this.idlSrcs = idlSrcs;
+ this.idlGeneratedJavaFiles = idlGeneratedJavaFiles;
this.apksUnderTest = apksUnderTest;
}
@@ -363,6 +376,11 @@ public final class AndroidIdeInfoProvider implements TransitiveInfoProvider {
return idlSrcs;
}
+ /** A list of java files generated from the "idl_srcs" attribute. */
+ public ImmutableCollection<Artifact> getIdlGeneratedJavaFiles() {
+ return idlGeneratedJavaFiles;
+ }
+
/** A list of the APKs related to the app under test, if any. */
public ImmutableCollection<Artifact> getApksUnderTest() {
return apksUnderTest;
diff --git a/src/test/java/com/google/devtools/build/lib/ideinfo/AndroidStudioInfoAspectTest.java b/src/test/java/com/google/devtools/build/lib/ideinfo/AndroidStudioInfoAspectTest.java
index bb086cd259..7c78707625 100644
--- a/src/test/java/com/google/devtools/build/lib/ideinfo/AndroidStudioInfoAspectTest.java
+++ b/src/test/java/com/google/devtools/build/lib/ideinfo/AndroidStudioInfoAspectTest.java
@@ -565,8 +565,10 @@ public class AndroidStudioInfoAspectTest extends BuildViewTestCase {
assertThat(LIBRARY_ARTIFACT_TO_STRING.apply(idlRuleInfo.getAndroidRuleIdeInfo().getIdlJar()))
.isEqualTo(jarString("java/com/google/example",
"libhas_idl-idl.jar", null, "libhas_idl-idl.srcjar"));
+ assertThat(relativePathsForSourcesOf(idlRuleInfo))
+ .isEmpty();
}
-
+
public void testJavaLibraryWithoutGeneratedSourcesHasNoGenJars() throws Exception {
scratch.file(
"java/com/google/example/BUILD",
@@ -609,6 +611,8 @@ public class AndroidStudioInfoAspectTest extends BuildViewTestCase {
LIBRARY_ARTIFACT_TO_STRING))
.containsExactly(jarString("java/com/google/example",
"libtest-gen.jar", null, "libtest-gensrc.jar"));
+ assertThat(relativePathsForSourcesOf(ruleIdeInfo))
+ .isEmpty();
}
public void testNonConformingPackageName() throws Exception {