diff --git a/README.md b/README.md
index 1aa81db..b6d4136 100644
--- a/README.md
+++ b/README.md
@@ -47,6 +47,11 @@ are package private and are not part of the public API.
* [ExpressionType](modules/core/src/main/java/org/apache/accumulo/access/ParsedAccessExpression.java).
* [Authorizations](modules/core/src/main/java/org/apache/accumulo/access/Authorizations.java).
+`AccessEvaluator`, `AccessExpression`, and `ParsedAccessExpression` will be
+sealed interfaces or classes in future releases that support class sealing. So,
+users should not create their own implementations of these. Their
+implementations are expected to be provided by this library only.
+
## Getting Started
Add the library to your CLASSPATH. For Maven, use:
diff --git a/modules/antlr4-example/src/test/java/org/apache/accumulo/access/antlr4/Antlr4Tests.java b/modules/antlr4-example/src/test/java/org/apache/accumulo/access/antlr4/Antlr4Tests.java
index 1eecfd1..f3bd662 100644
--- a/modules/antlr4-example/src/test/java/org/apache/accumulo/access/antlr4/Antlr4Tests.java
+++ b/modules/antlr4-example/src/test/java/org/apache/accumulo/access/antlr4/Antlr4Tests.java
@@ -152,20 +152,20 @@ public void testCompareAntlrEvaluationAgainstAccessEvaluatorImpl() throws Except
assertNotEquals(0, test.getExpressions().length);
for (String expression : test.getExpressions()) {
switch (test.getExpectedResult()) {
- case ACCESSIBLE -> {
+ case ACCESSIBLE:
assertTrue(evaluator.canAccess(expression), expression);
assertTrue(antlr.canAccess(expression), expression);
- }
- case INACCESSIBLE -> {
+ break;
+ case INACCESSIBLE:
assertFalse(evaluator.canAccess(expression), expression);
assertFalse(antlr.canAccess(expression), expression);
- }
- case ERROR -> {
+ break;
+ case ERROR:
assertThrows(InvalidAccessExpressionException.class,
() -> evaluator.canAccess(expression), expression);
assertThrows(InvalidAccessExpressionException.class,
() -> antlr.canAccess(expression), expression);
- }
+ break;
}
}
}
diff --git a/modules/core/src/main/java/org/apache/accumulo/access/AccessEvaluator.java b/modules/core/src/main/java/org/apache/accumulo/access/AccessEvaluator.java
index bc447bc..ab2fbd7 100644
--- a/modules/core/src/main/java/org/apache/accumulo/access/AccessEvaluator.java
+++ b/modules/core/src/main/java/org/apache/accumulo/access/AccessEvaluator.java
@@ -18,9 +18,6 @@
*/
package org.apache.accumulo.access;
-import org.apache.accumulo.access.impl.AccessEvaluatorImpl;
-import org.apache.accumulo.access.impl.MultiAccessEvaluatorImpl;
-
/**
* This class is used to decide if an entity with a given set of authorizations can access
* subsequent access expressions.
@@ -53,7 +50,7 @@
* @see Accumulo Access Documentation
* @since 1.0.0
*/
-public sealed interface AccessEvaluator permits AccessEvaluatorImpl, MultiAccessEvaluatorImpl {
+public interface AccessEvaluator {
/**
* Evaluates an expression.
diff --git a/modules/core/src/main/java/org/apache/accumulo/access/AccessExpression.java b/modules/core/src/main/java/org/apache/accumulo/access/AccessExpression.java
index 7c1d68e..61f97f9 100644
--- a/modules/core/src/main/java/org/apache/accumulo/access/AccessExpression.java
+++ b/modules/core/src/main/java/org/apache/accumulo/access/AccessExpression.java
@@ -21,15 +21,12 @@
import java.io.Serializable;
import java.util.Objects;
-import org.apache.accumulo.access.impl.AccessExpressionImpl;
-
/**
* An immutable wrapper for a validated access expression.
*
* @since 1.0.0
*/
-public sealed abstract class AccessExpression implements Serializable
- permits AccessExpressionImpl, ParsedAccessExpression {
+public abstract class AccessExpression implements Serializable {
private static final long serialVersionUID = 1L;
@@ -53,8 +50,8 @@ protected AccessExpression() {}
@Override
public boolean equals(Object o) {
- return this == o
- || (o instanceof AccessExpression a && Objects.equals(getExpression(), a.getExpression()));
+ return this == o || (o instanceof AccessExpression
+ && Objects.equals(getExpression(), ((AccessExpression) o).getExpression()));
}
@Override
diff --git a/modules/core/src/main/java/org/apache/accumulo/access/ParsedAccessExpression.java b/modules/core/src/main/java/org/apache/accumulo/access/ParsedAccessExpression.java
index 4e53a16..c098e77 100644
--- a/modules/core/src/main/java/org/apache/accumulo/access/ParsedAccessExpression.java
+++ b/modules/core/src/main/java/org/apache/accumulo/access/ParsedAccessExpression.java
@@ -20,8 +20,6 @@
import java.util.List;
-import org.apache.accumulo.access.impl.ParsedAccessExpressionImpl;
-
/**
* Instances of this class are immutable and wrap a verified access expression and a parse tree for
* the access expression. To create an instance of this class call
@@ -30,8 +28,7 @@
*
* @since 1.0.0
*/
-public sealed abstract class ParsedAccessExpression extends AccessExpression
- permits ParsedAccessExpressionImpl {
+public abstract class ParsedAccessExpression extends AccessExpression {
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 a568b4b..f1c7477 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
@@ -52,7 +52,7 @@ public final class AccessEvaluatorImpl implements AccessEvaluator {
.andThen(auth -> wrappedAuths.add(new CharsWrapper(auth.toCharArray()))));
this.authorizedPredicate =
- auth -> auth instanceof CharsWrapper wrapped ? wrappedAuths.contains(wrapped)
+ auth -> auth instanceof CharsWrapper ? wrappedAuths.contains((CharsWrapper) auth)
: wrappedAuths.contains(new CharsWrapper(auth.toString().toCharArray()));
this.authorizationValidator = authorizationValidator;
}
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 037dad5..355dacc 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
@@ -40,7 +40,7 @@ public class AccessImpl implements Access {
private final AuthorizationValidator authValidator;
private void validateAuthArgument(CharSequence auth) {
- if (auth.isEmpty()) {
+ if (auth.length() == 0) {
throw InvalidAuthorizationException.emptyString();
}
if (!authValidator.test(auth, ANY)) {
diff --git a/modules/core/src/main/java/org/apache/accumulo/access/impl/CharsWrapper.java b/modules/core/src/main/java/org/apache/accumulo/access/impl/CharsWrapper.java
index a58554b..a65c21b 100644
--- a/modules/core/src/main/java/org/apache/accumulo/access/impl/CharsWrapper.java
+++ b/modules/core/src/main/java/org/apache/accumulo/access/impl/CharsWrapper.java
@@ -69,8 +69,9 @@ public int hashCode() {
@Override
public boolean equals(Object o) {
- return this == o || (o instanceof CharsWrapper obs && length() == obs.length() && Arrays
- .equals(wrapped, offset, offset + len, obs.wrapped, obs.offset, obs.offset + obs.len));
+ return this == o || (o instanceof CharsWrapper && length() == ((CharsWrapper) o).length()
+ && Arrays.equals(wrapped, offset, offset + len, ((CharsWrapper) o).wrapped,
+ ((CharsWrapper) o).offset, ((CharsWrapper) o).offset + ((CharsWrapper) o).len));
}
@Override
diff --git a/modules/core/src/test/java/org/apache/accumulo/access/impl/AccessEvaluatorTest.java b/modules/core/src/test/java/org/apache/accumulo/access/impl/AccessEvaluatorTest.java
index c170c95..6910ac2 100644
--- a/modules/core/src/test/java/org/apache/accumulo/access/impl/AccessEvaluatorTest.java
+++ b/modules/core/src/test/java/org/apache/accumulo/access/impl/AccessEvaluatorTest.java
@@ -93,7 +93,7 @@ private static void runTestCases(Access accumuloAccess, TestDataSet testSet,
}
switch (tests.getExpectedResult()) {
- case ACCESSIBLE -> {
+ case ACCESSIBLE:
assertTrue(evaluator.canAccess(expression), expression);
assertTrue(evaluator.canAccess(accumuloAccess.newExpression(expression)), expression);
assertTrue(evaluator.canAccess(accumuloAccess.newParsedExpression(expression)),
@@ -101,8 +101,8 @@ private static void runTestCases(Access accumuloAccess, TestDataSet testSet,
assertTrue(
evaluator.canAccess(accumuloAccess.newParsedExpression(expression).getExpression()),
expression);
- }
- case INACCESSIBLE -> {
+ break;
+ case INACCESSIBLE:
assertFalse(evaluator.canAccess(expression), expression);
assertFalse(evaluator.canAccess(accumuloAccess.newExpression(expression)), expression);
assertFalse(evaluator.canAccess(accumuloAccess.newParsedExpression(expression)),
@@ -110,8 +110,8 @@ private static void runTestCases(Access accumuloAccess, TestDataSet testSet,
assertFalse(
evaluator.canAccess(accumuloAccess.newParsedExpression(expression).getExpression()),
expression);
- }
- case ERROR -> {
+ break;
+ case ERROR:
assertThrows(InvalidAccessExpressionException.class,
() -> evaluator.canAccess(expression), expression);
assertThrows(InvalidAccessExpressionException.class,
@@ -120,7 +120,7 @@ private static void runTestCases(Access accumuloAccess, TestDataSet testSet,
() -> accumuloAccess.newExpression(expression), expression);
assertThrows(InvalidAccessExpressionException.class,
() -> accumuloAccess.newParsedExpression(expression), expression);
- }
+ break;
}
}
}
diff --git a/modules/examples/src/main/java/org/apache/accumulo/access/examples/ParseExamples.java b/modules/examples/src/main/java/org/apache/accumulo/access/examples/ParseExamples.java
index 8dd0b3e..d36402d 100644
--- a/modules/examples/src/main/java/org/apache/accumulo/access/examples/ParseExamples.java
+++ b/modules/examples/src/main/java/org/apache/accumulo/access/examples/ParseExamples.java
@@ -85,12 +85,17 @@ public static class NormalizedExpression implements Comparable 1;
- case OR -> 2;
- case AND -> 3;
- case EMPTY -> throw new IllegalArgumentException("Unexpected type " + type);
- };
+ switch (type) {
+ case AUTHORIZATION:
+ return 1;
+ case OR:
+ return 2;
+ case AND:
+ return 3;
+ case EMPTY:
+ default:
+ throw new IllegalArgumentException("Unexpected type " + type);
+ }
}
@Override
@@ -111,7 +116,8 @@ public int compareTo(NormalizedExpression o) {
@Override
public boolean equals(Object o) {
- return this == o || (o instanceof NormalizedExpression n && compareTo(n) == 0);
+ return this == o
+ || (o instanceof NormalizedExpression && compareTo((NormalizedExpression) o) == 0);
}
@Override
diff --git a/pom.xml b/pom.xml
index be1fa40..3c25350 100644
--- a/pom.xml
+++ b/pom.xml
@@ -116,7 +116,7 @@ specific language governing permissions and limitations
under the License.
]]>
false
- 17
+ 11
true
true