aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--src/main/java/com/google/devtools/build/lib/cmdline/PackageIdentifier.java21
1 files changed, 15 insertions, 6 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/cmdline/PackageIdentifier.java b/src/main/java/com/google/devtools/build/lib/cmdline/PackageIdentifier.java
index a37c17f1d8..e992366f22 100644
--- a/src/main/java/com/google/devtools/build/lib/cmdline/PackageIdentifier.java
+++ b/src/main/java/com/google/devtools/build/lib/cmdline/PackageIdentifier.java
@@ -48,6 +48,7 @@ import javax.annotation.concurrent.Immutable;
*/
@Immutable
public final class PackageIdentifier implements Comparable<PackageIdentifier>, Serializable {
+ public static final String EXTERNAL_PREFIX = "external";
private static final Interner<PackageIdentifier> INTERNER = Interners.newWeakInterner();
@@ -96,7 +97,7 @@ public final class PackageIdentifier implements Comparable<PackageIdentifier>, S
}
}
- private void readObject(ObjectInputStream in) throws IOException {
+ private void readObject(@SuppressWarnings("unused") ObjectInputStream in) throws IOException {
throw new IOException("Serialization is allowed only by proxy");
}
@@ -123,7 +124,8 @@ public final class PackageIdentifier implements Comparable<PackageIdentifier>, S
/**
* Makes sure that name is a valid repository name and creates a new RepositoryName using it.
- * @throws TargetParsingException if the name is invalid.
+ *
+ * @throws LabelSyntaxException if the name is invalid
*/
public static RepositoryName create(String name) throws LabelSyntaxException {
try {
@@ -143,7 +145,7 @@ public final class PackageIdentifier implements Comparable<PackageIdentifier>, S
* was invalid.
*/
public static Pair<RepositoryName, PathFragment> fromPathFragment(PathFragment path) {
- if (path.segmentCount() < 2 || !path.getSegment(0).equals("external")) {
+ if (path.segmentCount() < 2 || !path.getSegment(0).equals(EXTERNAL_PREFIX)) {
return null;
}
try {
@@ -214,6 +216,15 @@ public final class PackageIdentifier implements Comparable<PackageIdentifier>, S
}
/**
+ * Returns the path at which this repository is mapped within the exec root.
+ */
+ public PathFragment getPathFragment() {
+ return isDefault()
+ ? PathFragment.EMPTY_FRAGMENT
+ : new PathFragment(EXTERNAL_PREFIX).getRelative(strippedName());
+ }
+
+ /**
* Returns the repository name, with leading "{@literal @}" (or "" for the default repository).
*/
@Override
@@ -325,9 +336,7 @@ public final class PackageIdentifier implements Comparable<PackageIdentifier>, S
* repository and package names.
*/
public PathFragment getPathFragment() {
- return repository.isDefault() ? pkgName
- : new PathFragment("external").getRelative(repository.strippedName())
- .getRelative(pkgName);
+ return repository.getPathFragment().getRelative(pkgName);
}
/**