diff options
author | Benoit Lamarche <benoitlamarche@google.com> | 2015-03-10 15:48:30 +0100 |
---|---|---|
committer | Benoit Lamarche <benoitlamarche@google.com> | 2015-03-10 15:48:30 +0100 |
commit | b74710eb300d880fa2c96b110826f280f7227a1b (patch) | |
tree | 6ff83018f8da27b13db9b64fd2aef9ce87a32b10 /sched | |
parent | 7b8f114358d834212f46d493fdf415f9be54fb91 (diff) | |
download | toolchain_jack-b74710eb300d880fa2c96b110826f280f7227a1b.tar.gz toolchain_jack-b74710eb300d880fa2c96b110826f280f7227a1b.tar.bz2 toolchain_jack-b74710eb300d880fa2c96b110826f280f7227a1b.zip |
Add working directory support in ConfigBuilder
Change-Id: Ie34d79830b53b5dcbc6b7edbaa7617c7466b9f3d
Diffstat (limited to 'sched')
3 files changed, 62 insertions, 2 deletions
diff --git a/sched/src/com/android/sched/util/codec/CodecContext.java b/sched/src/com/android/sched/util/codec/CodecContext.java index e8884dee..69e475cd 100644 --- a/sched/src/com/android/sched/util/codec/CodecContext.java +++ b/sched/src/com/android/sched/util/codec/CodecContext.java @@ -17,7 +17,18 @@ package com.android.sched.util.codec; import com.android.sched.util.RunnableHooks; - +import com.android.sched.util.file.CannotCreateFileException; +import com.android.sched.util.file.CannotSetPermissionException; +import com.android.sched.util.file.Directory; +import com.android.sched.util.file.FileAlreadyExistsException; +import com.android.sched.util.file.FileOrDirectory.ChangePermission; +import com.android.sched.util.file.FileOrDirectory.Existence; +import com.android.sched.util.file.FileOrDirectory.Permission; +import com.android.sched.util.file.NoSuchFileException; +import com.android.sched.util.file.NotDirectoryException; +import com.android.sched.util.file.WrongPermissionException; + +import java.io.File; import java.io.InputStream; import java.io.PrintStream; @@ -42,6 +53,9 @@ public class CodecContext { @Nonnull private PrintStream standardError = System.err; + @CheckForNull + private Directory workingDirectory; + @Nonnull public CodecContext setDebug() { this.debug = true; @@ -91,4 +105,26 @@ public class CodecContext { public void setStandardError(@Nonnull PrintStream standardError) { this.standardError = standardError; } + + @CheckForNull + public Directory getWorkingDirectory() { + return workingDirectory; + } + + public void setWorkingDirectory(@Nonnull File workingDirectory) throws NotDirectoryException, + WrongPermissionException, NoSuchFileException { + try { + this.workingDirectory = new Directory(workingDirectory.getPath(), null, Existence.MUST_EXIST, + Permission.EXECUTE, ChangePermission.NOCHANGE); + } catch (CannotSetPermissionException e) { + // we're not changing the permissions + throw new AssertionError(e); + } catch (FileAlreadyExistsException e) { + // we're not creating the directory + throw new AssertionError(e); + } catch (CannotCreateFileException e) { + // we're not creating the directory + throw new AssertionError(e); + } + } } diff --git a/sched/src/com/android/sched/util/config/AsapConfigBuilder.java b/sched/src/com/android/sched/util/config/AsapConfigBuilder.java index c0f41760..16900fd8 100644 --- a/sched/src/com/android/sched/util/config/AsapConfigBuilder.java +++ b/sched/src/com/android/sched/util/config/AsapConfigBuilder.java @@ -29,12 +29,16 @@ import com.android.sched.util.config.expression.BooleanExpression; import com.android.sched.util.config.id.KeyId; import com.android.sched.util.config.id.ObjectId; import com.android.sched.util.config.id.PropertyId; +import com.android.sched.util.file.NoSuchFileException; +import com.android.sched.util.file.NotDirectoryException; +import com.android.sched.util.file.WrongPermissionException; import com.android.sched.util.location.EnvironmentLocation; import com.android.sched.util.location.FieldLocation; import com.android.sched.util.location.LineLocation; import com.android.sched.util.location.Location; import com.android.sched.util.location.NoLocation; +import java.io.File; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; @@ -318,6 +322,14 @@ public class AsapConfigBuilder { } @Nonnull + public AsapConfigBuilder setWorkingDirectory(@Nonnull File workingDirectory) + throws NotDirectoryException, WrongPermissionException, NoSuchFileException { + context.setWorkingDirectory(workingDirectory); + + return this; + } + + @Nonnull public AsapConfigBuilder setStrictMode() { this.strict = true; @@ -333,7 +345,7 @@ public class AsapConfigBuilder { } /** - * Builds the {@Config} with all defined property values. + * Builds the {@link Config} with all defined property values. * * @return the {@code Config}. * @throws ConfigurationException diff --git a/sched/src/com/android/sched/util/config/GatherConfigBuilder.java b/sched/src/com/android/sched/util/config/GatherConfigBuilder.java index a9276696..33b1fa53 100644 --- a/sched/src/com/android/sched/util/config/GatherConfigBuilder.java +++ b/sched/src/com/android/sched/util/config/GatherConfigBuilder.java @@ -21,8 +21,12 @@ import com.android.sched.util.config.ChainedException.ChainedExceptionBuilder; import com.android.sched.util.config.category.Category; import com.android.sched.util.config.id.ObjectId; import com.android.sched.util.config.id.PropertyId; +import com.android.sched.util.file.NoSuchFileException; +import com.android.sched.util.file.NotDirectoryException; +import com.android.sched.util.file.WrongPermissionException; import com.android.sched.util.location.Location; +import java.io.File; import java.io.IOException; import java.io.InputStream; import java.io.PrintStream; @@ -210,6 +214,14 @@ public class GatherConfigBuilder { } @Nonnull + public GatherConfigBuilder setWorkingDirectory(@Nonnull File workingDirectory) + throws NotDirectoryException, WrongPermissionException, NoSuchFileException { + builder.setWorkingDirectory(workingDirectory); + + return this; + } + + @Nonnull public GatherConfigBuilder setStrictMode() { builder.setStrictMode(); |