aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/ideinfo
diff options
context:
space:
mode:
authorGravatar Googler <noreply@google.com>2016-02-04 18:00:33 +0000
committerGravatar David Chen <dzc@google.com>2016-02-04 18:15:55 +0000
commitea16e10b71da3797c22ec8fbe30970dae90e597c (patch)
treee6c0c2781be95396e7ff3d4dec038357740c0a08 /src/main/java/com/google/devtools/build/lib/ideinfo
parent8eccb7f834a262b81e92140d9c3b968dc90d2c47 (diff)
Add jdeps support to AndroidStudioInfoAspect.
This can be used for classpath reduction on the IDE side. -- MOS_MIGRATED_REVID=113861117
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/ideinfo')
-rw-r--r--src/main/java/com/google/devtools/build/lib/ideinfo/AndroidStudioInfoAspect.java74
1 files changed, 19 insertions, 55 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 66bbb694ad..f6d4856374 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
@@ -409,10 +409,7 @@ public class AndroidStudioInfoAspect implements ConfiguredNativeAspectFactory {
Artifact manifest = provider.getManifest();
if (manifest != null) {
builder.setManifest(makeArtifactLocation(manifest));
-
- if (!manifest.isSourceArtifact()) {
- ideResolveArtifacts.add(manifest);
- }
+ addResolveArtifact(ideResolveArtifacts, manifest);
}
for (Artifact artifact : provider.getApksUnderTest()) {
@@ -432,12 +429,12 @@ public class AndroidStudioInfoAspect implements ConfiguredNativeAspectFactory {
Artifact idlClassJar = provider.getIdlClassJar();
if (idlClassJar != null) {
jarBuilder.setJar(makeArtifactLocation(idlClassJar));
- ideResolveArtifacts.add(idlClassJar);
+ addResolveArtifact(ideResolveArtifacts, idlClassJar);
}
Artifact idlSourceJar = provider.getIdlSourceJar();
if (idlSourceJar != null) {
jarBuilder.setSourceJar(makeArtifactLocation(idlSourceJar));
- ideResolveArtifacts.add(idlSourceJar);
+ addResolveArtifact(ideResolveArtifacts, idlSourceJar);
}
if (idlClassJar != null) {
builder.setIdlJar(jarBuilder.build());
@@ -500,11 +497,10 @@ public class AndroidStudioInfoAspect implements ConfiguredNativeAspectFactory {
if (outputJarsProvider != null) {
// java_library
collectJarsFromOutputJarsProvider(builder, ideResolveArtifacts, outputJarsProvider);
- } else {
- JavaSourceInfoProvider provider = base.getProvider(JavaSourceInfoProvider.class);
- if (provider != null) {
- // java_import
- collectJarsFromSourceInfoProvider(builder, ideResolveArtifacts, provider);
+
+ Artifact jdeps = outputJarsProvider.getJdeps();
+ if (jdeps != null) {
+ builder.setJdeps(makeArtifactLocation(jdeps));
}
}
@@ -527,45 +523,6 @@ public class AndroidStudioInfoAspect implements ConfiguredNativeAspectFactory {
return builder.build();
}
- private static void collectJarsFromSourceInfoProvider(
- JavaRuleIdeInfo.Builder builder,
- NestedSetBuilder<Artifact> ideResolveArtifacts,
- JavaSourceInfoProvider provider) {
- Collection<Artifact> sourceJarsForJarFiles = provider.getSourceJarsForJarFiles();
- // For java_import rule, we always have only one source jar specified.
- // The intent is that that source jar provides sources for all imported jars,
- // so we reflect that intent, adding that jar to all LibraryArtifacts we produce
- // for java_import rule. We should consider supporting
- // library=<collection of jars>+<collection of srcjars>
- // mode in our AndroidStudio plugin (Android Studio itself supports that).
- Artifact sourceJar;
- if (sourceJarsForJarFiles.size() > 0) {
- sourceJar = sourceJarsForJarFiles.iterator().next();
- } else {
- sourceJar = null;
- }
-
- for (Artifact artifact : provider.getJarFiles()) {
- LibraryArtifact.Builder libraryBuilder = LibraryArtifact.newBuilder();
- libraryBuilder.setJar(makeArtifactLocation(artifact));
-
- if (!artifact.isSourceArtifact()) {
- ideResolveArtifacts.add(artifact);
- }
-
- if (sourceJar != null) {
- libraryBuilder.setSourceJar(makeArtifactLocation(sourceJar));
- }
- builder.addJars(libraryBuilder.build());
- }
-
- if (sourceJar != null) {
- if (!sourceJar.isSourceArtifact()) {
- ideResolveArtifacts.add(sourceJar);
- }
- }
- }
-
private static void collectJarsFromOutputJarsProvider(
JavaRuleIdeInfo.Builder builder,
NestedSetBuilder<Artifact> ideResolveArtifacts,
@@ -575,17 +532,17 @@ public class AndroidStudioInfoAspect implements ConfiguredNativeAspectFactory {
Artifact classJar = outputJar.getClassJar();
if (classJar != null) {
jarsBuilder.setJar(makeArtifactLocation(classJar));
- ideResolveArtifacts.add(classJar);
+ addResolveArtifact(ideResolveArtifacts, classJar);
}
Artifact iJar = outputJar.getIJar();
if (iJar != null) {
jarsBuilder.setInterfaceJar(makeArtifactLocation(iJar));
- ideResolveArtifacts.add(iJar);
+ addResolveArtifact(ideResolveArtifacts, iJar);
}
Artifact srcJar = outputJar.getSrcJar();
if (srcJar != null) {
jarsBuilder.setSourceJar(makeArtifactLocation(srcJar));
- ideResolveArtifacts.add(srcJar);
+ addResolveArtifact(ideResolveArtifacts, srcJar);
}
// We don't want to add anything that doesn't have a class jar
@@ -605,12 +562,12 @@ public class AndroidStudioInfoAspect implements ConfiguredNativeAspectFactory {
Artifact genClassJar = genJarsProvider.getGenClassJar();
if (genClassJar != null) {
genjarsBuilder.setJar(makeArtifactLocation(genClassJar));
- ideResolveArtifacts.add(genClassJar);
+ addResolveArtifact(ideResolveArtifacts, genClassJar);
}
Artifact gensrcJar = genJarsProvider.getGenSourceJar();
if (gensrcJar != null) {
genjarsBuilder.setSourceJar(makeArtifactLocation(gensrcJar));
- ideResolveArtifacts.add(gensrcJar);
+ addResolveArtifact(ideResolveArtifacts, gensrcJar);
}
if (genjarsBuilder.hasJar()) {
builder.addGeneratedJars(genjarsBuilder.build());
@@ -675,4 +632,11 @@ public class AndroidStudioInfoAspect implements ConfiguredNativeAspectFactory {
}
}
}
+
+ private static void addResolveArtifact(NestedSetBuilder<Artifact> ideResolveArtifacts,
+ Artifact artifact) {
+ if (!artifact.isSourceArtifact()) {
+ ideResolveArtifacts.add(artifact);
+ }
+ }
}