This is an automated email from the ASF dual-hosted git repository. mattsicker pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/logging-log4j2.git
commit a75d2015b237724511921fc51c4312f3d6e69849 Author: Matt Sicker <[email protected]> AuthorDate: Fri Feb 16 16:22:20 2024 -0600 Avoid using TypeConverter in ValidPortValidator A handy new variant of Integer::parseInt helps here. --- .../validation/validators/ValidPortValidator.java | 25 ++++++++++------------ 1 file changed, 11 insertions(+), 14 deletions(-) diff --git a/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/validation/validators/ValidPortValidator.java b/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/validation/validators/ValidPortValidator.java index ff568442b7..a56db2b601 100644 --- a/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/validation/validators/ValidPortValidator.java +++ b/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/validation/validators/ValidPortValidator.java @@ -17,9 +17,6 @@ package org.apache.logging.log4j.plugins.validation.validators; import org.apache.logging.log4j.Logger; -import org.apache.logging.log4j.plugins.Inject; -import org.apache.logging.log4j.plugins.convert.TypeConverter; -import org.apache.logging.log4j.plugins.convert.TypeConverterFactory; import org.apache.logging.log4j.plugins.validation.ConstraintValidator; import org.apache.logging.log4j.plugins.validation.constraints.ValidPort; import org.apache.logging.log4j.status.StatusLogger; @@ -33,14 +30,8 @@ public class ValidPortValidator implements ConstraintValidator<ValidPort> { private static final Logger LOGGER = StatusLogger.getLogger(); - private final TypeConverter<Integer> converter; private ValidPort annotation; - @Inject - public ValidPortValidator(final TypeConverterFactory factory) { - converter = factory.getTypeConverter(Integer.class); - } - @Override public void initialize(final ValidPort annotation) { this.annotation = annotation; @@ -48,14 +39,20 @@ public class ValidPortValidator implements ConstraintValidator<ValidPort> { @Override public boolean isValid(final String name, final Object value) { - if (value instanceof CharSequence) { - return isValid(name, converter.convert(value.toString(), -1)); - } - if (!(value instanceof Integer)) { + final int port; + if (value instanceof Integer i) { + port = i; + } else if (value instanceof CharSequence cs) { + try { + port = Integer.parseInt(cs, 0, cs.length(), 10); + } catch (final NumberFormatException ignored) { + LOGGER.error(annotation.message()); + return false; + } + } else { LOGGER.error(annotation.message()); return false; } - final int port = (int) value; if (port < 0 || port > 65535) { LOGGER.error(annotation.message()); return false;
