aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorGravatar Googler <noreply@google.com>2015-10-26 15:05:42 +0000
committerGravatar Florian Weikert <fwe@google.com>2015-10-27 11:47:16 +0000
commitca2ee182bbf8b581fe1eea44dc737e98881dc3b1 (patch)
treed234241db9e4ce3cd7f711bdaceda569b9295634 /src
parentfc9b6e628aacfdfaae7b6048dcbbed0df0bba8ec (diff)
Support proto_library in AndroidStudioInfoAspect.
-- MOS_MIGRATED_REVID=106300290
Diffstat (limited to 'src')
-rw-r--r--src/main/java/com/google/devtools/build/lib/ideinfo/AndroidStudioInfoAspect.java44
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/AndroidCommon.java4
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/JavaBinary.java4
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/JavaLibrary.java4
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/JavaRuleOutputJarsProvider.java81
5 files changed, 94 insertions, 43 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 0da356094a..fa67df1a45 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
@@ -54,6 +54,7 @@ import com.google.devtools.build.lib.rules.android.AndroidSdkProvider;
import com.google.devtools.build.lib.rules.java.JavaExportsProvider;
import com.google.devtools.build.lib.rules.java.JavaGenJarsProvider;
import com.google.devtools.build.lib.rules.java.JavaRuleOutputJarsProvider;
+import com.google.devtools.build.lib.rules.java.JavaRuleOutputJarsProvider.OutputJar;
import com.google.devtools.build.lib.rules.java.JavaSourceInfoProvider;
import com.google.devtools.build.lib.vfs.Path;
import com.google.devtools.build.lib.vfs.PathFragment;
@@ -225,7 +226,8 @@ public class AndroidStudioInfoAspect implements ConfiguredAspectFactory {
|| ruleKind == Kind.ANDROID_LIBRARY
|| ruleKind == Kind.ANDROID_BINARY
|| ruleKind == Kind.ANDROID_TEST
- || ruleKind == Kind.ANDROID_ROBOELECTRIC_TEST) {
+ || ruleKind == Kind.ANDROID_ROBOELECTRIC_TEST
+ || ruleKind == Kind.PROTO_LIBRARY) {
outputBuilder.setJavaRuleIdeInfo(makeJavaRuleIdeInfo(base, ruleContext, ideResolveArtifacts));
}
if (ruleKind == Kind.ANDROID_LIBRARY
@@ -435,25 +437,27 @@ public class AndroidStudioInfoAspect implements ConfiguredAspectFactory {
NestedSetBuilder<Artifact> ideResolveArtifacts,
JavaRuleOutputJarsProvider outputJarsProvider) {
LibraryArtifact.Builder jarsBuilder = LibraryArtifact.newBuilder();
- Artifact classJar = outputJarsProvider.getClassJar();
- if (classJar != null) {
- jarsBuilder.setJar(makeArtifactLocation(classJar));
- ideResolveArtifacts.add(classJar);
- }
- Artifact iJar = outputJarsProvider.getIJar();
- if (iJar != null) {
- jarsBuilder.setInterfaceJar(makeArtifactLocation(iJar));
- ideResolveArtifacts.add(iJar);
- }
- Artifact srcJar = outputJarsProvider.getSrcJar();
- if (srcJar != null) {
- jarsBuilder.setSourceJar(makeArtifactLocation(srcJar));
- ideResolveArtifacts.add(srcJar);
- }
+ for (OutputJar outputJar : outputJarsProvider.getOutputJars()) {
+ Artifact classJar = outputJar.getClassJar();
+ if (classJar != null) {
+ jarsBuilder.setJar(makeArtifactLocation(classJar));
+ ideResolveArtifacts.add(classJar);
+ }
+ Artifact iJar = outputJar.getIJar();
+ if (iJar != null) {
+ jarsBuilder.setInterfaceJar(makeArtifactLocation(iJar));
+ ideResolveArtifacts.add(iJar);
+ }
+ Artifact srcJar = outputJar.getSrcJar();
+ if (srcJar != null) {
+ jarsBuilder.setSourceJar(makeArtifactLocation(srcJar));
+ ideResolveArtifacts.add(srcJar);
+ }
- // We don't want to add anything that doesn't have a class jar
- if (classJar != null) {
- builder.addJars(jarsBuilder.build());
+ // We don't want to add anything that doesn't have a class jar
+ if (classJar != null) {
+ builder.addJars(jarsBuilder.build());
+ }
}
}
@@ -512,6 +516,8 @@ public class AndroidStudioInfoAspect implements ConfiguredAspectFactory {
return Kind.ANDROID_TEST;
case "android_robolectric_test":
return Kind.ANDROID_ROBOELECTRIC_TEST;
+ case "proto_library":
+ return Kind.PROTO_LIBRARY;
default:
{
if (base.getProvider(AndroidSdkProvider.class) != null) {
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 2712eb298e..7516032def 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
@@ -561,8 +561,8 @@ public class AndroidCommon {
return builder
.setFilesToBuild(filesToBuild)
- .add(JavaRuleOutputJarsProvider.class, new JavaRuleOutputJarsProvider(
- classJar, iJar, srcJar))
+ .add(JavaRuleOutputJarsProvider.class, JavaRuleOutputJarsProvider.builder()
+ .addOutputJar(classJar, iJar, srcJar).build())
.add(
JavaRuntimeJarProvider.class,
new JavaRuntimeJarProvider(javaCommon.getJavaCompilationArtifacts().getRuntimeJars()))
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 9996cd9226..fb55436e9e 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
@@ -281,8 +281,8 @@ public class JavaBinary implements RuleConfiguredTargetFactory {
return builder
.setFilesToBuild(filesToBuild)
- .add(JavaRuleOutputJarsProvider.class, new JavaRuleOutputJarsProvider(
- classJar, null /* iJar */, srcJar))
+ .add(JavaRuleOutputJarsProvider.class, JavaRuleOutputJarsProvider.builder()
+ .addOutputJar(classJar, null /* iJar */, srcJar).build())
.add(RunfilesProvider.class, runfilesProvider)
.setRunfilesSupport(runfilesSupport, executable)
.add(
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 38b3b697a3..da1ef8ced5 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
@@ -229,8 +229,8 @@ public class JavaLibrary implements RuleConfiguredTargetFactory {
NestedSet<Artifact> proguardSpecs = new ProguardLibrary(ruleContext).collectProguardSpecs();
builder
- .add(JavaRuleOutputJarsProvider.class, new JavaRuleOutputJarsProvider(
- classJar, iJar, srcJar))
+ .add(JavaRuleOutputJarsProvider.class, JavaRuleOutputJarsProvider.builder()
+ .addOutputJar(classJar, iJar, srcJar).build())
.add(JavaRuntimeJarProvider.class,
new JavaRuntimeJarProvider(common.getJavaCompilationArtifacts().getRuntimeJars()))
.add(RunfilesProvider.class, RunfilesProvider.simple(runfiles))
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 2196ecc49f..e5c956c639 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
@@ -14,6 +14,8 @@
package com.google.devtools.build.lib.rules.java;
+import com.google.common.base.Preconditions;
+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;
@@ -25,29 +27,72 @@ import javax.annotation.Nullable;
*/
@Immutable
public final class JavaRuleOutputJarsProvider implements TransitiveInfoProvider {
- @Nullable private final Artifact classJar;
- @Nullable private final Artifact iJar;
- @Nullable private final Artifact srcJar;
-
- public JavaRuleOutputJarsProvider(
- @Nullable Artifact classJar, @Nullable Artifact iJar, @Nullable Artifact srcJar) {
- this.classJar = classJar;
- this.iJar = iJar;
- this.srcJar = srcJar;
+
+ public static final JavaRuleOutputJarsProvider EMPTY =
+ new JavaRuleOutputJarsProvider(ImmutableList.<OutputJar>of());
+
+ /**
+ * A collection of artifacts associated with a jar output.
+ */
+ public static class OutputJar {
+ @Nullable private final Artifact classJar;
+ @Nullable private final Artifact iJar;
+ @Nullable private final Artifact srcJar;
+
+ private OutputJar(
+ @Nullable Artifact classJar, @Nullable Artifact iJar, @Nullable Artifact srcJar) {
+ this.classJar = classJar;
+ this.iJar = iJar;
+ this.srcJar = srcJar;
+ }
+
+ @Nullable
+ public Artifact getClassJar() {
+ return classJar;
+ }
+
+ @Nullable
+ public Artifact getIJar() {
+ return iJar;
+ }
+
+ @Nullable
+ public Artifact getSrcJar() {
+ return srcJar;
+ }
}
- @Nullable
- public Artifact getClassJar() {
- return classJar;
+ final Iterable<OutputJar> outputJars;
+
+ private JavaRuleOutputJarsProvider(Iterable<OutputJar> outputJars) {
+ this.outputJars = outputJars;
+ }
+
+ public Iterable<OutputJar> getOutputJars() {
+ return outputJars;
}
- @Nullable
- public Artifact getIJar() {
- return iJar;
+ public static Builder builder() {
+ return new Builder();
}
- @Nullable
- public Artifact getSrcJar() {
- return srcJar;
+ /**
+ * Builderassociated.
+ */
+ public static class Builder {
+ ImmutableList.Builder<OutputJar> outputJars = ImmutableList.builder();
+
+ public Builder addOutputJar(
+ @Nullable Artifact classJar,
+ @Nullable Artifact iJar,
+ @Nullable Artifact sourceJar) {
+ Preconditions.checkState(classJar != null || iJar != null || sourceJar != null);
+ outputJars.add(new OutputJar(classJar, iJar, sourceJar));
+ return this;
+ }
+
+ public JavaRuleOutputJarsProvider build() {
+ return new JavaRuleOutputJarsProvider(outputJars.build());
+ }
}
}