aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/java_tools/buildjar/java
diff options
context:
space:
mode:
authorGravatar Liam Miller-Cushon <cushon@google.com>2016-01-21 00:45:32 +0000
committerGravatar Lukacs Berki <lberki@google.com>2016-01-21 10:35:28 +0000
commit0acd006477cf4c741fbea5384bcc30dda99ba210 (patch)
tree21e055cedca5490ea934b4514feffbae92725160 /src/java_tools/buildjar/java
parent0c4bbd892b521f8723ee6a8e0ba9dedbc5cc12e2 (diff)
Refactor DependencyModule#computeStrictClasspath
so it can operate on lists of classpath entries, instead of pre-joined classpath strings. Also improve error for missing .jdeps inputs. -- MOS_MIGRATED_REVID=112634009
Diffstat (limited to 'src/java_tools/buildjar/java')
-rw-r--r--src/java_tools/buildjar/java/com/google/devtools/build/buildjar/javac/plugins/dependency/DependencyModule.java21
1 files changed, 18 insertions, 3 deletions
diff --git a/src/java_tools/buildjar/java/com/google/devtools/build/buildjar/javac/plugins/dependency/DependencyModule.java b/src/java_tools/buildjar/java/com/google/devtools/build/buildjar/javac/plugins/dependency/DependencyModule.java
index b5a409f638..f3e4ab4809 100644
--- a/src/java_tools/buildjar/java/com/google/devtools/build/buildjar/javac/plugins/dependency/DependencyModule.java
+++ b/src/java_tools/buildjar/java/com/google/devtools/build/buildjar/javac/plugins/dependency/DependencyModule.java
@@ -17,6 +17,7 @@ package com.google.devtools.build.buildjar.javac.plugins.dependency;
import com.google.common.annotations.VisibleForTesting;
import com.google.common.base.Joiner;
import com.google.common.base.Splitter;
+import com.google.common.base.Verify;
import com.google.devtools.build.buildjar.javac.plugins.BlazeJavaCompilerPlugin;
import com.google.devtools.build.lib.view.proto.Deps;
import com.google.devtools.build.lib.view.proto.Deps.Dependency.Kind;
@@ -267,6 +268,18 @@ public final class DependencyModule {
return originalClasspath;
}
+ return CLASSPATH_JOINER.join(
+ computeStrictClasspath(CLASSPATH_SPLITTER.split(originalClasspath)));
+ }
+
+ /**
+ * Computes a reduced compile-time classpath from the union of direct dependencies and their
+ * dependencies, as listed in the associated .deps artifacts.
+ */
+ public List<String> computeStrictClasspath(Iterable<String> originalClasspath)
+ throws IOException {
+ Verify.verify(strictClasspathMode);
+
// Classpath = direct deps + runtime direct deps + their .deps
requiredClasspath = new HashSet<>(directJarsToTargets.keySet());
@@ -276,12 +289,12 @@ public final class DependencyModule {
// Filter the initial classpath and keep the original order
List<String> filteredClasspath = new ArrayList<>();
- for (String entry : CLASSPATH_SPLITTER.split(originalClasspath)) {
+ for (String entry : originalClasspath) {
if (requiredClasspath.contains(entry)) {
filteredClasspath.add(entry);
}
}
- return CLASSPATH_JOINER.join(filteredClasspath);
+ return filteredClasspath;
}
@VisibleForTesting
@@ -304,6 +317,8 @@ public final class DependencyModule {
requiredClasspath.add(dep.getPath());
}
}
+ } catch (IOException e) {
+ throw new IOException(String.format("error reading deps artifact: %s", path), e);
}
}
@@ -464,7 +479,7 @@ public final class DependencyModule {
/**
* Set the message to display when a missing indirect dependency is found.
- *
+ *
* @param fixMessage the fix message
* @return this Builder instance
*/