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;

Reply via email to