This is an automated email from the ASF dual-hosted git repository.
kturner pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/accumulo-access.git
The following commit(s) were added to refs/heads/main by this push:
new bd5cc2d adds optimization for empty authorizations (#70)
bd5cc2d is described below
commit bd5cc2d072e3f79f6190fd39416c43dfd8a4fd31
Author: Keith Turner <[email protected]>
AuthorDate: Mon Jul 8 09:29:04 2024 -0700
adds optimization for empty authorizations (#70)
---
.../java/org/apache/accumulo/access/Authorizations.java | 16 ++++++++++++++--
.../org/apache/accumulo/access/AuthorizationTest.java | 11 ++++++++++-
2 files changed, 24 insertions(+), 3 deletions(-)
diff --git a/src/main/java/org/apache/accumulo/access/Authorizations.java
b/src/main/java/org/apache/accumulo/access/Authorizations.java
index d3bd568..eb333a7 100644
--- a/src/main/java/org/apache/accumulo/access/Authorizations.java
+++ b/src/main/java/org/apache/accumulo/access/Authorizations.java
@@ -33,6 +33,8 @@ import java.util.Set;
*/
public final class Authorizations {
+ private static final Authorizations EMPTY = new Authorizations(Set.of());
+
private final Set<String> authorizations;
private Authorizations(Set<String> authorizations) {
@@ -68,6 +70,13 @@ public final class Authorizations {
return authorizations.toString();
}
+ /**
+ * @return a pre-allocated empty Authorizations object
+ */
+ public static Authorizations of() {
+ return EMPTY;
+ }
+
/**
* Creates an Authorizations object from the set of input authorization
strings.
*
@@ -75,7 +84,10 @@ public final class Authorizations {
* @return Authorizations object
*/
public static Authorizations of(Set<String> authorizations) {
- return new Authorizations(authorizations);
+ if (authorizations.isEmpty()) {
+ return EMPTY;
+ } else {
+ return new Authorizations(authorizations);
+ }
}
-
}
diff --git a/src/test/java/org/apache/accumulo/access/AuthorizationTest.java
b/src/test/java/org/apache/accumulo/access/AuthorizationTest.java
index 22636ae..1e1e764 100644
--- a/src/test/java/org/apache/accumulo/access/AuthorizationTest.java
+++ b/src/test/java/org/apache/accumulo/access/AuthorizationTest.java
@@ -20,6 +20,7 @@ package org.apache.accumulo.access;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNotEquals;
+import static org.junit.jupiter.api.Assertions.assertSame;
import java.util.Set;
@@ -39,7 +40,15 @@ public class AuthorizationTest {
assertNotEquals(auths1, auths3);
assertNotEquals(auths1.hashCode(), auths3.hashCode());
-
}
+ @Test
+ public void testEmpty() {
+ // check if new object is allocated
+ assertSame(Authorizations.of(), Authorizations.of());
+ // check if optimization is working
+ assertSame(Authorizations.of(), Authorizations.of(Set.of()));
+ assertEquals(Set.of(), Authorizations.of().asSet());
+ assertSame(Set.of(), Authorizations.of().asSet());
+ }
}