This is an automated email from the ASF dual-hosted git repository.

ggregory pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-validator.git

commit 81fb171104553621c7b445410d9cee06bdc89273
Author: Gary Gregory <garydgreg...@gmail.com>
AuthorDate: Sun May 5 15:06:11 2024 -0400

    Refactor internals for duplicate code
---
 .../routines/AbstractCalendarValidator.java        |  5 ++--
 .../routines/AbstractFormatValidator.java          |  2 +-
 .../routines/AbstractNumberValidator.java          |  4 +--
 .../validator/routines/AbstractValidator.java      | 32 ++++++++++++++++++++++
 .../commons/validator/routines/CodeValidator.java  | 11 ++------
 .../validator/routines/CreditCardValidator.java    |  6 ++--
 .../commons/validator/routines/DateValidator.java  |  1 -
 .../validator/routines/DoubleValidator.java        |  1 -
 .../commons/validator/routines/EmailValidator.java |  5 ----
 .../validator/routines/InetAddressValidator.java   | 14 ++--------
 .../commons/validator/routines/RegexValidator.java |  5 ++--
 .../commons/validator/routines/UrlValidator.java   |  6 ++--
 12 files changed, 51 insertions(+), 41 deletions(-)

diff --git 
a/src/main/java/org/apache/commons/validator/routines/AbstractCalendarValidator.java
 
