aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java
diff options
context:
space:
mode:
authorGravatar Googler <noreply@google.com>2016-04-11 14:57:06 +0000
committerGravatar Dmitry Lomov <dslomov@google.com>2016-04-12 13:57:40 +0000
commit3aae85f50773bf037cd02196437a904949332dd9 (patch)
tree2a7096990cd55c41b96fe92e64e85001e5f57b69 /src/main/java
parent511d49b2f9ddcee12a0c39302f47984910a5233e (diff)
Make NoSuchTargetException a concrete class. Removed BadWorkspaceFileException and BadPreludeFileException.
BadWorkspaceFileException and BadPreludeFileException are not doing anythings special rather than providing a custom message. Replace them by using NoSuchTargetException directly. -- MOS_MIGRATED_REVID=119530878
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/packages/BuildFileContainsErrorsException.java10
-rw-r--r--src/main/java/com/google/devtools/build/lib/packages/NoSuchPackageException.java30
-rw-r--r--src/main/java/com/google/devtools/build/lib/packages/NoSuchTargetException.java20
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/PackageFunction.java41
4 files changed, 44 insertions, 57 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/packages/BuildFileContainsErrorsException.java b/src/main/java/com/google/devtools/build/lib/packages/BuildFileContainsErrorsException.java
index 525d6189f0..b527b92203 100644
--- a/src/main/java/com/google/devtools/build/lib/packages/BuildFileContainsErrorsException.java
+++ b/src/main/java/com/google/devtools/build/lib/packages/BuildFileContainsErrorsException.java
@@ -23,6 +23,7 @@ import java.io.IOException;
* be read or had syntax errors.
*/
public class BuildFileContainsErrorsException extends NoSuchPackageException {
+
public BuildFileContainsErrorsException(PackageIdentifier packageIdentifier) {
super(
packageIdentifier,
@@ -30,11 +31,16 @@ public class BuildFileContainsErrorsException extends NoSuchPackageException {
}
public BuildFileContainsErrorsException(PackageIdentifier packageIdentifier, String message) {
- super(packageIdentifier, "error loading package", message);
+ super(packageIdentifier, message);
}
public BuildFileContainsErrorsException(PackageIdentifier packageIdentifier, String message,
IOException cause) {
- super(packageIdentifier, "error loading package", message, cause);
+ super(packageIdentifier, message, cause);
+ }
+
+ @Override
+ public String getMessage() {
+ return String.format("%s '%s': %s", "error loading package", getPackageId(), getRawMessage());
}
}
diff --git a/src/main/java/com/google/devtools/build/lib/packages/NoSuchPackageException.java b/src/main/java/com/google/devtools/build/lib/packages/NoSuchPackageException.java
index aff72fb65a..1ea372e8dc 100644
--- a/src/main/java/com/google/devtools/build/lib/packages/NoSuchPackageException.java
+++ b/src/main/java/com/google/devtools/build/lib/packages/NoSuchPackageException.java
@@ -19,33 +19,33 @@ import com.google.devtools.build.lib.cmdline.PackageIdentifier;
/**
* Exception indicating an attempt to access a package which is not found, does
* not exist, or can't be parsed into a package.
+ *
+ * <p>Prefer using more-specific subclasses, when appropriate.
*/
-public abstract class NoSuchPackageException extends NoSuchThingException {
+public class NoSuchPackageException extends NoSuchThingException {
private final PackageIdentifier packageId;
public NoSuchPackageException(PackageIdentifier packageId, String message) {
- this(packageId, "no such package", message);
- }
-
- public NoSuchPackageException(PackageIdentifier packageId, String message,
- Exception cause) {
- this(packageId, "no such package", message, cause);
- }
-
- protected NoSuchPackageException(
- PackageIdentifier packageId, String messagePrefix, String message) {
- super(messagePrefix + " '" + packageId + "': " + message);
+ super(message);
this.packageId = packageId;
}
- protected NoSuchPackageException(PackageIdentifier packageId, String messagePrefix,
- String message, Exception cause) {
- super(messagePrefix + " '" + packageId + "': " + message, cause);
+ public NoSuchPackageException(PackageIdentifier packageId, String message, Exception cause) {
+ super(message, cause);
this.packageId = packageId;
}
public PackageIdentifier getPackageId() {
return packageId;
}
+
+ public String getRawMessage() {
+ return super.getMessage();
+ }
+
+ @Override
+ public String getMessage() {
+ return String.format("%s '%s': %s", "no such package", packageId, getRawMessage());
+ }
}
diff --git a/src/main/java/com/google/devtools/build/lib/packages/NoSuchTargetException.java b/src/main/java/com/google/devtools/build/lib/packages/NoSuchTargetException.java
index b8837245d4..eacfdfa558 100644
--- a/src/main/java/com/google/devtools/build/lib/packages/NoSuchTargetException.java
+++ b/src/main/java/com/google/devtools/build/lib/packages/NoSuchTargetException.java
@@ -16,8 +16,6 @@ package com.google.devtools.build.lib.packages;
import com.google.devtools.build.lib.cmdline.Label;
-import java.util.Objects;
-
import javax.annotation.Nullable;
/**
@@ -67,22 +65,4 @@ public class NoSuchTargetException extends NoSuchThingException {
public boolean hasTarget() {
return hasTarget;
}
-
- @Override
- public boolean equals(Object o) {
- if (this == o) {
- return true;
- }
- if (!(o instanceof NoSuchTargetException)) {
- return false;
- }
- NoSuchTargetException that = (NoSuchTargetException) o;
- return Objects.equals(this.label, that.label)
- && Objects.equals(this.hasTarget, that.hasTarget);
- }
-
- @Override
- public int hashCode() {
- return Objects.hash(label, hasTarget);
- }
}
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/PackageFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/PackageFunction.java
index 90aee2df45..fc5f189564 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/PackageFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/PackageFunction.java
@@ -348,7 +348,10 @@ public class PackageFunction implements SkyFunction {
EvalException.class, SkylarkImportFailedException.class);
} catch (IOException | FileSymlinkException | InconsistentFilesystemException
| EvalException | SkylarkImportFailedException e) {
- throw new PackageFunctionException(new BadWorkspaceFileException(e.getMessage()),
+ throw new PackageFunctionException(
+ new NoSuchPackageException(
+ Label.EXTERNAL_PACKAGE_IDENTIFIER,
+ "Error encountered while dealing with the WORKSPACE file: " + e.getMessage()),
Transience.PERSISTENT);
}
if (workspace == null) {
@@ -378,7 +381,7 @@ public class PackageFunction implements SkyFunction {
} catch (InconsistentFilesystemException e) {
// This error is not transient from the perspective of the PackageFunction.
throw new PackageFunctionException(
- new InternalInconsistentFilesystemException(packageId, e), Transience.PERSISTENT);
+ new NoSuchPackageException(packageId, e.getMessage(), e), Transience.PERSISTENT);
}
if (packageLookupValue == null) {
return null;
@@ -445,7 +448,9 @@ public class PackageFunction implements SkyFunction {
ErrorReadingSkylarkExtensionException.class, InconsistentFilesystemException.class);
} catch (ErrorReadingSkylarkExtensionException | InconsistentFilesystemException e) {
throw new PackageFunctionException(
- new BadPreludeFileException(packageId, e.getMessage()), Transience.PERSISTENT);
+ new NoSuchPackageException(
+ packageId, "Error encountered while reading the prelude file: " + e.getMessage()),
+ Transience.PERSISTENT);
}
if (astLookupValue == null) {
return null;
@@ -481,7 +486,8 @@ public class PackageFunction implements SkyFunction {
packageLookupValue.getRoot(), packageId, legacyPkgBuilder, env);
} catch (InternalInconsistentFilesystemException e) {
packageFunctionCache.invalidate(packageId);
- throw new PackageFunctionException(e,
+ throw new PackageFunctionException(
+ e.toNoSuchPackageException(),
e.isTransient() ? Transience.TRANSIENT : Transience.PERSISTENT);
}
Set<SkyKey> globKeys = packageBuilderAndGlobDeps.globDepKeys;
@@ -493,7 +499,8 @@ public class PackageFunction implements SkyFunction {
env, globKeys, subincludes, packageId, legacyPkgBuilder.containsErrors());
} catch (InternalInconsistentFilesystemException e) {
packageFunctionCache.invalidate(packageId);
- throw new PackageFunctionException(e,
+ throw new PackageFunctionException(
+ e.toNoSuchPackageException(),
e.isTransient() ? Transience.TRANSIENT : Transience.PERSISTENT);
}
if (env.valuesMissing()) {
@@ -647,7 +654,7 @@ public class PackageFunction implements SkyFunction {
new BuildFileContainsErrorsException(packageId, e.getMessage()), Transience.PERSISTENT);
} catch (InconsistentFilesystemException e) {
throw new PackageFunctionException(
- new InternalInconsistentFilesystemException(packageId, e), Transience.PERSISTENT);
+ new NoSuchPackageException(packageId, e.getMessage(), e), Transience.PERSISTENT);
}
if (valuesMissing) {
@@ -1184,16 +1191,19 @@ public class PackageFunction implements SkyFunction {
return packageFunctionCacheEntry;
}
- private static class InternalInconsistentFilesystemException extends NoSuchPackageException {
+ private static class InternalInconsistentFilesystemException extends Exception {
private boolean isTransient;
+ private PackageIdentifier packageIdentifier;
+
/**
* Used to represent a filesystem inconsistency discovered outside the
* {@link PackageFunction}.
*/
public InternalInconsistentFilesystemException(PackageIdentifier packageIdentifier,
InconsistentFilesystemException e) {
- super(packageIdentifier, e.getMessage(), e);
+ super(e.getMessage(), e);
+ this.packageIdentifier = packageIdentifier;
// This is not a transient error from the perspective of the PackageFunction.
this.isTransient = false;
}
@@ -1208,19 +1218,10 @@ public class PackageFunction implements SkyFunction {
public boolean isTransient() {
return isTransient;
}
- }
-
- private static class BadWorkspaceFileException extends NoSuchPackageException {
- private BadWorkspaceFileException(String message) {
- super(
- Label.EXTERNAL_PACKAGE_IDENTIFIER,
- "Error encountered while dealing with the WORKSPACE file: " + message);
- }
- }
- private static class BadPreludeFileException extends NoSuchPackageException {
- private BadPreludeFileException(PackageIdentifier packageIdentifier, String message) {
- super(packageIdentifier, "Error encountered while reading the prelude file: " + message);
+ private NoSuchPackageException toNoSuchPackageException() {
+ return new NoSuchPackageException(
+ packageIdentifier, this.getMessage(), (Exception) this.getCause());
}
}