From 4835caa1138954eb5700a0055d636b405a8d1482 Mon Sep 17 00:00:00 2001 From: Andrew Pellegrini Date: Mon, 26 Oct 2015 20:58:07 +0000 Subject: Refactor instrumentation in JavaCommon to remove Android specific content. -- MOS_MIGRATED_REVID=106333445 --- .../build/lib/rules/android/AndroidCommon.java | 7 +++++- .../devtools/build/lib/rules/java/JavaCommon.java | 25 ++++++++++++++++------ 2 files changed, 24 insertions(+), 8 deletions(-) (limited to 'src') 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 7516032def..77cb1b7a1c 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 @@ -61,6 +61,7 @@ import com.google.devtools.build.lib.rules.java.JavaSemantics; import com.google.devtools.build.lib.rules.java.JavaSourceJarsProvider; import com.google.devtools.build.lib.rules.java.JavaTargetAttributes; import com.google.devtools.build.lib.rules.java.JavaUtil; +import com.google.devtools.build.lib.rules.test.InstrumentedFilesCollector.InstrumentationSpec; import com.google.devtools.build.lib.syntax.Type; import com.google.devtools.build.lib.vfs.PathFragment; @@ -77,6 +78,10 @@ import javax.annotation.Nullable; * artifacts to the other rules. */ public class AndroidCommon { + + public static final InstrumentationSpec ANDROID_COLLECTION_SPEC = JavaCommon.JAVA_COLLECTION_SPEC + .withDependencyAttributes("deps", "data", "exports", "runtime_deps", "binary_under_test"); + private final RuleContext ruleContext; private final JavaCommon javaCommon; @@ -555,7 +560,7 @@ public class AndroidCommon { .addRunfiles(ruleContext, RunfilesProvider.DEFAULT_RUNFILES) .build(); - javaCommon.addTransitiveInfoProviders(builder, filesToBuild, classJar); + javaCommon.addTransitiveInfoProviders(builder, filesToBuild, classJar, ANDROID_COLLECTION_SPEC); javaCommon.addGenJarsProvider(builder, genClassJar, genSourceJar); idlHelper.addTransitiveInfoProviders(builder, classJar, manifestProtoOutput); diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaCommon.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaCommon.java index fd9825f32b..ca9ae07b96 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaCommon.java +++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaCommon.java @@ -76,7 +76,7 @@ public class JavaCommon { public static final InstrumentationSpec JAVA_COLLECTION_SPEC = new InstrumentationSpec( FileTypeSet.of(JavaSemantics.JAVA_SOURCE)) .withSourceAttributes("srcs") - .withDependencyAttributes("deps", "data", "exports", "runtime_deps", "binary_under_test"); + .withDependencyAttributes("deps", "data", "exports", "runtime_deps"); /** * Collects all metadata files generated by Java compilation actions. @@ -352,9 +352,9 @@ public class JavaCommon { } return new JavaGenJarsProvider( usesAnnotationProcessing, - genClassJar, + genClassJar, genSourceJar, - classJarsBuilder.build(), + classJarsBuilder.build(), sourceJarsBuilder.build() ); } @@ -566,16 +566,27 @@ public class JavaCommon { public void addTransitiveInfoProviders(RuleConfiguredTargetBuilder builder, NestedSet filesToBuild, @Nullable Artifact classJar) { - InstrumentedFilesProvider instrumentedFilesProvider = InstrumentedFilesCollector.collect( - ruleContext, JAVA_COLLECTION_SPEC, JAVA_METADATA_COLLECTOR, - filesToBuild, /*withBaselineCoverage*/!TargetUtils.isTestRule(ruleContext.getTarget())); + addTransitiveInfoProviders(builder, filesToBuild, classJar, JAVA_COLLECTION_SPEC); + } + + public void addTransitiveInfoProviders(RuleConfiguredTargetBuilder builder, + NestedSet filesToBuild, @Nullable Artifact classJar, + InstrumentationSpec instrumentationSpec) { + addInstrumentationFilesProvider(builder, filesToBuild, instrumentationSpec); builder - .add(InstrumentedFilesProvider.class, instrumentedFilesProvider) .add(JavaExportsProvider.class, new JavaExportsProvider(collectTransitiveExports())) .addOutputGroup(OutputGroupProvider.FILES_TO_COMPILE, getFilesToCompile(classJar)); } + private void addInstrumentationFilesProvider(RuleConfiguredTargetBuilder builder, + NestedSet filesToBuild, InstrumentationSpec instrumentationSpec) { + InstrumentedFilesProvider instrumentedFilesProvider = InstrumentedFilesCollector.collect( + ruleContext, instrumentationSpec, JAVA_METADATA_COLLECTOR, + filesToBuild, /*withBaselineCoverage*/!TargetUtils.isTestRule(ruleContext.getTarget())); + builder.add(InstrumentedFilesProvider.class, instrumentedFilesProvider); + } + public void addGenJarsProvider(RuleConfiguredTargetBuilder builder, @Nullable Artifact genClassJar, @Nullable Artifact genSourceJar) { JavaGenJarsProvider genJarsProvider = collectTransitiveGenJars( -- cgit v1.2.3