You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by gg...@apache.org on 2021/12/06 13:36:09 UTC
[commons-vfs] branch master updated: Add RandomAccessMode.from(AccessMode).
This is an automated email from the ASF dual-hosted git repository.
ggregory pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-vfs.git
The following commit(s) were added to refs/heads/master by this push:
new 18fac32 Add RandomAccessMode.from(AccessMode).
18fac32 is described below
commit 18fac329df12f1afc22c37c2107e2acf3e0d0ea6
Author: Gary Gregory <ga...@gmail.com>
AuthorDate: Mon Dec 6 08:36:06 2021 -0500
Add RandomAccessMode.from(AccessMode).
---
.../apache/commons/vfs2/util/RandomAccessMode.java | 25 ++++++++++++++++++++++
.../commons/vfs2/util/RandomAccessModeTest.java | 16 ++++++++++++++
2 files changed, 41 insertions(+)
diff --git a/commons-vfs2/src/main/java/org/apache/commons/vfs2/util/RandomAccessMode.java b/commons-vfs2/src/main/java/org/apache/commons/vfs2/util/RandomAccessMode.java
index e2251a9..4e485e7 100644
--- a/commons-vfs2/src/main/java/org/apache/commons/vfs2/util/RandomAccessMode.java
+++ b/commons-vfs2/src/main/java/org/apache/commons/vfs2/util/RandomAccessMode.java
@@ -17,6 +17,8 @@
package org.apache.commons.vfs2.util;
import java.nio.file.AccessMode;
+import java.util.Arrays;
+import java.util.Objects;
/**
* An enumerated type representing the modes of a random access content.
@@ -45,6 +47,29 @@ public enum RandomAccessMode {
}
/**
+ * Converts an array of {@link AccessMode} into a RandomAccessMode.
+ *
+ * @param accessModes AccessMode array, only {@link AccessMode#READ} and {@link AccessMode#WRITE} are supported.
+ * @return A RandomAccessMode.
+ * @since 2.10.0
+ */
+ public static RandomAccessMode from(final AccessMode... accessModes) {
+ Objects.requireNonNull(accessModes, "accessModes");
+ if (accessModes.length == 0) {
+ throw new IllegalArgumentException("Empty AccessMode[].");
+ }
+ final AccessMode modes[] = accessModes.clone();
+ Arrays.sort(modes);
+ if (Arrays.binarySearch(modes, AccessMode.WRITE) >= 0) {
+ return READWRITE;
+ }
+ if (Arrays.binarySearch(modes, AccessMode.READ) >= 0) {
+ return READ;
+ }
+ throw new IllegalArgumentException(Arrays.toString(accessModes));
+ }
+
+ /**
* @return The mode String.
* @since 2.0
*/
diff --git a/commons-vfs2/src/test/java/org/apache/commons/vfs2/util/RandomAccessModeTest.java b/commons-vfs2/src/test/java/org/apache/commons/vfs2/util/RandomAccessModeTest.java
index 128ed90..14e20c1 100644
--- a/commons-vfs2/src/test/java/org/apache/commons/vfs2/util/RandomAccessModeTest.java
+++ b/commons-vfs2/src/test/java/org/apache/commons/vfs2/util/RandomAccessModeTest.java
@@ -18,8 +18,11 @@ package org.apache.commons.vfs2.util;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertThrows;
import static org.junit.Assert.assertTrue;
+import java.nio.file.AccessMode;
+
import org.junit.Test;
/**
@@ -28,6 +31,19 @@ import org.junit.Test;
public class RandomAccessModeTest {
@Test
+ public void test_fromAccessMode() {
+ assertEquals(RandomAccessMode.READ, RandomAccessMode.from(AccessMode.READ));
+ assertEquals(RandomAccessMode.READ, RandomAccessMode.from(AccessMode.READ, AccessMode.READ));
+ assertEquals(RandomAccessMode.READ, RandomAccessMode.from(AccessMode.READ, AccessMode.READ, AccessMode.EXECUTE));
+ assertEquals(RandomAccessMode.READWRITE, RandomAccessMode.from(AccessMode.WRITE));
+ assertEquals(RandomAccessMode.READWRITE, RandomAccessMode.from(AccessMode.WRITE, AccessMode.WRITE));
+ assertEquals(RandomAccessMode.READWRITE, RandomAccessMode.from(AccessMode.WRITE, AccessMode.READ));
+ assertEquals(RandomAccessMode.READWRITE, RandomAccessMode.from(AccessMode.READ, AccessMode.WRITE));
+ assertEquals(RandomAccessMode.READWRITE, RandomAccessMode.from(AccessMode.WRITE, AccessMode.WRITE, AccessMode.EXECUTE));
+ assertThrows(IllegalArgumentException.class, () -> RandomAccessMode.from(AccessMode.EXECUTE));
+ }
+
+ @Test
public void test_getModeStringRead() {
assertEquals("r", RandomAccessMode.READ.getModeString());
}