Use failure details in InfoCommand, InvalidConfigurationException
Adapts its usage of ExitCode and AbruptExitException to add FailureDetail
values. Failure modes detected there now have corresponding codes in
failure_details.proto.
InvalidConfigurationException now specifies a fine-grained code to more
precisely represent what configuration-related activity failed. This gets
its first use for platform mapping failures. (Platform mapping failures
may benefit from additional refinement.)
RELNOTES: None.
PiperOrigin-RevId: 309104771
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/BUILD b/src/main/java/com/google/devtools/build/lib/analysis/BUILD
index aa46a17..29d2426 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/BUILD
+++ b/src/main/java/com/google/devtools/build/lib/analysis/BUILD
@@ -1622,6 +1622,10 @@
java_library(
name = "config/invalid_configuration_exception",
srcs = ["config/InvalidConfigurationException.java"],
+ deps = [
+ "//src/main/protobuf:failure_details_java_proto",
+ "//third_party:jsr305",
+ ],
)
java_library(
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/config/InvalidConfigurationException.java b/src/main/java/com/google/devtools/build/lib/analysis/config/InvalidConfigurationException.java
index 35bca2c..7f2a7f4 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/config/InvalidConfigurationException.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/config/InvalidConfigurationException.java
@@ -13,21 +13,39 @@
// limitations under the License.
package com.google.devtools.build.lib.analysis.config;
+import com.google.devtools.build.lib.server.FailureDetails.BuildConfiguration.Code;
+import javax.annotation.Nullable;
+
/**
* Thrown if the configuration options lead to an invalid configuration, or if any of the
* configuration labels cannot be loaded.
*/
public class InvalidConfigurationException extends Exception {
+ @Nullable private final Code detailedCode;
+
public InvalidConfigurationException(String message) {
super(message);
+ this.detailedCode = null;
}
public InvalidConfigurationException(String message, Throwable cause) {
super(message, cause);
+ this.detailedCode = null;
}
public InvalidConfigurationException(Throwable cause) {
- this(cause.getMessage(), cause);
+ super(cause.getMessage(), cause);
+ this.detailedCode = null;
+ }
+
+ public InvalidConfigurationException(Code detailedCode, Exception cause) {
+ super(cause.getMessage(), cause);
+ this.detailedCode = detailedCode;
+ }
+
+ @Nullable
+ public Code getDetailedCode() {
+ return detailedCode;
}
}