aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/skyframe/WorkspaceFileFunction.java
diff options
context:
space:
mode:
authorGravatar Kristina Chodorow <kchodorow@google.com>2017-01-27 19:38:36 +0000
committerGravatar Yun Peng <pcloudy@google.com>2017-01-30 09:01:30 +0000
commit3463dae050ce9e065878f891fe88ea926f26030a (patch)
treed56ce610b9620ba4ac428fe9436dd4f62da76cb3 /src/main/java/com/google/devtools/build/lib/skyframe/WorkspaceFileFunction.java
parent4a877386b0d647885dbba48714d1be36a36362f4 (diff)
Fix error handling in WorkspaceFile/WorkspaceAST
-- PiperOrigin-RevId: 145818492 MOS_MIGRATED_REVID=145818492
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/skyframe/WorkspaceFileFunction.java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/WorkspaceFileFunction.java33
1 files changed, 17 insertions, 16 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/WorkspaceFileFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/WorkspaceFileFunction.java
index faacb3c92d..2372793333 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/WorkspaceFileFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/WorkspaceFileFunction.java
@@ -17,12 +17,12 @@ package com.google.devtools.build.lib.skyframe;
import com.google.common.collect.ImmutableMap;
import com.google.devtools.build.lib.analysis.BlazeDirectories;
import com.google.devtools.build.lib.cmdline.PackageIdentifier;
+import com.google.devtools.build.lib.packages.NoSuchPackageException;
import com.google.devtools.build.lib.packages.Package;
import com.google.devtools.build.lib.packages.Package.NameConflictException;
import com.google.devtools.build.lib.packages.PackageFactory;
import com.google.devtools.build.lib.packages.RuleClassProvider;
import com.google.devtools.build.lib.packages.WorkspaceFactory;
-import com.google.devtools.build.lib.skyframe.PackageFunction.PackageFunctionException;
import com.google.devtools.build.lib.skyframe.WorkspaceFileValue.WorkspaceFileKey;
import com.google.devtools.build.lib.syntax.BuildFileAST;
import com.google.devtools.build.lib.syntax.Environment.Extension;
@@ -34,6 +34,7 @@ import com.google.devtools.build.skyframe.SkyFunctionException;
import com.google.devtools.build.skyframe.SkyFunctionException.Transience;
import com.google.devtools.build.skyframe.SkyKey;
import com.google.devtools.build.skyframe.SkyValue;
+import java.io.IOException;
/**
* A SkyFunction to parse WORKSPACE files.
@@ -55,13 +56,13 @@ public class WorkspaceFileFunction implements SkyFunction {
}
@Override
- public SkyValue compute(SkyKey skyKey, Environment env) throws WorkspaceFileFunctionException,
- InterruptedException {
+ public SkyValue compute(SkyKey skyKey, Environment env)
+ throws WorkspaceFileFunctionException, InterruptedException {
WorkspaceFileKey key = (WorkspaceFileKey) skyKey.argument();
RootedPath workspaceRoot = key.getPath();
- WorkspaceASTValue workspaceASTValue =
- (WorkspaceASTValue) env.getValue(WorkspaceASTValue.key(workspaceRoot));
+ WorkspaceASTValue workspaceASTValue = (WorkspaceASTValue) env.getValue(
+ WorkspaceASTValue.key(workspaceRoot));
if (workspaceASTValue == null) {
return null;
}
@@ -91,9 +92,8 @@ public class WorkspaceFileFunction implements SkyFunction {
directories.getEmbeddedBinariesRoot(),
directories.getWorkspace());
if (key.getIndex() > 0) {
- WorkspaceFileValue prevValue =
- (WorkspaceFileValue)
- env.getValue(WorkspaceFileValue.key(key.getPath(), key.getIndex() - 1));
+ WorkspaceFileValue prevValue = (WorkspaceFileValue) env.getValue(
+ WorkspaceFileValue.key(key.getPath(), key.getIndex() - 1));
if (prevValue == null) {
return null;
}
@@ -103,16 +103,13 @@ public class WorkspaceFileFunction implements SkyFunction {
parser.setParent(prevValue.getPackage(), prevValue.getImportMap(), prevValue.getBindings());
}
BuildFileAST ast = workspaceASTValue.getASTs().get(key.getIndex());
- PackageFunction.SkylarkImportResult importResult =
- PackageFunction.fetchImportsFromBuildFile(
- repoWorkspace, rootPackage, ast, env, null);
+ PackageFunction.SkylarkImportResult importResult = PackageFunction.fetchImportsFromBuildFile(
+ repoWorkspace, rootPackage, ast, env, null);
if (importResult == null) {
return null;
}
parser.execute(ast, importResult.importMap);
- } catch (PackageFunctionException e) {
- // TODO(jcater): Unwrap the PackageFunctionException and handle the underlying error.
- // PFE shouldn't be exposed to callers.
+ } catch (NoSuchPackageException e) {
throw new WorkspaceFileFunctionException(e, Transience.PERSISTENT);
} catch (NameConflictException e) {
throw new WorkspaceFileFunctionException(e, Transience.PERSISTENT);
@@ -133,11 +130,15 @@ public class WorkspaceFileFunction implements SkyFunction {
}
private static final class WorkspaceFileFunctionException extends SkyFunctionException {
- public WorkspaceFileFunctionException(PackageFunctionException e, Transience transience) {
+ WorkspaceFileFunctionException(NoSuchPackageException e, Transience transience) {
super(e, transience);
}
- public WorkspaceFileFunctionException(NameConflictException e, Transience transience) {
+ WorkspaceFileFunctionException(NameConflictException e, Transience transience) {
+ super(e, transience);
+ }
+
+ WorkspaceFileFunctionException(IOException e, Transience transience) {
super(e, transience);
}
}