b/src/main/java/org/apache/commons/validator/routines/AbstractCalendarValidator.java
index 7a46484d..ee1404d8 100644
--- 
a/src/main/java/org/apache/commons/validator/routines/AbstractCalendarValidator.java
+++ 
b/src/main/java/org/apache/commons/validator/routines/AbstractCalendarValidator.java
@@ -367,7 +367,7 @@ public abstract class AbstractCalendarValidator extends 
AbstractFormatValidator
     @Override
     protected Format getFormat(final String pattern, final Locale locale) {
         DateFormat formatter;
-        final boolean usePattern = pattern != null && !pattern.isEmpty();
+        final boolean usePattern = !isEmpty(pattern);
         if (!usePattern) {
             formatter = (DateFormat) getFormat(locale);
         } else if (locale == null) {
@@ -405,9 +405,8 @@ public abstract class AbstractCalendarValidator extends 
AbstractFormatValidator
      * @return The parsed value if valid or {@code null} if invalid.
      */
     protected Object parse(String value, final String pattern, final Locale 
locale, final TimeZone timeZone) {
-
         value = value == null ? null : value.trim();
-        if (value == null || value.isEmpty()) {
+        if (isEmpty(value)) {
             return null;
         }
         final DateFormat formatter = (DateFormat) getFormat(pattern, locale);
diff --git 
a/src/main/java/org/apache/commons/validator/routines/AbstractFormatValidator.java
 
b/src/main/java/org/apache/commons/validator/routines/AbstractFormatValidator.java
index 661c90f2..62a98584 100644
--- 
a/src/main/java/org/apache/commons/validator/routines/AbstractFormatValidator.java
+++ 
b/src/main/java/org/apache/commons/validator/routines/AbstractFormatValidator.java
@@ -29,7 +29,7 @@ import java.util.Locale;
  *
  * @since 1.3.0
  */
-public abstract class AbstractFormatValidator implements Serializable {
+public abstract class AbstractFormatValidator extends AbstractValidator 
implements Serializable {
 
     private static final long serialVersionUID = -4690687565200568258L;
 
diff --git 
a/src/main/java/org/apache/commons/validator/routines/AbstractNumberValidator.java
 
b/src/main/java/org/apache/commons/validator/routines/AbstractNumberValidator.java
index e2dc0f1c..7d141d6f 100644
--- 
a/src/main/java/org/apache/commons/validator/routines/AbstractNumberValidator.java
+++ 
b/src/main/java/org/apache/commons/validator/routines/AbstractNumberValidator.java
@@ -154,7 +154,7 @@ public abstract class AbstractNumberValidator extends 
AbstractFormatValidator {
     protected Format getFormat(final String pattern, final Locale locale) {
 
         NumberFormat formatter;
-        final boolean usePattern = pattern != null && !pattern.isEmpty();
+        final boolean usePattern = !isEmpty(pattern);
         if (!usePattern) {
             formatter = (NumberFormat) getFormat(locale);
         } else if (locale == null) {
@@ -260,7 +260,7 @@ public abstract class AbstractNumberValidator extends 
AbstractFormatValidator {
      */
     protected Object parse(String value, final String pattern, final Locale 
locale) {
         value = value == null ? null : value.trim();
-        if (value == null || value.isEmpty()) {
+        if (isEmpty(value)) {
             return null;
         }
         final Format formatter = getFormat(pattern, locale);
diff --git 
a/src/main/java/org/apache/commons/validator/routines/AbstractValidator.java 
b/src/main/java/org/apache/commons/validator/routines/AbstractValidator.java
new file mode 100644
index 00000000..d2edf1c6
--- /dev/null
+++ b/src/main/java/org/apache/commons/validator/routines/AbstractValidator.java
@@ -0,0 +1,32 @@
+/*
+ * 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
+ *
+ *      http://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.commons.validator.routines;
+
+abstract class AbstractValidator {
+
+    /**
+     * Tests whether the given String is null or empty.
+     *
+     * @param code the string to test.
+     * @return whether the given String is null or empty.
+     */
+    boolean isEmpty(final String code) {
+        return code == null || code.isEmpty();
+    }
+
+}
diff --git 
a/src/main/java/org/apache/commons/validator/routines/CodeValidator.java 
b/src/main/java/org/apache/commons/validator/routines/CodeValidator.java
index 81dd877c..6b7e83d2 100644
--- a/src/main/java/org/apache/commons/validator/routines/CodeValidator.java
+++ b/src/main/java/org/apache/commons/validator/routines/CodeValidator.java
@@ -66,7 +66,7 @@ import 
org.apache.commons.validator.routines.checkdigit.CheckDigit;
  *
  * @since 1.4
  */
-public final class CodeValidator implements Serializable {
+public final class CodeValidator extends AbstractValidator implements 
Serializable {
 
     private static final long serialVersionUID = 446960910870938233L;
 
@@ -161,7 +161,7 @@ public final class CodeValidator implements Serializable {
      */
     public CodeValidator(final String regex, final int minLength, final int 
maxLength,
             final CheckDigit checkdigit) {
-        if (regex != null && !regex.isEmpty()) {
+        if (!isEmpty(regex)) {
             this.regexValidator = new RegexValidator(regex);
         } else {
             this.regexValidator = null;
@@ -253,16 +253,13 @@ public final class CodeValidator implements Serializable {
      * if invalid
      */
     public Object validate(final String input) {
-
         if (input == null) {
             return null;
         }
-
         String code = input.trim();
         if (code.isEmpty()) {
             return null;
         }
-
         // validate/reformat using regular expression
         if (regexValidator != null) {
             code = regexValidator.validate(code);
@@ -270,20 +267,16 @@ public final class CodeValidator implements Serializable {
                 return null;
             }
         }
-
         // check the length (must be done after validate as that can change 
the code)
         if (minLength >= 0 && code.length() < minLength ||
             maxLength >= 0 && code.length() > maxLength) {
             return null;
         }
-
         // validate the check digit
         if (checkdigit != null && !checkdigit.isValid(code)) {
             return null;
         }
-
         return code;
-
     }
 
 }
diff --git 
a/src/main/java/org/apache/commons/validator/routines/CreditCardValidator.java 
b/src/main/java/org/apache/commons/validator/routines/CreditCardValidator.java
index 49474d99..8faa68a2 100644
--- 
a/src/main/java/org/apache/commons/validator/routines/CreditCardValidator.java
+++ 
b/src/main/java/org/apache/commons/validator/routines/CreditCardValidator.java
@@ -80,7 +80,7 @@ import 
org.apache.commons.validator.routines.checkdigit.LuhnCheckDigit;
  *
  * @since 1.4
  */
-public class CreditCardValidator implements Serializable {
+public class CreditCardValidator extends AbstractValidator implements 
Serializable {
 
     /**
      * Class that represents a credit card range.
@@ -490,7 +490,7 @@ public class CreditCardValidator implements Serializable {
      * @return Whether the card number is valid.
      */
     public boolean isValid(final String card) {
-        if (card == null || card.isEmpty()) {
+        if (isEmpty(card)) {
             return false;
         }
         for (final CodeValidator cardType : cardTypes) {
@@ -508,7 +508,7 @@ public class CreditCardValidator implements Serializable {
      * if invalid.
      */
     public Object validate(final String card) {
-        if (card == null || card.isEmpty()) {
+        if (isEmpty(card)) {
             return null;
         }
         Object result = null;
diff --git 
a/src/main/java/org/apache/commons/validator/routines/DateValidator.java 
b/src/main/java/org/apache/commons/validator/routines/DateValidator.java
index d00ad34e..6c62b58a 100644
--- a/src/main/java/org/apache/commons/validator/routines/DateValidator.java
+++ b/src/main/java/org/apache/commons/validator/routines/DateValidator.java
@@ -217,7 +217,6 @@ public class DateValidator extends 
AbstractCalendarValidator {
      * @return The converted <code>Calendar</code>.
      */
     private Calendar getCalendar(final Date value, final TimeZone timeZone) {
-
         Calendar calendar;
         if (timeZone != null) {
             calendar = Calendar.getInstance(timeZone);
diff --git 
a/src/main/java/org/apache/commons/validator/routines/DoubleValidator.java 
b/src/main/java/org/apache/commons/validator/routines/DoubleValidator.java
index 46d1abaa..3b68ad4a 100644
--- a/src/main/java/org/apache/commons/validator/routines/DoubleValidator.java
+++ b/src/main/java/org/apache/commons/validator/routines/DoubleValidator.java
@@ -191,7 +191,6 @@ public class DoubleValidator extends 
AbstractNumberValidator {
      */
     @Override
     protected Object processParsedValue(final Object value, final Format 
formatter) {
-
         if (value instanceof Double) {
             return value;
         }
diff --git 
a/src/main/java/org/apache/commons/validator/routines/EmailValidator.java 
b/src/main/java/org/apache/commons/validator/routines/EmailValidator.java
index d370d080..ff0dc63e 100644
--- a/src/main/java/org/apache/commons/validator/routines/EmailValidator.java
+++ b/src/main/java/org/apache/commons/validator/routines/EmailValidator.java
@@ -171,25 +171,20 @@ public class EmailValidator implements Serializable {
         if (email == null) {
             return false;
         }
-
         if (email.endsWith(".")) { // check this first - it's cheap!
             return false;
         }
-
         // Check the whole email address structure
         final Matcher emailMatcher = EMAIL_PATTERN.matcher(email);
         if (!emailMatcher.matches()) {
             return false;
         }
-
         if (!isValidUser(emailMatcher.group(1))) {
             return false;
         }
-
         if (!isValidDomain(emailMatcher.group(2))) {
             return false;
         }
-
         return true;
     }
 
diff --git 
a/src/main/java/org/apache/commons/validator/routines/InetAddressValidator.java 
b/src/main/java/org/apache/commons/validator/routines/InetAddressValidator.java
index 3550a438..d81a992a 100644
--- 
a/src/main/java/org/apache/commons/validator/routines/InetAddressValidator.java
+++ 
b/src/main/java/org/apache/commons/validator/routines/InetAddressValidator.java
@@ -34,7 +34,7 @@ import java.util.regex.Pattern;
  *
  * @since 1.4
  */
-public class InetAddressValidator implements Serializable {
+public class InetAddressValidator extends AbstractValidator implements 
Serializable {
 
     private static final int MAX_BYTE = 128;
 
@@ -91,35 +91,27 @@ public class InetAddressValidator implements Serializable {
     public boolean isValidInet4Address(final String inet4Address) {
         // verify that address conforms to generic IPv4 format
         final String[] groups = ipv4Validator.match(inet4Address);
-
         if (groups == null) {
             return false;
         }
-
         // verify that address subgroups are legal
         for (final String ipSegment : groups) {
-            if (ipSegment == null || ipSegment.isEmpty()) {
+            if (isEmpty(ipSegment)) {
                 return false;
             }
-
             int iIpSegment = 0;
-
             try {
                 iIpSegment = Integer.parseInt(ipSegment);
             } catch (final NumberFormatException e) {
                 return false;
             }
-
             if (iIpSegment > IPV4_MAX_OCTET_VALUE) {
                 return false;
             }
-
             if (ipSegment.length() > 1 && ipSegment.startsWith("0")) {
                 return false;
             }
-
         }
-
         return true;
     }
 
@@ -183,7 +175,7 @@ public class InetAddressValidator implements Serializable {
         int emptyOctets = 0; // consecutive empty chunks
         for (int index = 0; index < octets.length; index++) {
             final String octet = octets[index];
-            if (octet.isEmpty()) {
+            if (isEmpty(octet)) {
                 emptyOctets++;
                 if (emptyOctets > 1) {
                     return false;
diff --git 
a/src/main/java/org/apache/commons/validator/routines/RegexValidator.java 
b/src/main/java/org/apache/commons/validator/routines/RegexValidator.java
index 7b623196..877c9fb9 100644
--- a/src/main/java/org/apache/commons/validator/routines/RegexValidator.java
+++ b/src/main/java/org/apache/commons/validator/routines/RegexValidator.java
@@ -135,10 +135,11 @@ public class RegexValidator implements Serializable {
         patterns = new Pattern[regexs.length];
         final int flags = caseSensitive ? 0 : Pattern.CASE_INSENSITIVE;
         for (int i = 0; i < regexs.length; i++) {
-            if (regexs[i] == null || regexs[i].isEmpty()) {
+            final String regex = regexs[i];
+            if (regex == null || regex.isEmpty()) {
                 throw new IllegalArgumentException("Regular expression[" + i + 
"] is missing");
             }
-            patterns[i] = Pattern.compile(regexs[i], flags);
+            patterns[i] = Pattern.compile(regex, flags);
         }
     }
 
diff --git 
a/src/main/java/org/apache/commons/validator/routines/UrlValidator.java 
b/src/main/java/org/apache/commons/validator/routines/UrlValidator.java
index 1312b64e..0ea68543 100644
--- a/src/main/java/org/apache/commons/validator/routines/UrlValidator.java
+++ b/src/main/java/org/apache/commons/validator/routines/UrlValidator.java
@@ -73,7 +73,7 @@ import java.util.regex.Pattern;
  *
  * @since 1.4
  */
-public class UrlValidator implements Serializable {
+public class UrlValidator extends AbstractValidator implements Serializable {
 
     private static final long serialVersionUID = 7557161713937335013L;
 
@@ -372,7 +372,7 @@ public class UrlValidator implements Serializable {
         }
 
         final String authority = uri.getRawAuthority();
-        if ("file".equals(scheme) && (authority == null || 
authority.isEmpty())) { // Special case - file: allows an empty authority
+        if ("file".equals(scheme) && isEmpty(authority)) { // Special case - 
file: allows an empty authority
             return true; // this is a local file - nothing more to do here
         }
         if ("file".equals(scheme) && authority != null && 
authority.contains(":")) {
@@ -445,7 +445,7 @@ public class UrlValidator implements Serializable {
                 }
             }
             final String port = authorityMatcher.group(PARSE_AUTHORITY_PORT);
-            if (port != null && !port.isEmpty()) {
+            if (!isEmpty(port)) {
                 try {
                     final int iPort = Integer.parseInt(port);
                     if (iPort < 0 || iPort > MAX_UNSIGNED_16_BIT_INT) {

Reply via email to