This is an automated email from the ASF dual-hosted git repository. henrib pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/commons-jexl.git
The following commit(s) were added to refs/heads/master by this push: new 891a6d7d Javadoc, comments, formatting tidbits 891a6d7d is described below commit 891a6d7d3f7afd8c1d14581c21fc589c56190e6b Author: Henri Biestro <hbies...@cloudera.com> AuthorDate: Wed Oct 18 15:31:12 2023 +0200 Javadoc, comments, formatting tidbits --- .../org/apache/commons/jexl3/JexlArithmetic.java | 9 ++++++--- .../org/apache/commons/jexl3/internal/Debugger.java | 20 ++++++++++---------- .../commons/jexl3/introspection/JexlPermissions.java | 9 +++++---- 3 files changed, 21 insertions(+), 17 deletions(-) diff --git a/src/main/java/org/apache/commons/jexl3/JexlArithmetic.java b/src/main/java/org/apache/commons/jexl3/JexlArithmetic.java index f92a0274..fc6ad8a4 100644 --- a/src/main/java/org/apache/commons/jexl3/JexlArithmetic.java +++ b/src/main/java/org/apache/commons/jexl3/JexlArithmetic.java @@ -1393,9 +1393,12 @@ public class JexlArithmetic { protected static boolean isMultiplyExact(final long x, final long y, final long r) { final long ax = Math.abs(x); final long ay = Math.abs(y); - return !((ax | ay) >>> Integer.SIZE - 1 != 0 - && (y != 0 && r / y != x - || x == Long.MIN_VALUE && y == -1)); + // Some bits greater than 2^31 that might cause overflow + // Check the result using the divide operator + // and check for the special case of Long.MIN_VALUE * -1 + return !(((ax | ay) >>> (Integer.SIZE - 1) != 0) + && ((y != 0 && r / y != x) + || (x == Long.MIN_VALUE && y == -1))); } /** diff --git a/src/main/java/org/apache/commons/jexl3/internal/Debugger.java b/src/main/java/org/apache/commons/jexl3/internal/Debugger.java index b0683ece..710cae8d 100644 --- a/src/main/java/org/apache/commons/jexl3/internal/Debugger.java +++ b/src/main/java/org/apache/commons/jexl3/internal/Debugger.java @@ -439,7 +439,7 @@ public class Debugger extends ParserVisitor implements JexlInfo.Detail { /** * Checks if a terminal node is the cause to debug & adds its representation to the rebuilt expression. * @param node the child node - * @param image the child node token image (may be null) + * @param image the child node token image (optionally null) * @param data visitor pattern argument * @return visitor pattern value */ @@ -802,7 +802,7 @@ public class Debugger extends ParserVisitor implements JexlInfo.Detail { * (but underscore, at-sign, sharp-sign and dollar). */ protected static final Pattern QUOTED_IDENTIFIER = - Pattern.compile("[\\s]|[\\p{Punct}&&[^@#$_]]"); + Pattern.compile("\\s|\\p{Punct}&&[^@#$_]"); /** * Checks whether an identifier should be quoted or not. @@ -897,7 +897,9 @@ public class Debugger extends ParserVisitor implements JexlInfo.Detail { for (final Map.Entry<String, Object> pragma : pragmas.entrySet()) { final String key = pragma.getKey(); final Object value = pragma.getValue(); - final Set<Object> values = value instanceof Set ? (Set) value : Collections.singleton(value); + final Set<Object> values = value instanceof Set<?> + ? (Set<Object>) value + : Collections.singleton(value); for (final Object pragmaValue : values) { builder.append("#pragma "); builder.append(key); @@ -1054,8 +1056,6 @@ public class Debugger extends ParserVisitor implements JexlInfo.Detail { for (int i = 1; i < num; ++i) { if (!first) { builder.append(", "); - } else { - first = true; } accept(node.jjtGetChild(i), data); } @@ -1275,15 +1275,15 @@ public class Debugger extends ParserVisitor implements JexlInfo.Detail { if (child instanceof ASTAssignment) { final ASTAssignment assign = (ASTAssignment) child; final int nc = assign.jjtGetNumChildren(); - final ASTVar var = (ASTVar) assign.jjtGetChild(0); - builder.append(var.getName()); + final ASTVar avar = (ASTVar) assign.jjtGetChild(0); + builder.append(avar.getName()); if (nc > 1) { builder.append(" = "); accept(assign.jjtGetChild(1), data); } } else if (child instanceof ASTVar) { - final ASTVar var = (ASTVar) child; - builder.append(var.getName()); + final ASTVar avar = (ASTVar) child; + builder.append(avar.getName()); } else { // that's odd accept(child, data); @@ -1411,7 +1411,7 @@ public class Debugger extends ParserVisitor implements JexlInfo.Detail { protected Object visit(final ASTAnnotatedStatement node, final Object data) { final int num = node.jjtGetNumChildren(); for (int i = 0; i < num; ++i) { - if (i > 0) {// && child instanceof ASTBlock) { + if (i > 0) { builder.append(' '); } final JexlNode child = node.jjtGetChild(i); diff --git a/src/main/java/org/apache/commons/jexl3/introspection/JexlPermissions.java b/src/main/java/org/apache/commons/jexl3/introspection/JexlPermissions.java index 19a8b2e4..ee0b67eb 100644 --- a/src/main/java/org/apache/commons/jexl3/introspection/JexlPermissions.java +++ b/src/main/java/org/apache/commons/jexl3/introspection/JexlPermissions.java @@ -392,10 +392,11 @@ public interface JexlPermissions { * Creates permissions based on the RESTRICTED set but allowing an explicit set. * @param allow the set of allowed classes */ - public ClassPermissions(final Class... allow) { + public ClassPermissions(final Class<?>... allow) { this(JexlPermissions.RESTRICTED, - Arrays.asList(Objects.requireNonNull(allow)) - .stream().map(Class::getCanonicalName).collect(Collectors.toList())); + Arrays.stream(Objects.requireNonNull(allow)) + .map(Class::getCanonicalName) + .collect(Collectors.toList())); } /** @@ -423,7 +424,7 @@ public interface JexlPermissions { } @Override - public boolean allow(final Constructor constructor) { + public boolean allow(final Constructor<?> constructor) { return validate(constructor) && isClassAllowed(constructor.getDeclaringClass()) || super.allow(constructor); }