You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by se...@apache.org on 2017/11/16 12:44:24 UTC

commons-io git commit: += isLegalFile(CharSequence)

Repository: commons-io
Updated Branches:
  refs/heads/master dcf6e82f8 -> 84a0d9078


+= isLegalFile(CharSequence)

Project: http://git-wip-us.apache.org/repos/asf/commons-io/repo
Commit: http://git-wip-us.apache.org/repos/asf/commons-io/commit/84a0d907
Tree: http://git-wip-us.apache.org/repos/asf/commons-io/tree/84a0d907
Diff: http://git-wip-us.apache.org/repos/asf/commons-io/diff/84a0d907

Branch: refs/heads/master
Commit: 84a0d90783b095775b5d14b2a807497862d80db5
Parents: dcf6e82
Author: Sebb <se...@apache.org>
Authored: Thu Nov 16 12:44:10 2017 +0000
Committer: Sebb <se...@apache.org>
Committed: Thu Nov 16 12:44:10 2017 +0000

----------------------------------------------------------------------
 .../java/org/apache/commons/io/FileSystem.java  | 25 +++++++++++++++++++-
 .../apache/commons/io/FileSystemTestCase.java   | 10 ++++++++
 2 files changed, 34 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/commons-io/blob/84a0d907/src/main/java/org/apache/commons/io/FileSystem.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/io/FileSystem.java b/src/main/java/org/apache/commons/io/FileSystem.java
index 94a7e36..fed5bd6 100644
--- a/src/main/java/org/apache/commons/io/FileSystem.java
+++ b/src/main/java/org/apache/commons/io/FileSystem.java
@@ -199,7 +199,7 @@ public enum FileSystem {
     /**
      * Converts a candidate file name (without a path) like {@code "filename.ext"} or {@code "filename"} to a legal file
      * name. Illegal characters in the candidate name are replaced by the {@code replacement} character. If the file
-     * name exceeds {@link #getMaxFileNameLength()}, then the name is truncated to {@link #getMaxFileNameLength()}.
+     * name length exceeds {@link #getMaxFileNameLength()}, then the name is truncated to {@link #getMaxFileNameLength()}.
      *
      * @param candidate
      *            a candidate file name (without a path) like {@code "filename.ext"} or {@code "filename"}
@@ -225,4 +225,27 @@ public enum FileSystem {
         }
         return changed ? String.valueOf(charArray) : truncated;
     }
+
+    /**
+     * Checks if a candidate file name (without a path)
+     * such as {@code "filename.ext"} or {@code "filename"}
+     * is a potentially legal file name.
+     * If the file name length exceeds {@link #getMaxFileNameLength()},
+     * or if it contains an illegal character then the check fails.
+     *
+     * @param candidate
+     *            a candidate file name (without a path) like {@code "filename.ext"} or {@code "filename"}
+     * @return {@code true} if the candidate name is legal
+     */
+    public boolean isLegalFileName(final CharSequence candidate) {
+        if (candidate == null || candidate.length() == 0 || candidate.length() > maxFileNameLength) {
+            return false;
+        }
+        for (int i = 0; i < candidate.length(); i++) {
+            if (isIllegalFileNameChar(candidate.charAt(i))) {
+                return false;
+            }
+        }
+        return true;
+    }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/commons-io/blob/84a0d907/src/test/java/org/apache/commons/io/FileSystemTestCase.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/commons/io/FileSystemTestCase.java b/src/test/java/org/apache/commons/io/FileSystemTestCase.java
index 84dc3c3..f5335c1 100644
--- a/src/test/java/org/apache/commons/io/FileSystemTestCase.java
+++ b/src/test/java/org/apache/commons/io/FileSystemTestCase.java
@@ -52,5 +52,15 @@ public class FileSystemTestCase {
         for (char i = '0'; i < '9'; i++) {
             Assert.assertEquals(i, fs.toLegalFileName(String.valueOf(i), replacement).charAt(0));
         }
+    }    
+
+    @Test
+    public void testIsLegalName() {
+        for (FileSystem fs : FileSystem.values()) {
+            Assert.assertFalse(fs.name(), fs.isLegalFileName("")); // Empty is always illegal
+            Assert.assertFalse(fs.name(), fs.isLegalFileName(null)); // null is always illegal
+            Assert.assertFalse(fs.name(), fs.isLegalFileName("\0")); // Assume NUL is always illegal
+            Assert.assertTrue(fs.name(), fs.isLegalFileName("0")); // Assume simple name always legal
+        }
     }
 }


