summaryrefslogtreecommitdiffstats
path: root/sched
diff options
context:
space:
mode:
authorBenoit Lamarche <benoitlamarche@google.com>2015-03-10 15:48:30 +0100
committerBenoit Lamarche <benoitlamarche@google.com>2015-03-10 15:48:30 +0100
commitb74710eb300d880fa2c96b110826f280f7227a1b (patch)
tree6ff83018f8da27b13db9b64fd2aef9ce87a32b10 /sched
parent7b8f114358d834212f46d493fdf415f9be54fb91 (diff)
downloadtoolchain_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')
-rw-r--r--sched/src/com/android/sched/util/codec/CodecContext.java38
-rw-r--r--sched/src/com/android/sched/util/config/AsapConfigBuilder.java14
-rw-r--r--sched/src/com/android/sched/util/config/GatherConfigBuilder.java12
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();