aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com
diff options
context:
space:
mode:
authorGravatar Dmitry Lomov <dslomov@google.com>2016-02-08 14:21:14 +0000
committerGravatar Dmitry Lomov <dslomov@google.com>2016-02-09 12:16:43 +0000
commit552e3e40658e689881d44d69ed8ffcd6c45ae995 (patch)
treea13e7006228d25ef9e338a550686c96b90f15d90 /src/main/java/com
parent2d47eaa13fbb23c38247dad27df8ea8625430ce6 (diff)
Expose JavaRuleOutputJarsProvider to Skylark and utilize it in ide info aspect.
-- MOS_MIGRATED_REVID=114104006
Diffstat (limited to 'src/main/java/com')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/JavaRuleOutputJarsProvider.java34
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/JavaSkylarkApiProvider.java9
2 files changed, 42 insertions, 1 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaRuleOutputJarsProvider.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaRuleOutputJarsProvider.java
index c8e0532f17..e83ad194a6 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaRuleOutputJarsProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaRuleOutputJarsProvider.java
@@ -18,6 +18,8 @@ import com.google.common.collect.ImmutableList;
import com.google.devtools.build.lib.actions.Artifact;
import com.google.devtools.build.lib.analysis.TransitiveInfoProvider;
import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
import com.google.devtools.build.lib.util.Preconditions;
import javax.annotation.Nullable;
@@ -26,6 +28,7 @@ import javax.annotation.Nullable;
* Provides information about jar files produced by a Java rule.
*/
@Immutable
+@SkylarkModule(name = "JavaOutputJars", doc = "Information about outputs of a Java rule")
public final class JavaRuleOutputJarsProvider implements TransitiveInfoProvider {
public static final JavaRuleOutputJarsProvider EMPTY =
@@ -34,6 +37,10 @@ public final class JavaRuleOutputJarsProvider implements TransitiveInfoProvider
/**
* A collection of artifacts associated with a jar output.
*/
+ @SkylarkModule(
+ name = "JavaOutput",
+ doc = "Java classes jar, together with their associated source and interface archives"
+ )
public static class OutputJar {
@Nullable private final Artifact classJar;
@Nullable private final Artifact iJar;
@@ -47,16 +54,34 @@ public final class JavaRuleOutputJarsProvider implements TransitiveInfoProvider
}
@Nullable
+ @SkylarkCallable(
+ name = "class_jar",
+ doc = "A classes jar file",
+ allowReturnNones = true,
+ structField = true
+ )
public Artifact getClassJar() {
return classJar;
}
@Nullable
+ @SkylarkCallable(
+ name = "ijar",
+ doc = "A interface jar file",
+ allowReturnNones = true,
+ structField = true
+ )
public Artifact getIJar() {
return iJar;
}
@Nullable
+ @SkylarkCallable(
+ name = "source_jar",
+ doc = "A sources archive file",
+ allowReturnNones = true,
+ structField = true
+ )
public Artifact getSrcJar() {
return srcJar;
}
@@ -71,11 +96,18 @@ public final class JavaRuleOutputJarsProvider implements TransitiveInfoProvider
this.jdeps = jdeps;
}
+ @SkylarkCallable(name = "jars", doc = "A list of jars the rule outputs.", structField = true)
public Iterable<OutputJar> getOutputJars() {
return outputJars;
}
@Nullable
+ @SkylarkCallable(
+ name = "jdeps",
+ doc = "The jdeps file for rule outputs.",
+ structField = true,
+ allowReturnNones = true
+ )
public Artifact getJdeps() {
return jdeps;
}
@@ -85,7 +117,7 @@ public final class JavaRuleOutputJarsProvider implements TransitiveInfoProvider
}
/**
- * Builderassociated.
+ * Builder for {@link JavaRuleOutputJarsProvider}.
*/
public static class Builder {
ImmutableList.Builder<OutputJar> outputJars = ImmutableList.builder();
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaSkylarkApiProvider.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaSkylarkApiProvider.java
index 6b21ebe1c6..b1c3e7b489 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaSkylarkApiProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaSkylarkApiProvider.java
@@ -69,4 +69,13 @@ public final class JavaSkylarkApiProvider extends SkylarkApiProvider {
JavaSourceJarsProvider sourceJars = getInfo().getProvider(JavaSourceJarsProvider.class);
return sourceJars.getTransitiveSourceJars();
}
+
+ @SkylarkCallable(
+ name = "outputs",
+ doc = "Returns information about outputs of this Java rule",
+ structField = true
+ )
+ public JavaRuleOutputJarsProvider getOutputJars() {
+ return getInfo().getProvider(JavaRuleOutputJarsProvider.class);
+ }
}