Re: commons-io git commit: += isLegalFile(CharSequence)

Posted by sebb <se...@gmail.com>.
On 16 November 2017 at 14:46, Gary Gregory <ga...@gmail.com> wrote:
> s/candidate.length() == 0/candidate.isEmpty()
>

Since the other check is also a length check I thought it was more consistent.

> ?
>
>
>
> On Nov 16, 2017 05:44, <se...@apache.org> wrote:
>
>> Repository: commons-io
>> Updated Branches:
>>   refs/heads/master dcf6e82f8 -> 84a0d9078
>>
>>
>> += isLegalFile(CharSequence)
>>
>> Project: http://git-wip-us.apache.org/repos/asf/commons-io/repo
>> Commit: http://git-wip-us.apache.org/repos/asf/commons-io/commit/84a0d907
>> Tree: http://git-wip-us.apache.org/repos/asf/commons-io/tree/84a0d907
>> Diff: http://git-wip-us.apache.org/repos/asf/commons-io/diff/84a0d907
>>
>> Branch: refs/heads/master
>> Commit: 84a0d90783b095775b5d14b2a807497862d80db5
>> Parents: dcf6e82
>> Author: Sebb <se...@apache.org>
>> Authored: Thu Nov 16 12:44:10 2017 +0000
>> Committer: Sebb <se...@apache.org>
>> Committed: Thu Nov 16 12:44:10 2017 +0000
>>
>> ----------------------------------------------------------------------
>>  .../java/org/apache/commons/io/FileSystem.java  | 25 +++++++++++++++++++-
>>  .../apache/commons/io/FileSystemTestCase.java   | 10 ++++++++
>>  2 files changed, 34 insertions(+), 1 deletion(-)
>> ----------------------------------------------------------------------
>>
>>
>> http://git-wip-us.apache.org/repos/asf/commons-io/blob/
>> 84a0d907/src/main/java/org/apache/commons/io/FileSystem.java
>> ----------------------------------------------------------------------
>> diff --git a/src/main/java/org/apache/commons/io/FileSystem.java
>> b/src/main/java/org/apache/commons/io/FileSystem.java
>> index 94a7e36..fed5bd6 100644
>> --- a/src/main/java/org/apache/commons/io/FileSystem.java
>> +++ b/src/main/java/org/apache/commons/io/FileSystem.java
>> @@ -199,7 +199,7 @@ public enum FileSystem {
>>      /**
>>       * Converts a candidate file name (without a path) like {@code
>> "filename.ext"} or {@code "filename"} to a legal file
>>       * name. Illegal characters in the candidate name are replaced by the
>> {@code replacement} character. If the file
>> -     * name exceeds {@link #getMaxFileNameLength()}, then the name is
>> truncated to {@link #getMaxFileNameLength()}.
>> +     * name length exceeds {@link #getMaxFileNameLength()}, then the name
>> is truncated to {@link #getMaxFileNameLength()}.
>>       *
>>       * @param candidate
>>       *            a candidate file name (without a path) like {@code
>> "filename.ext"} or {@code "filename"}
>> @@ -225,4 +225,27 @@ public enum FileSystem {
>>          }
>>          return changed ? String.valueOf(charArray) : truncated;
>>      }
>> +
>> +    /**
>> +     * Checks if a candidate file name (without a path)
>> +     * such as {@code "filename.ext"} or {@code "filename"}
>> +     * is a potentially legal file name.
>> +     * If the file name length exceeds {@link #getMaxFileNameLength()},
>> +     * or if it contains an illegal character then the check fails.
>> +     *
>> +     * @param candidate
>> +     *            a candidate file name (without a path) like {@code
>> "filename.ext"} or {@code "filename"}
>> +     * @return {@code true} if the candidate name is legal
>> +     */
>> +    public boolean isLegalFileName(final CharSequence candidate) {
>> +        if (candidate == null || candidate.length() == 0 ||
>> candidate.length() > maxFileNameLength) {
>> +            return false;
>> +        }
>> +        for (int i = 0; i < candidate.length(); i++) {
>> +            if (isIllegalFileNameChar(candidate.charAt(i))) {
>> +                return false;
>> +            }
>> +        }
>> +        return true;
>> +    }
>>  }
>> \ No newline at end of file
>>
>> http://git-wip-us.apache.org/repos/asf/commons-io/blob/
>> 84a0d907/src/test/java/org/apache/commons/io/FileSystemTestCase.java
>> ----------------------------------------------------------------------
>> diff --git a/src/test/java/org/apache/commons/io/FileSystemTestCase.java
>> b/src/test/java/org/apache/commons/io/FileSystemTestCase.java
>> index 84dc3c3..f5335c1 100644
>> --- a/src/test/java/org/apache/commons/io/FileSystemTestCase.java
>> +++ b/src/test/java/org/apache/commons/io/FileSystemTestCase.java
>> @@ -52,5 +52,15 @@ public class FileSystemTestCase {
>>          for (char i = '0'; i < '9'; i++) {
>>              Assert.assertEquals(i, fs.toLegalFileName(String.valueOf(i),
>> replacement).charAt(0));
>>          }
>> +    }
>> +
>> +    @Test
>> +    public void testIsLegalName() {
>> +        for (FileSystem fs : FileSystem.values()) {
>> +            Assert.assertFalse(fs.name(), fs.isLegalFileName("")); //
>> Empty is always illegal
>> +            Assert.assertFalse(fs.name(), fs.isLegalFileName(null)); //
>> null is always illegal
>> +            Assert.assertFalse(fs.name(), fs.isLegalFileName("\0")); //
>> Assume NUL is always illegal
>> +            Assert.assertTrue(fs.name(), fs.isLegalFileName("0")); //
>> Assume simple name always legal
>> +        }
>>      }
>>  }
>>
>>

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@commons.apache.org
For additional commands, e-mail: dev-help@commons.apache.org


