aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com
diff options
context:
space:
mode:
authorGravatar dbabkin <dbabkin@google.com>2017-12-07 05:49:46 -0800
committerGravatar Copybara-Service <copybara-piper@google.com>2017-12-07 05:51:48 -0800
commit7c8cd9c402b3ca4f7b50074d249ef8e1dc52086a (patch)
treeca87a69553e56bf9dbb0843a6c6a15165b01fbce /src/main/java/com
parentcbac328f40cbf42569d93cf0027405a590504281 (diff)
Expose two methods from JavaSkylarkApiProvider in JavaInfo
JavaSkylarkApiProvider will be deprecated soon and replaced by JavaInfo. Methods exposed: getCompilationInfoProvider() getTransitiveExports() Changed signature of JavaCommon methods to accept JavaInfoBuilder. RELNOTES:none PiperOrigin-RevId: 178229835
Diffstat (limited to 'src/main/java/com')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/AndroidCommon.java14
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/AndroidLocalTestBase.java12
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/JavaBinary.java10
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/JavaCommon.java31
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/JavaImport.java7
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/JavaInfo.java25
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/JavaLibrary.java11
7 files changed, 68 insertions, 42 deletions
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 781bc12058..d5175b4837 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,7 +61,6 @@ import com.google.devtools.build.lib.rules.java.JavaCompilationArgs.ClasspathTyp
import com.google.devtools.build.lib.rules.java.JavaCompilationArgsProvider;
import com.google.devtools.build.lib.rules.java.JavaCompilationArtifacts;
import com.google.devtools.build.lib.rules.java.JavaCompilationHelper;
-import com.google.devtools.build.lib.rules.java.JavaGenJarsProvider;
import com.google.devtools.build.lib.rules.java.JavaInfo;
import com.google.devtools.build.lib.rules.java.JavaRuleOutputJarsProvider;
import com.google.devtools.build.lib.rules.java.JavaRuleOutputJarsProvider.OutputJar;
@@ -792,18 +791,19 @@ public class AndroidCommon {
recursiveJavaCompilationArgs,
compileTimeDependencyArtifacts,
NestedSetBuilder.<Artifact>emptySet(Order.STABLE_ORDER));
- javaCommon.addTransitiveInfoProviders(builder, filesToBuild, classJar, ANDROID_COLLECTION_SPEC);
- JavaGenJarsProvider javaGenJarsProvider =
- javaCommon.createJavaGenJarsProvider(genClassJar, genSourceJar);
- javaCommon.addJavaGenJarsProvider(builder, javaGenJarsProvider);
+ JavaInfo.Builder javaInfoBuilder = JavaInfo.Builder.create();
+
+ javaCommon.addTransitiveInfoProviders(
+ builder, javaInfoBuilder, filesToBuild, classJar, ANDROID_COLLECTION_SPEC);
+
+ javaCommon.addGenJarsProvider(builder, javaInfoBuilder, genClassJar, genSourceJar);
DataBinding.maybeAddProvider(builder, ruleContext);
- JavaInfo javaInfo = JavaInfo.Builder.create()
+ JavaInfo javaInfo = javaInfoBuilder
.addProvider(JavaCompilationArgsProvider.class, compilationArgsProvider)
.addProvider(JavaRuleOutputJarsProvider.class, ruleOutputJarsProvider)
.addProvider(JavaSourceJarsProvider.class, sourceJarsProvider)
- .addProvider(JavaGenJarsProvider.class, javaGenJarsProvider)
.build();
return builder
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidLocalTestBase.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidLocalTestBase.java
index 0842f68305..87fa14562b 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidLocalTestBase.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidLocalTestBase.java
@@ -45,7 +45,6 @@ import com.google.devtools.build.lib.rules.java.JavaCompilationArtifacts;
import com.google.devtools.build.lib.rules.java.JavaCompilationHelper;
import com.google.devtools.build.lib.rules.java.JavaConfiguration;
import com.google.devtools.build.lib.rules.java.JavaConfiguration.OneVersionEnforcementLevel;
-import com.google.devtools.build.lib.rules.java.JavaGenJarsProvider;
import com.google.devtools.build.lib.rules.java.JavaHelper;
import com.google.devtools.build.lib.rules.java.JavaInfo;
import com.google.devtools.build.lib.rules.java.JavaPrimaryClassProvider;
@@ -301,11 +300,10 @@ public abstract class AndroidLocalTestBase implements RuleConfiguredTargetFactor
JavaRuleOutputJarsProvider ruleOutputJarsProvider = javaRuleOutputJarsProviderBuilder.build();
- javaCommon.addTransitiveInfoProviders(builder, filesToBuild, classJar);
+ JavaInfo.Builder javaInfoBuilder = JavaInfo.Builder.create();
- JavaGenJarsProvider javaGenJarsProvider =
- javaCommon.createJavaGenJarsProvider(genClassJar, genSourceJar);
- javaCommon.addJavaGenJarsProvider(builder, javaGenJarsProvider);
+ javaCommon.addTransitiveInfoProviders(builder, javaInfoBuilder, filesToBuild, classJar);
+ javaCommon.addGenJarsProvider(builder, javaInfoBuilder, genClassJar, genSourceJar);
// Just confirming that there are no aliases being used here.
AndroidFeatureFlagSetProvider.getAndValidateFlagMapFromRuleContext(ruleContext);
@@ -317,11 +315,9 @@ public abstract class AndroidLocalTestBase implements RuleConfiguredTargetFactor
NestedSet<Artifact> extraFilesToRun =
NestedSetBuilder.create(Order.STABLE_ORDER, runfilesSupport.getRunfilesMiddleman());
- JavaInfo javaInfo =
- JavaInfo.Builder.create()
+ JavaInfo javaInfo = javaInfoBuilder
.addProvider(JavaSourceJarsProvider.class, sourceJarsProvider)
.addProvider(JavaRuleOutputJarsProvider.class, ruleOutputJarsProvider)
- .addProvider(JavaGenJarsProvider.class, javaGenJarsProvider)
.build();
return builder
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaBinary.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaBinary.java
index 73a9b356f6..6982f2f5a4 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaBinary.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaBinary.java
@@ -427,16 +427,14 @@ public class JavaBinary implements RuleConfiguredTargetFactory {
JavaRuleOutputJarsProvider ruleOutputJarsProvider = ruleOutputJarsProviderBuilder.build();
- common.addTransitiveInfoProviders(builder, filesToBuild, classJar);
+ JavaInfo.Builder javaInfoBuilder = JavaInfo.Builder.create();
- JavaGenJarsProvider javaGenJarsProvider =
- common.createJavaGenJarsProvider(genClassJar, genSourceJar);
- common.addJavaGenJarsProvider(builder, javaGenJarsProvider);
+ common.addTransitiveInfoProviders(builder, javaInfoBuilder, filesToBuild, classJar);
+ common.addGenJarsProvider(builder, javaInfoBuilder, genClassJar, genSourceJar);
- JavaInfo javaInfo = JavaInfo.Builder.create()
+ JavaInfo javaInfo = javaInfoBuilder
.addProvider(JavaSourceJarsProvider.class, sourceJarsProvider)
.addProvider(JavaRuleOutputJarsProvider.class, ruleOutputJarsProvider)
- .addProvider(JavaGenJarsProvider.class, javaGenJarsProvider)
.build();
return builder
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 78d49c8015..7dfcc4ba2a 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
@@ -702,13 +702,16 @@ public class JavaCommon {
public void addTransitiveInfoProviders(
RuleConfiguredTargetBuilder builder,
+ JavaInfo.Builder javaInfoBuilder,
NestedSet<Artifact> filesToBuild,
@Nullable Artifact classJar) {
- addTransitiveInfoProviders(builder, filesToBuild, classJar, JAVA_COLLECTION_SPEC);
+ addTransitiveInfoProviders(
+ builder, javaInfoBuilder, filesToBuild, classJar, JAVA_COLLECTION_SPEC);
}
public void addTransitiveInfoProviders(
RuleConfiguredTargetBuilder builder,
+ JavaInfo.Builder javaInfoBuilder,
NestedSet<Artifact> filesToBuild,
@Nullable Artifact classJar,
InstrumentationSpec instrumentationSpec) {
@@ -723,6 +726,9 @@ public class JavaCommon {
.add(JavaExportsProvider.class, exportsProvider)
.addOutputGroup(OutputGroupProvider.FILES_TO_COMPILE, getFilesToCompile(classJar))
.add(JavaCompilationInfoProvider.class, compilationInfoProvider);
+
+ javaInfoBuilder.addProvider(JavaExportsProvider.class, exportsProvider);
+ javaInfoBuilder.addProvider(JavaCompilationInfoProvider.class, compilationInfoProvider);
}
private static InstrumentedFilesProvider getInstrumentationFilesProvider(RuleContext ruleContext,
@@ -737,23 +743,24 @@ public class JavaCommon {
/*withBaselineCoverage*/!TargetUtils.isTestRule(ruleContext.getTarget()));
}
- public JavaGenJarsProvider createJavaGenJarsProvider(
- @Nullable Artifact genClassJar, @Nullable Artifact genSourceJar) {
- return collectTransitiveGenJars(
- javaCompilationHelper.usesAnnotationProcessing(), genClassJar, genSourceJar);
- }
-
- public void addJavaGenJarsProvider(
+ public void addGenJarsProvider(
RuleConfiguredTargetBuilder builder,
- JavaGenJarsProvider javaGenJarsProvider) {
+ JavaInfo.Builder javaInfoBuilder,
+ @Nullable Artifact genClassJar,
+ @Nullable Artifact genSourceJar) {
+ JavaGenJarsProvider genJarsProvider = collectTransitiveGenJars(
+ javaCompilationHelper.usesAnnotationProcessing(),
+ genClassJar, genSourceJar);
NestedSetBuilder<Artifact> genJarsBuilder = NestedSetBuilder.stableOrder();
- genJarsBuilder.addTransitive(javaGenJarsProvider.getTransitiveGenClassJars());
- genJarsBuilder.addTransitive(javaGenJarsProvider.getTransitiveGenSourceJars());
+ genJarsBuilder.addTransitive(genJarsProvider.getTransitiveGenClassJars());
+ genJarsBuilder.addTransitive(genJarsProvider.getTransitiveGenSourceJars());
builder
- .addProvider(javaGenJarsProvider)
+ .add(JavaGenJarsProvider.class, genJarsProvider)
.addOutputGroup(JavaSemantics.GENERATED_JARS_OUTPUT_GROUP, genJarsBuilder.build());
+
+ javaInfoBuilder.addProvider(JavaGenJarsProvider.class, genJarsProvider);
}
/**
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaImport.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaImport.java
index 738c925b0b..d3359e80ee 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaImport.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaImport.java
@@ -161,8 +161,11 @@ public class JavaImport implements RuleConfiguredTargetFactory {
JavaSourceJarsProvider.create(transitiveJavaSourceJars, srcJars);
JavaCompilationArgsProvider compilationArgsProvider =
JavaCompilationArgsProvider.create(javaCompilationArgs, recursiveJavaCompilationArgs);
- common.addTransitiveInfoProviders(ruleBuilder, filesToBuild, null);
- JavaInfo javaInfo = JavaInfo.Builder.create()
+
+ JavaInfo.Builder javaInfoBuilder = JavaInfo.Builder.create();
+ common.addTransitiveInfoProviders(ruleBuilder, javaInfoBuilder, filesToBuild, null);
+
+ JavaInfo javaInfo = javaInfoBuilder
.addProvider(JavaCompilationArgsProvider.class, compilationArgsProvider)
.addProvider(JavaRuleOutputJarsProvider.class, ruleOutputJarsProvider)
.addProvider(JavaSourceJarsProvider.class, sourceJarsProvider)
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 3bd850f07c..56c633e1bf 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
@@ -22,6 +22,7 @@ import com.google.devtools.build.lib.analysis.TransitiveInfoCollection;
import com.google.devtools.build.lib.analysis.TransitiveInfoProvider;
import com.google.devtools.build.lib.analysis.TransitiveInfoProviderMap;
import com.google.devtools.build.lib.analysis.TransitiveInfoProviderMapBuilder;
+import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.lib.collect.nestedset.NestedSet;
import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
@@ -60,7 +61,9 @@ public final class JavaInfo extends NativeInfo {
JavaRuleOutputJarsProvider.class,
JavaRunfilesProvider.class,
JavaPluginInfoProvider.class,
- JavaGenJarsProvider.class
+ JavaGenJarsProvider.class,
+ JavaExportsProvider.class,
+ JavaCompilationInfoProvider.class
);
private final TransitiveInfoProviderMap providers;
@@ -300,6 +303,16 @@ public final class JavaInfo extends NativeInfo {
}
@SkylarkCallable(
+ name = "compilation_info",
+ structField = true,
+ allowReturnNones = true,
+ doc = "Returns compilation information for this Java target."
+ )
+ public JavaCompilationInfoProvider getCompilationInfoProvider() {
+ return getProvider(JavaCompilationInfoProvider.class);
+ }
+
+ @SkylarkCallable(
name = "transitive_deps",
doc = "Returns the transitive set of Jars required to build the target.",
structField = true
@@ -335,6 +348,16 @@ public final class JavaInfo extends NativeInfo {
JavaSourceJarsProvider::getTransitiveSourceJars);
}
+ @SkylarkCallable(
+ name = "transitive_exports",
+ structField = true,
+ doc = "Returns transitive set of labels that are being exported from this rule."
+ )
+ public NestedSet<Label> getTransitiveExports() {
+ return getProviderAsNestedSet(
+ JavaExportsProvider.class,
+ JavaExportsProvider::getTransitiveExports);
+ }
/**
* Gets Provider, check it for not null and call function to get NestedSet&lt;S&gt; from it.
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaLibrary.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaLibrary.java
index 890b07bd8f..df753903eb 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaLibrary.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaLibrary.java
@@ -208,11 +208,11 @@ public class JavaLibrary implements RuleConfiguredTargetFactory {
JavaRuleOutputJarsProvider ruleOutputJarsProvider = ruleOutputJarsProviderBuilder.build();
NestedSet<Artifact> filesToBuild = filesBuilder.build();
- common.addTransitiveInfoProviders(builder, filesToBuild, classJar);
- JavaGenJarsProvider javaGenJarsProvider =
- common.createJavaGenJarsProvider(genClassJar, genSourceJar);
- common.addJavaGenJarsProvider(builder, javaGenJarsProvider);
+ JavaInfo.Builder javaInfoBuilder = JavaInfo.Builder.create();
+
+ common.addTransitiveInfoProviders(builder, javaInfoBuilder, filesToBuild, classJar);
+ common.addGenJarsProvider(builder, javaInfoBuilder, genClassJar, genSourceJar);
NestedSet<Artifact> proguardSpecs = new ProguardLibrary(ruleContext).collectProguardSpecs();
@@ -224,14 +224,13 @@ public class JavaLibrary implements RuleConfiguredTargetFactory {
: JavaCommon.getTransitivePlugins(ruleContext);
// java_library doesn't need to return JavaRunfilesProvider
- JavaInfo javaInfo = JavaInfo.Builder.create()
+ JavaInfo javaInfo = javaInfoBuilder
.addProvider(JavaCompilationArgsProvider.class, compilationArgsProvider)
.addProvider(JavaSourceJarsProvider.class, sourceJarsProvider)
.addProvider(ProtoJavaApiInfoAspectProvider.class, protoAspectBuilder.build())
.addProvider(JavaRuleOutputJarsProvider.class, ruleOutputJarsProvider)
// TODO(bazel-team): this should only happen for java_plugin
.addProvider(JavaPluginInfoProvider.class, pluginInfoProvider)
- .addProvider(JavaGenJarsProvider.class, javaGenJarsProvider)
.build();
builder