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 <ktur...@apache.org> 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()); + } }