diff options
author | Googler <noreply@google.com> | 2015-09-30 17:23:34 +0000 |
---|---|---|
committer | Florian Weikert <fwe@google.com> | 2015-09-30 23:45:43 +0000 |
commit | 70af6fe41b9be75768ba410b47cd513014e15c28 (patch) | |
tree | e3a0f78a6d0c592683cc945070e6389a549b77d9 /src/main | |
parent | 690e6400d2046a6b9266069e9a4bc2b3aa0baee1 (diff) |
Filter idl sources from AndroidStudioInfoAspect.
These java sources are already included in the idl jars.
--
MOS_MIGRATED_REVID=104309944
Diffstat (limited to 'src/main')
3 files changed, 34 insertions, 3 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; |