This is an automated email from the ASF dual-hosted git repository.
ctubbsii 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 9365716 Remove Authorizations class (#115)
9365716 is described below
commit 936571695b93c7e7488a5369ce90ad2cdc385835
Author: Christopher Tubbs <[email protected]>
AuthorDate: Mon Mar 16 18:14:25 2026 -0400
Remove Authorizations class (#115)
Remove unneeded Authorizations class in favor of using a `Set<String>`
directly, avoiding redundant set copies and validation.
---
.../antlr4/AccessExpressionAntlrEvaluator.java | 8 +--
.../antlr/AccessExpressionAntlrBenchmark.java | 5 +-
.../accumulo/access/grammar/antlr/Antlr4Tests.java | 9 ++-
.../java/org/apache/accumulo/access/Access.java | 14 +----
.../org/apache/accumulo/access/Authorizations.java | 33 -----------
.../access/InvalidAuthorizationException.java | 2 +-
.../accumulo/access/impl/AccessEvaluatorImpl.java | 15 ++---
.../apache/accumulo/access/impl/AccessImpl.java | 31 ++++------
.../accumulo/access/impl/AuthorizationsImpl.java | 66 ----------------------
.../access/impl/MultiAccessEvaluatorImpl.java | 12 +---
.../accumulo/access/tests/AccessEvaluatorTest.java | 15 +++--
.../access/tests/AccessExpressionBenchmark.java | 7 +--
.../accumulo/access/tests/AuthorizationTest.java | 43 +++-----------
.../accumulo/access/examples/AccessExample.java | 3 +-
14 files changed, 49 insertions(+), 214 deletions(-)
diff --git
a/modules/antlr4-example/src/main/java/org/apache/accumulo/access/antlr4/AccessExpressionAntlrEvaluator.java
b/modules/antlr4-example/src/main/java/org/apache/accumulo/access/antlr4/AccessExpressionAntlrEvaluator.java
index 605869d..ecf101d 100644
---
a/modules/antlr4-example/src/main/java/org/apache/accumulo/access/antlr4/AccessExpressionAntlrEvaluator.java
+++
b/modules/antlr4-example/src/main/java/org/apache/accumulo/access/antlr4/AccessExpressionAntlrEvaluator.java
@@ -26,7 +26,6 @@ import java.util.Set;
import org.antlr.v4.runtime.tree.ParseTree;
import org.antlr.v4.runtime.tree.TerminalNode;
import org.apache.accumulo.access.Access;
-import org.apache.accumulo.access.Authorizations;
import
org.apache.accumulo.access.grammars.AccessExpressionParser.Access_expressionContext;
import
org.apache.accumulo.access.grammars.AccessExpressionParser.Access_tokenContext;
import
org.apache.accumulo.access.grammars.AccessExpressionParser.And_operatorContext;
@@ -50,15 +49,14 @@ public class AccessExpressionAntlrEvaluator {
private final List<Entity> entities;
- public AccessExpressionAntlrEvaluator(List<Authorizations> authSets) {
+ public AccessExpressionAntlrEvaluator(List<Set<String>> authSets) {
entities = new ArrayList<>(authSets.size());
- for (Authorizations a : authSets) {
- Set<String> entityAuths = a.asSet();
+ for (Set<String> entityAuths : authSets) {
Entity e = new Entity();
entities.add(e);
e.authorizations = new HashSet<>(entityAuths.size() * 2);
- a.asSet().stream().forEach(auth -> {
+ entityAuths.stream().forEach(auth -> {
e.authorizations.add(auth);
String quoted = ACCESS.quote(auth);
if (!quoted.startsWith("\"")) {
diff --git
a/modules/antlr4-example/src/test/java/org/apache/accumulo/access/grammar/antlr/AccessExpressionAntlrBenchmark.java
b/modules/antlr4-example/src/test/java/org/apache/accumulo/access/grammar/antlr/AccessExpressionAntlrBenchmark.java
index e4d1e66..ed48963 100644
---
a/modules/antlr4-example/src/test/java/org/apache/accumulo/access/grammar/antlr/AccessExpressionAntlrBenchmark.java
+++
b/modules/antlr4-example/src/test/java/org/apache/accumulo/access/grammar/antlr/AccessExpressionAntlrBenchmark.java
@@ -19,7 +19,6 @@
package org.apache.accumulo.access.grammar.antlr;
import static java.nio.charset.StandardCharsets.UTF_8;
-import static org.apache.accumulo.access.grammar.antlr.Antlr4Tests.ACCESS;
import java.io.IOException;
import java.net.URISyntaxException;
@@ -90,8 +89,8 @@ public class AccessExpressionAntlrBenchmark {
et.parsedExpressions = new ArrayList<>();
et.expressions = new ArrayList<>();
- et.evaluator = new
AccessExpressionAntlrEvaluator(Stream.of(testDataSet.getAuths())
- .map(a ->
ACCESS.newAuthorizations(Set.of(a))).collect(Collectors.toList()));
+ et.evaluator = new AccessExpressionAntlrEvaluator(
+ Stream.of(testDataSet.getAuths()).map(a ->
Set.of(a)).collect(Collectors.toList()));
for (var tests : testDataSet.getTests()) {
if (tests.getExpectedResult() !=
TestDataLoader.ExpectedResult.ERROR) {
diff --git
a/modules/antlr4-example/src/test/java/org/apache/accumulo/access/grammar/antlr/Antlr4Tests.java
b/modules/antlr4-example/src/test/java/org/apache/accumulo/access/grammar/antlr/Antlr4Tests.java
index 7847491..0d20ac0 100644
---
a/modules/antlr4-example/src/test/java/org/apache/accumulo/access/grammar/antlr/Antlr4Tests.java
+++
b/modules/antlr4-example/src/test/java/org/apache/accumulo/access/grammar/antlr/Antlr4Tests.java
@@ -40,7 +40,6 @@ import org.antlr.v4.runtime.RecognitionException;
import org.antlr.v4.runtime.Recognizer;
import org.apache.accumulo.access.Access;
import org.apache.accumulo.access.AccessEvaluator;
-import org.apache.accumulo.access.Authorizations;
import org.apache.accumulo.access.InvalidAccessExpressionException;
import org.apache.accumulo.access.antlr.TestDataLoader;
import org.apache.accumulo.access.antlr.TestDataLoader.ExpectedResult;
@@ -123,7 +122,7 @@ public class Antlr4Tests {
@Test
public void testSimpleEvaluation() throws Exception {
String accessExpression = "(one&two)|(foo&bar)";
- Authorizations auths = ACCESS.newAuthorizations(Set.of("four", "three",
"one", "two"));
+ var auths = Set.of("four", "three", "one", "two");
AccessExpressionAntlrEvaluator eval = new
AccessExpressionAntlrEvaluator(List.of(auths));
assertTrue(eval.canAccess(accessExpression));
}
@@ -131,7 +130,7 @@ public class Antlr4Tests {
@Test
public void testSimpleEvaluationFailure() throws Exception {
String accessExpression = "(A&B&C)";
- Authorizations auths = ACCESS.newAuthorizations(Set.of("A", "C"));
+ var auths = Set.of("A", "C");
AccessExpressionAntlrEvaluator eval = new
AccessExpressionAntlrEvaluator(List.of(auths));
assertFalse(eval.canAccess(accessExpression));
}
@@ -143,8 +142,8 @@ public class Antlr4Tests {
List<TestDataSet> testData = TestDataLoader.readTestData();
for (TestDataSet testSet : testData) {
- List<Authorizations> authSets = Stream.of(testSet.getAuths())
- .map(a ->
ACCESS.newAuthorizations(Set.of(a))).collect(Collectors.toList());
+ List<Set<String>> authSets =
+ Stream.of(testSet.getAuths()).map(a ->
Set.of(a)).collect(Collectors.toList());
AccessEvaluator evaluator = ACCESS.newEvaluator(authSets);
AccessExpressionAntlrEvaluator antlr = new
AccessExpressionAntlrEvaluator(authSets);
diff --git a/modules/core/src/main/java/org/apache/accumulo/access/Access.java
b/modules/core/src/main/java/org/apache/accumulo/access/Access.java
index 59a21f4..62d2a8a 100644
--- a/modules/core/src/main/java/org/apache/accumulo/access/Access.java
+++ b/modules/core/src/main/java/org/apache/accumulo/access/Access.java
@@ -101,16 +101,6 @@ public interface Access {
ParsedAccessExpression newParsedExpression(String expression)
throws InvalidAccessExpressionException, InvalidAuthorizationException;
- /**
- * Creates an Authorizations object from the set of input authorization
strings.
- *
- * @param authorizations set of authorization strings
- * @throws InvalidAuthorizationException when the expression contains an
authorization that is not
- * valid
- * @return Authorizations object
- */
- Authorizations newAuthorizations(Set<String> authorizations) throws
InvalidAuthorizationException;
-
/**
* Validates an access expression and finds all authorizations in it passing
them to the
* authorizationConsumer. For example, for the expression {@code
(A&B)|(A&C)|(A&D)}, this method
@@ -156,7 +146,7 @@ public interface Access {
* @param authorizations auths to use in the AccessEvaluator
* @return AccessEvaluator object
*/
- AccessEvaluator newEvaluator(Authorizations authorizations);
+ AccessEvaluator newEvaluator(Set<String> authorizations);
/**
* Creates an AccessEvaluator from an Authorizer
@@ -215,5 +205,5 @@ public interface Access {
*
* </table>
*/
- AccessEvaluator newEvaluator(Collection<Authorizations> authorizationSets);
+ AccessEvaluator newEvaluator(Collection<Set<String>> authorizationSets);
}
diff --git
a/modules/core/src/main/java/org/apache/accumulo/access/Authorizations.java
b/modules/core/src/main/java/org/apache/accumulo/access/Authorizations.java
deleted file mode 100644
index eb5b783..0000000
--- a/modules/core/src/main/java/org/apache/accumulo/access/Authorizations.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.accumulo.access;
-
-import java.util.Set;
-
-/**
- * An immutable collection of authorization strings.
- *
- * <p>
- * Instances of this class are thread-safe.
- *
- * @since 1.0.0
- */
-public interface Authorizations extends Iterable<String> {
- Set<String> asSet();
-}
diff --git
a/modules/core/src/main/java/org/apache/accumulo/access/InvalidAuthorizationException.java
b/modules/core/src/main/java/org/apache/accumulo/access/InvalidAuthorizationException.java
index 5790cf7..74df35f 100644
---
a/modules/core/src/main/java/org/apache/accumulo/access/InvalidAuthorizationException.java
+++
b/modules/core/src/main/java/org/apache/accumulo/access/InvalidAuthorizationException.java
@@ -23,7 +23,7 @@ package org.apache.accumulo.access;
*
* @since 1.0.0
*/
-public class InvalidAuthorizationException extends RuntimeException {
+public class InvalidAuthorizationException extends IllegalArgumentException {
private static final long serialVersionUID = 1L;
diff --git
a/modules/core/src/main/java/org/apache/accumulo/access/impl/AccessEvaluatorImpl.java
b/modules/core/src/main/java/org/apache/accumulo/access/impl/AccessEvaluatorImpl.java
index e4c5374..e71fe29 100644
---
a/modules/core/src/main/java/org/apache/accumulo/access/impl/AccessEvaluatorImpl.java
+++
b/modules/core/src/main/java/org/apache/accumulo/access/impl/AccessEvaluatorImpl.java
@@ -26,11 +26,11 @@ import static
org.apache.accumulo.access.impl.CharUtils.isQuoteSymbol;
import java.util.HashSet;
import java.util.Set;
+import java.util.function.Consumer;
import java.util.function.Predicate;
import org.apache.accumulo.access.AccessEvaluator;
import org.apache.accumulo.access.AuthorizationValidator;
-import org.apache.accumulo.access.Authorizations;
import org.apache.accumulo.access.InvalidAccessExpressionException;
public final class AccessEvaluatorImpl implements AccessEvaluator {
@@ -50,17 +50,12 @@ public final class AccessEvaluatorImpl implements
AccessEvaluator {
/**
* Create an AccessEvaluatorImpl using a collection of authorizations
*/
- AccessEvaluatorImpl(Authorizations authorizations,
+ AccessEvaluatorImpl(Set<String> authorizations, Consumer<String>
authArgumentValidator,
AuthorizationValidator authorizationValidator) {
- var authsSet = authorizations.asSet();
- final Set<CharsWrapper> wrappedAuths = new HashSet<>(authsSet.size());
- for (String authorization : authsSet) {
- if (authorization.isEmpty()) {
- throw new IllegalArgumentException("Empty authorization");
- }
- wrappedAuths.add(new CharsWrapper(authorization.toCharArray()));
- }
+ final Set<CharsWrapper> wrappedAuths = new
HashSet<>(authorizations.size());
+ authorizations.forEach(authArgumentValidator
+ .andThen(auth -> wrappedAuths.add(new
CharsWrapper(auth.toCharArray()))));
this.authorizedPredicate =
auth -> auth instanceof CharsWrapper wrapped ?
wrappedAuths.contains(wrapped)
diff --git
a/modules/core/src/main/java/org/apache/accumulo/access/impl/AccessImpl.java
b/modules/core/src/main/java/org/apache/accumulo/access/impl/AccessImpl.java
index ed00893..9120ed5 100644
--- a/modules/core/src/main/java/org/apache/accumulo/access/impl/AccessImpl.java
+++ b/modules/core/src/main/java/org/apache/accumulo/access/impl/AccessImpl.java
@@ -20,6 +20,7 @@ package org.apache.accumulo.access.impl;
import static
org.apache.accumulo.access.AuthorizationValidator.AuthorizationCharacters.ANY;
+import java.util.ArrayList;
import java.util.Collection;
import java.util.Objects;
import java.util.Set;
@@ -30,7 +31,6 @@ import org.apache.accumulo.access.Access;
import org.apache.accumulo.access.AccessEvaluator;
import org.apache.accumulo.access.AccessExpression;
import org.apache.accumulo.access.AuthorizationValidator;
-import org.apache.accumulo.access.Authorizations;
import org.apache.accumulo.access.InvalidAccessExpressionException;
import org.apache.accumulo.access.InvalidAuthorizationException;
import org.apache.accumulo.access.ParsedAccessExpression;
@@ -39,12 +39,11 @@ public class AccessImpl implements Access {
private final AuthorizationValidator authValidator;
- private void validateAuthorization(CharSequence auth,
- AuthorizationValidator.AuthorizationCharacters quoting) {
+ private void validateAuthArgument(CharSequence auth) {
if (auth.isEmpty()) {
throw new IllegalArgumentException("Empty string is not a valid
authorization");
}
- if (!authValidator.test(auth, quoting)) {
+ if (!authValidator.test(auth, ANY)) {
throw new InvalidAuthorizationException(auth.toString());
}
}
@@ -67,16 +66,6 @@ public class AccessImpl implements Access {
return ParsedAccessExpressionImpl.parseExpression(expression,
authValidator);
}
- @Override
- public Authorizations newAuthorizations(Set<String> authorizations) {
- if (authorizations.isEmpty()) {
- return AuthorizationsImpl.EMPTY;
- } else {
- authorizations.forEach(auth -> validateAuthorization(auth, ANY));
- return new AuthorizationsImpl(authorizations);
- }
- }
-
@Override
public void findAuthorizations(String expression, Consumer<String>
authorizationConsumer)
throws InvalidAccessExpressionException {
@@ -85,14 +74,14 @@ public class AccessImpl implements Access {
@Override
public String quote(String authorization) {
- validateAuthorization(authorization, ANY);
+ validateAuthArgument(authorization);
return AccessExpressionImpl.quote(authorization).toString();
}
@Override
public String unquote(String authorization) {
var unquoted = AccessExpressionImpl.unquote(authorization);
- validateAuthorization(unquoted, ANY);
+ validateAuthArgument(unquoted);
return unquoted.toString();
}
@@ -102,8 +91,8 @@ public class AccessImpl implements Access {
}
@Override
- public AccessEvaluator newEvaluator(Authorizations authorizations) {
- return new AccessEvaluatorImpl(authorizations, authValidator);
+ public AccessEvaluator newEvaluator(Set<String> authorizations) {
+ return new AccessEvaluatorImpl(authorizations, this::validateAuthArgument,
authValidator);
}
@Override
@@ -112,7 +101,9 @@ public class AccessImpl implements Access {
}
@Override
- public AccessEvaluator newEvaluator(Collection<Authorizations>
authorizationSets) {
- return new MultiAccessEvaluatorImpl(authorizationSets, authValidator);
+ public AccessEvaluator newEvaluator(Collection<Set<String>>
authorizationSets) {
+ var evaluators = new ArrayList<AccessEvaluator>(authorizationSets.size());
+ authorizationSets.forEach(set -> evaluators.add(newEvaluator(set)));
+ return new MultiAccessEvaluatorImpl(evaluators);
}
}
diff --git
a/modules/core/src/main/java/org/apache/accumulo/access/impl/AuthorizationsImpl.java
b/modules/core/src/main/java/org/apache/accumulo/access/impl/AuthorizationsImpl.java
deleted file mode 100644
index b8c5295..0000000
---
a/modules/core/src/main/java/org/apache/accumulo/access/impl/AuthorizationsImpl.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.accumulo.access.impl;
-
-import java.util.Iterator;
-import java.util.Set;
-
-import org.apache.accumulo.access.Authorizations;
-
-public class AuthorizationsImpl implements Authorizations {
-
- static final Authorizations EMPTY = new AuthorizationsImpl(Set.of());
-
- private final Set<String> authorizations;
-
- AuthorizationsImpl(Set<String> authorizations) {
- this.authorizations = Set.copyOf(authorizations);
- }
-
- @Override
- public boolean equals(Object o) {
- return this == o
- || (o instanceof AuthorizationsImpl oa &&
authorizations.equals(oa.authorizations));
- }
-
- @Override
- public int hashCode() {
- return authorizations.hashCode();
- }
-
- @Override
- public String toString() {
- return authorizations.toString();
- }
-
- /**
- * Returns the set of authorization strings in this Authorization object
- *
- * @return immutable set of authorization strings
- */
- @Override
- public Set<String> asSet() {
- return authorizations;
- }
-
- @Override
- public Iterator<String> iterator() {
- return authorizations.iterator();
- }
-}
diff --git
a/modules/core/src/main/java/org/apache/accumulo/access/impl/MultiAccessEvaluatorImpl.java
b/modules/core/src/main/java/org/apache/accumulo/access/impl/MultiAccessEvaluatorImpl.java
index 2ea6964..d0537e3 100644
---
a/modules/core/src/main/java/org/apache/accumulo/access/impl/MultiAccessEvaluatorImpl.java
+++
b/modules/core/src/main/java/org/apache/accumulo/access/impl/MultiAccessEvaluatorImpl.java
@@ -18,25 +18,17 @@
*/
package org.apache.accumulo.access.impl;
-import java.util.ArrayList;
-import java.util.Collection;
import java.util.List;
import org.apache.accumulo.access.AccessEvaluator;
-import org.apache.accumulo.access.AuthorizationValidator;
-import org.apache.accumulo.access.Authorizations;
import org.apache.accumulo.access.InvalidAccessExpressionException;
public final class MultiAccessEvaluatorImpl implements AccessEvaluator {
private final List<AccessEvaluator> evaluators;
- MultiAccessEvaluatorImpl(Collection<Authorizations> authorizationSets,
- AuthorizationValidator validator) {
- evaluators = new ArrayList<>(authorizationSets.size());
- for (Authorizations authorizations : authorizationSets) {
- evaluators.add(new AccessEvaluatorImpl(authorizations, validator));
- }
+ MultiAccessEvaluatorImpl(List<AccessEvaluator> evaluators) {
+ this.evaluators = evaluators;
}
@Override
diff --git
a/modules/core/src/test/java/org/apache/accumulo/access/tests/AccessEvaluatorTest.java
b/modules/core/src/test/java/org/apache/accumulo/access/tests/AccessEvaluatorTest.java
index a3b0e3b..c445bf4 100644
---
a/modules/core/src/test/java/org/apache/accumulo/access/tests/AccessEvaluatorTest.java
+++
b/modules/core/src/test/java/org/apache/accumulo/access/tests/AccessEvaluatorTest.java
@@ -91,15 +91,14 @@ public class AccessEvaluatorTest {
AccessEvaluator evaluator;
assertTrue(testSet.auths.length >= 1);
if (testSet.auths.length == 1) {
- evaluator =
access.newEvaluator(access.newAuthorizations(Set.of(testSet.auths[0])));
+ evaluator = access.newEvaluator(Set.of(testSet.auths[0]));
runTestCases(access, testSet, evaluator);
Set<String> auths =
Stream.of(testSet.auths[0]).collect(Collectors.toSet());
evaluator = access.newEvaluator(auths::contains);
runTestCases(access, testSet, evaluator);
} else {
- var authSets = Stream.of(testSet.auths).map(a ->
access.newAuthorizations(Set.of(a)))
- .collect(Collectors.toList());
+ var authSets = Stream.of(testSet.auths).map(a ->
Set.of(a)).collect(Collectors.toList());
evaluator = access.newEvaluator(authSets);
runTestCases(access, testSet, evaluator);
}
@@ -166,10 +165,10 @@ public class AccessEvaluatorTest {
@Test
public void testEmptyAuthorizations() {
var access = Access.builder().build();
- assertThrows(IllegalArgumentException.class, () ->
access.newAuthorizations(Set.of("")));
- assertThrows(IllegalArgumentException.class, () ->
access.newAuthorizations(Set.of("", "A")));
- assertThrows(IllegalArgumentException.class, () ->
access.newAuthorizations(Set.of("A", "")));
- assertThrows(IllegalArgumentException.class, () ->
access.newAuthorizations(Set.of("")));
+ assertThrows(IllegalArgumentException.class, () ->
access.newEvaluator(Set.of("")));
+ assertThrows(IllegalArgumentException.class, () ->
access.newEvaluator(Set.of("", "A")));
+ assertThrows(IllegalArgumentException.class, () ->
access.newEvaluator(Set.of("A", "")));
+ assertThrows(IllegalArgumentException.class, () ->
access.newEvaluator(Set.of("")));
}
@Test
@@ -277,7 +276,7 @@ public class AccessEvaluatorTest {
assertEquals(Set.of("A", "B/C", "D\\E"), seenAuths);
seenAuths.clear();
- var eval = access.newEvaluator(access.newAuthorizations(Set.of("A")));
+ var eval = access.newEvaluator(Set.of("A"));
assertFalse(eval.canAccess(qa1 + "&" + qa2 + "&" + qa3));
assertEquals(Set.of("A", "B/C", "D\\E"), seenAuths);
seenAuths.clear();
diff --git
a/modules/core/src/test/java/org/apache/accumulo/access/tests/AccessExpressionBenchmark.java
b/modules/core/src/test/java/org/apache/accumulo/access/tests/AccessExpressionBenchmark.java
index 586d640..b64df5b 100644
---
a/modules/core/src/test/java/org/apache/accumulo/access/tests/AccessExpressionBenchmark.java
+++
b/modules/core/src/test/java/org/apache/accumulo/access/tests/AccessExpressionBenchmark.java
@@ -126,11 +126,10 @@ public class AccessExpressionBenchmark {
et.expressions = new ArrayList<>();
if (testDataSet.auths.length == 1) {
- et.evaluator =
-
access.newEvaluator(access.newAuthorizations(Set.of(testDataSet.auths[0])));
+ et.evaluator = access.newEvaluator(Set.of(testDataSet.auths[0]));
} else {
- var authSets = Stream.of(testDataSet.auths).map(a ->
access.newAuthorizations(Set.of(a)))
- .collect(Collectors.toList());
+ var authSets =
+ Stream.of(testDataSet.auths).map(a ->
Set.of(a)).collect(Collectors.toList());
et.evaluator = access.newEvaluator(authSets);
}
diff --git
a/modules/core/src/test/java/org/apache/accumulo/access/tests/AuthorizationTest.java
b/modules/core/src/test/java/org/apache/accumulo/access/tests/AuthorizationTest.java
index 171abc7..25855e2 100644
---
a/modules/core/src/test/java/org/apache/accumulo/access/tests/AuthorizationTest.java
+++
b/modules/core/src/test/java/org/apache/accumulo/access/tests/AuthorizationTest.java
@@ -22,7 +22,6 @@ import static java.nio.charset.StandardCharsets.UTF_8;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertNotEquals;
-import static org.junit.jupiter.api.Assertions.assertSame;
import static org.junit.jupiter.api.Assertions.assertThrows;
import static org.junit.jupiter.api.Assertions.assertTrue;
@@ -30,7 +29,6 @@ import java.util.List;
import java.util.Set;
import org.apache.accumulo.access.Access;
-import org.apache.accumulo.access.Authorizations;
import org.apache.accumulo.access.InvalidAccessExpressionException;
import org.apache.accumulo.access.InvalidAuthorizationException;
import org.apache.accumulo.access.impl.Tokenizer;
@@ -38,31 +36,6 @@ import org.junit.jupiter.api.Test;
public class AuthorizationTest {
- @Test
- public void testEquality() {
- var access = Access.builder().build();
- Authorizations auths1 = access.newAuthorizations(Set.of("A", "B", "C"));
- Authorizations auths2 = access.newAuthorizations(Set.of("A", "B", "C"));
-
- assertEquals(auths1, auths2);
- assertEquals(auths1.hashCode(), auths2.hashCode());
-
- Authorizations auths3 = access.newAuthorizations(Set.of("D", "E", "F"));
-
- assertNotEquals(auths1, auths3);
- assertNotEquals(auths1.hashCode(), auths3.hashCode());
- }
-
- @Test
- public void testEmpty() {
- var access = Access.builder().build();
- // check if new object is allocated
- assertSame(access.newAuthorizations(Set.of()),
access.newAuthorizations(Set.of()));
- assertEquals(Set.of(), access.newAuthorizations(Set.of()).asSet());
- assertSame(access.newAuthorizations(Set.of()).asSet(),
- access.newAuthorizations(Set.of()).asSet());
- }
-
@Test
public void testAuthorizationValidation() {
@@ -152,8 +125,8 @@ public class AuthorizationTest {
assertEquals('"' + "ABC\\\"D" + '"', quoted);
assertEquals("ABC\"D", accumuloAccess.unquote(quoted));
- var auths1 = accumuloAccess.newAuthorizations(Set.of("ABC\"D", "DEF"));
- var auths2 = accumuloAccess.newAuthorizations(Set.of("ABC\"D", "XYZ"));
+ var auths1 = Set.of("ABC\"D", "DEF");
+ var auths2 = Set.of("ABC\"D", "XYZ");
var evaluator = accumuloAccess.newEvaluator(auths1);
assertTrue(evaluator.canAccess(quoted + "|XYZ"));
@@ -201,17 +174,17 @@ public class AuthorizationTest {
assertEquals('"' + auth1 + '"' + "&" + auth2, exp1);
assertEquals('"' + auth1 + '"' + "|" + auth2, exp2);
- var auths1 = access.newAuthorizations(Set.of(auth1, auth2));
+ var auths1 = Set.of(auth1, auth2);
var evaluator1 = access.newEvaluator(auths1);
assertTrue(evaluator1.canAccess(exp1));
assertTrue(evaluator1.canAccess(exp2));
- var auths2 = access.newAuthorizations(Set.of(auth1));
+ var auths2 = Set.of(auth1);
var evaluator2 = access.newEvaluator(auths2);
assertFalse(evaluator2.canAccess(exp1));
assertTrue(evaluator2.canAccess(exp2));
- var auths3 = access.newAuthorizations(Set.of(auth2));
+ var auths3 = Set.of(auth2);
var evaluator3 = access.newEvaluator(auths3);
assertFalse(evaluator3.canAccess(exp1));
assertTrue(evaluator3.canAccess(exp2));
@@ -221,8 +194,8 @@ public class AuthorizationTest {
Access accumuloAccess) {
List<String> auths = List.of(goodAuth1, goodAuth2, badAuth, goodAuth3);
- var auths1 = accumuloAccess.newAuthorizations(Set.of(goodAuth1,
goodAuth2));
- var auths2 = accumuloAccess.newAuthorizations(Set.of(goodAuth3,
goodAuth2));
+ var auths1 = Set.of(goodAuth1, goodAuth2);
+ var auths2 = Set.of(goodAuth3, goodAuth2);
var evaluator = accumuloAccess.newEvaluator(auths1);
var multiEvaluator = accumuloAccess.newEvaluator(List.of(auths1, auths2));
@@ -265,7 +238,7 @@ public class AuthorizationTest {
assertTrue(exception.getMessage().contains(badAuth));
exception = assertThrows(InvalidAuthorizationException.class,
- () -> accumuloAccess.newAuthorizations(Set.of(a1, a2, a3, a4)));
+ () -> accumuloAccess.newEvaluator(Set.of(a1, a2, a3, a4)));
assertTrue(exception.getMessage().contains(badAuth));
if (badAuth.chars().anyMatch(c -> !Tokenizer.isValidAuthChar((char) c)))
{
diff --git
a/modules/examples/src/main/java/org/apache/accumulo/access/examples/AccessExample.java
b/modules/examples/src/main/java/org/apache/accumulo/access/examples/AccessExample.java
index aba3881..7e01a3d 100644
---
a/modules/examples/src/main/java/org/apache/accumulo/access/examples/AccessExample.java
+++
b/modules/examples/src/main/java/org/apache/accumulo/access/examples/AccessExample.java
@@ -56,8 +56,7 @@ public class AccessExample {
var access =
Access.builder().authorizationValidator(AuthorizationValidator.DEFAULT).build();
// Create an access evaluator using the provided authorizations
- AccessEvaluator evaluator =
- access.newEvaluator(access.newAuthorizations(Set.of(authorizations)));
+ AccessEvaluator evaluator = access.newEvaluator(Set.of(authorizations));
// Print each record whose access expression permits viewing using the
provided authorizations
getData().forEach((record, accessExpression) -> {