[
https://issues.apache.org/jira/browse/TWILL-188?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15436035#comment-15436035
]
ASF GitHub Bot commented on TWILL-188:
--------------------------------------
Github user albertshau commented on a diff in the pull request:
https://github.com/apache/twill/pull/3#discussion_r76164518
--- Diff:
twill-common/src/main/java/org/apache/twill/filesystem/LocalLocation.java ---
@@ -255,4 +288,53 @@ public int hashCode() {
public String toString() {
return file.toString();
}
+
+ /**
+ * Ensures the given {@link File} is a directory. If it doesn't exist,
it will be created.
+ */
+ private void ensureDirectory(File dir) throws IOException {
+ // Check, create, check to resolve race conditions if there are
concurrent creation of the directory.
+ if (!dir.isDirectory() && !dir.mkdirs() && !dir.isDirectory()) {
+ throw new IOException("Failed to create directory " + dir);
+ }
+ }
+
+ /**
+ * Parses the given permission to a set of {@link PosixFilePermission}.
+ *
+ * @param permission the permission as passed to the {@link
#createNew(String)} or {@link #getOutputStream(String)}
+ * methods.
+ * @return a new set of {@link PosixFilePermission}.
+ */
+ private Set<PosixFilePermission> parsePermissions(String permission) {
+ Set<PosixFilePermission> permissions;
+ if (permission.length() == 3) {
+ permissions = parseNumericPermissions(permission);
+ } else if (permission.length() == 9) {
+ permissions = PosixFilePermissions.fromString(permission);
+ } else {
+ throw new IllegalArgumentException("Invalid permission " +
permission +
+ ". Permission should either be
a three digits or nine characters string.");
+ }
+
+ return permissions;
+ }
+
+ /**
+ * Parses a three digits UNIX numeric permission representation to a set
of {@link PosixFilePermission}.
+ */
+ private Set<PosixFilePermission> parseNumericPermissions(String
permission) {
+ String posixPermission = "";
+ for (int i = 0; i < 3; i++) {
+ int digit = permission.charAt(i) - '0';
+ if (digit < 0 || digit > 7) {
+ throw new IllegalArgumentException("Invalid permission " +
permission +
+ ". Only digits between 0-7 is
allowed.");
--- End diff --
is -> are
> LocationFactory should have options to accept permission for create
> -------------------------------------------------------------------
>
> Key: TWILL-188
> URL: https://issues.apache.org/jira/browse/TWILL-188
> Project: Apache Twill
> Issue Type: Improvement
> Reporter: Shankar Selvam
> Assignee: Terence Yim
> Fix For: 0.8.0
>
>
> Currently LocationFactory and Location API doesn't have a way to specify the
> permission to use for creating the path. we need a way to specify the
> permission for create and other operations on Location
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)