Re: commons-io git commit: += isLegalFile(CharSequence)

Posted by Gary Gregory <ga...@gmail.com>.
s/candidate.length() == 0/candidate.isEmpty()

?



On Nov 16, 2017 05:44, <se...@apache.org> wrote:

> Repository: commons-io
> Updated Branches:
>   refs/heads/master dcf6e82f8 -> 84a0d9078
>
>
> += isLegalFile(CharSequence)
>
> Project: http://git-wip-us.apache.org/repos/asf/commons-io/repo
> Commit: http://git-wip-us.apache.org/repos/asf/commons-io/commit/84a0d907
> Tree: http://git-wip-us.apache.org/repos/asf/commons-io/tree/84a0d907
> Diff: http://git-wip-us.apache.org/repos/asf/commons-io/diff/84a0d907
>
> Branch: refs/heads/master
> Commit: 84a0d90783b095775b5d14b2a807497862d80db5
> Parents: dcf6e82
> Author: Sebb <se...@apache.org>
> Authored: Thu Nov 16 12:44:10 2017 +0000
> Committer: Sebb <se...@apache.org>
> Committed: Thu Nov 16 12:44:10 2017 +0000
>
> ----------------------------------------------------------------------
>  .../java/org/apache/commons/io/FileSystem.java  | 25 +++++++++++++++++++-
>  .../apache/commons/io/FileSystemTestCase.java   | 10 ++++++++
>  2 files changed, 34 insertions(+), 1 deletion(-)
> ----------------------------------------------------------------------
>
>
> http://git-wip-us.apache.org/repos/asf/commons-io/blob/
> 84a0d907/src/main/java/org/apache/commons/io/FileSystem.java
> ----------------------------------------------------------------------
> diff --git a/src/main/java/org/apache/commons/io/FileSystem.java
> b/src/main/java/org/apache/commons/io/FileSystem.java
> index 94a7e36..fed5bd6 100644
> --- a/src/main/java/org/apache/commons/io/FileSystem.java
> +++ b/src/main/java/org/apache/commons/io/FileSystem.java
> @@ -199,7 +199,7 @@ public enum FileSystem {
>      /**
>       * Converts a candidate file name (without a path) like {@code
> "filename.ext"} or {@code "filename"} to a legal file
>       * name. Illegal characters in the candidate name are replaced by the
> {@code replacement} character. If the file
> -     * name exceeds {@link #getMaxFileNameLength()}, then the name is
> truncated to {@link #getMaxFileNameLength()}.
> +     * name length exceeds {@link #getMaxFileNameLength()}, then the name
> is truncated to {@link #getMaxFileNameLength()}.
>       *
>       * @param candidate
>       *            a candidate file name (without a path) like {@code
> "filename.ext"} or {@code "filename"}
> @@ -225,4 +225,27 @@ public enum FileSystem {
>          }
>          return changed ? String.valueOf(charArray) : truncated;
>      }
> +
> +    /**
> +     * Checks if a candidate file name (without a path)
> +     * such as {@code "filename.ext"} or {@code "filename"}
> +     * is a potentially legal file name.
> +     * If the file name length exceeds {@link #getMaxFileNameLength()},
> +     * or if it contains an illegal character then the check fails.
> +     *
> +     * @param candidate
> +     *            a candidate file name (without a path) like {@code
> "filename.ext"} or {@code "filename"}
> +     * @return {@code true} if the candidate name is legal
> +     */
> +    public boolean isLegalFileName(final CharSequence candidate) {
> +        if (candidate == null || candidate.length() == 0 ||
> candidate.length() > maxFileNameLength) {
> +            return false;
> +        }
> +        for (int i = 0; i < candidate.length(); i++) {
> +            if (isIllegalFileNameChar(candidate.charAt(i))) {
> +                return false;
> +            }
> +        }
> +        return true;
> +    }
>  }
> \ No newline at end of file
>
> http://git-wip-us.apache.org/repos/asf/commons-io/blob/
> 84a0d907/src/test/java/org/apache/commons/io/FileSystemTestCase.java
> ----------------------------------------------------------------------
> diff --git a/src/test/java/org/apache/commons/io/FileSystemTestCase.java
> b/src/test/java/org/apache/commons/io/FileSystemTestCase.java
> index 84dc3c3..f5335c1 100644
> --- a/src/test/java/org/apache/commons/io/FileSystemTestCase.java
> +++ b/src/test/java/org/apache/commons/io/FileSystemTestCase.java
> @@ -52,5 +52,15 @@ public class FileSystemTestCase {
>          for (char i = '0'; i < '9'; i++) {
>              Assert.assertEquals(i, fs.toLegalFileName(String.valueOf(i),
> replacement).charAt(0));
>          }
> +    }
> +
> +    @Test
> +    public void testIsLegalName() {
> +        for (FileSystem fs : FileSystem.values()) {
> +            Assert.assertFalse(fs.name(), fs.isLegalFileName("")); //
> Empty is always illegal
> +            Assert.assertFalse(fs.name(), fs.isLegalFileName(null)); //
> null is always illegal
> +            Assert.assertFalse(fs.name(), fs.isLegalFileName("\0")); //
> Assume NUL is always illegal
> +            Assert.assertTrue(fs.name(), fs.isLegalFileName("0")); //
> Assume simple name always legal
> +        }
>      }
>  }
>
>