aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar elenairina <elenairina@google.com>2017-07-03 11:05:53 -0400
committerGravatar John Cater <jcater@google.com>2017-07-05 10:57:00 -0400
commit2ebe1fc7bbd646efdb43eb68a37c1ffb97dbd5af (patch)
tree06cd27ca30e255c6fd5b38390330efbae020abcc
parenta72c7eef5f40258fc59f57625cf41d26918d7abc (diff)
Gracefully handle exceptions in java_common.default_javac_opts.
Replacing checkNotNulls (which throws NPE) with throwing EvalExceptions in java_common, in order for blaze to output a nice error message instead of crashing. PiperOrigin-RevId: 160830397
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/JavaSkylarkCommon.java14
1 files changed, 9 insertions, 5 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaSkylarkCommon.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaSkylarkCommon.java
index 50d6962bf3..7ac14a5c4e 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaSkylarkCommon.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaSkylarkCommon.java
@@ -13,8 +13,6 @@
// limitations under the License.
package com.google.devtools.build.lib.rules.java;
-import static com.google.common.base.Preconditions.checkNotNull;
-
import com.google.common.collect.ImmutableList;
import com.google.common.collect.Iterables;
import com.google.devtools.build.lib.actions.Artifact;
@@ -343,7 +341,10 @@ public class JavaSkylarkCommon {
? NestedSetBuilder.<Artifact>emptySet(Order.STABLE_ORDER)
: hostJavabaseProvider.getMiddlemanArtifact();
JavaToolchainProvider javaToolchainProvider =
- checkNotNull(javaToolchain.getProvider(JavaToolchainProvider.class));
+ javaToolchain.getProvider(JavaToolchainProvider.class);
+ if (javaToolchain == null) {
+ throw new EvalException(null, javaToolchain.getLabel() + " is not a java_toolchain rule.");
+ }
JavaCompilationArtifacts artifacts =
helper.build(
javaSemantics,
@@ -400,9 +401,12 @@ public class JavaSkylarkCommon {
SkylarkRuleContext skylarkRuleContext, String javaToolchainAttr) throws EvalException {
RuleContext ruleContext = skylarkRuleContext.getRuleContext();
ConfiguredTarget javaToolchainConfigTarget =
- (ConfiguredTarget) checkNotNull(skylarkRuleContext.getAttr().getValue(javaToolchainAttr));
+ (ConfiguredTarget) skylarkRuleContext.getAttr().getValue(javaToolchainAttr);
JavaToolchainProvider toolchain =
- checkNotNull(javaToolchainConfigTarget.getProvider(JavaToolchainProvider.class));
+ javaToolchainConfigTarget.getProvider(JavaToolchainProvider.class);
+ if (toolchain == null) {
+ throw new EvalException(null, javaToolchainAttr + " is not a java_toolchain rule label");
+ }
return ImmutableList.copyOf(Iterables.concat(
toolchain.getJavacOptions(), ruleContext.getTokenizedStringListAttr("javacopts")));
}