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 8eb7f63bbd4c657ffb76a54e832d6e65bd11ec74
Author: Gary Gregory <[email protected]>
AuthorDate: Sun May 5 15:18:53 2024 -0400

    Refactor internals for duplicate code
---
 .../apache/commons/validator/GenericValidator.java |  6 ++--
 .../routines/AbstractCalendarValidator.java        |  7 +++--
 .../routines/AbstractFormatValidator.java          |  2 +-
 .../routines/AbstractNumberValidator.java          |  7 +++--
 .../validator/routines/AbstractValidator.java      | 32 ----------------------
 .../commons/validator/routines/CodeValidator.java  |  5 ++--
 .../validator/routines/CreditCardValidator.java    |  7 +++--
 .../validator/routines/InetAddressValidator.java   |  8 ++++--
 .../commons/validator/routines/UrlValidator.java   |  8 ++++--
 .../routines/checkdigit/AbstractCheckDigit.java    | 12 +-------
 .../routines/checkdigit/ISBNCheckDigit.java        |  4 ++-
 .../routines/checkdigit/ModulusCheckDigit.java     |  6 ++--
 .../routines/checkdigit/ModulusTenCheckDigit.java  |  3 +-
 .../routines/checkdigit/VerhoeffCheckDigit.java    |  6 ++--
 14 files changed, 45 insertions(+), 68 deletions(-)

diff --git a/src/main/java/org/apache/commons/validator/GenericValidator.java 
b/src/main/java/org/apache/commons/validator/GenericValidator.java
index 6589bfef..814537fe 100644
--- a/src/main/java/org/apache/commons/validator/GenericValidator.java
+++ b/src/main/java/org/apache/commons/validator/GenericValidator.java
@@ -40,8 +40,7 @@ public class GenericValidator implements Serializable {
     /**
      * CreditCardValidator used in wrapper method.
      */
-    private static final CreditCardValidator CREDIT_CARD_VALIDATOR =
-        new CreditCardValidator();
+    private static final CreditCardValidator CREDIT_CARD_VALIDATOR = new 
CreditCardValidator();
 
     /**
      * Calculate an adjustment amount for line endings.
@@ -74,7 +73,8 @@ public class GenericValidator implements Serializable {
      * @return true if blank or null.
      */
     public static boolean isBlankOrNull(final String value) {
-        return value == null || value.trim().isEmpty();
+        // Don't trim is already empty.
+        return value == null || value.isEmpty() || value.trim().isEmpty();
     }
 
     /**
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 ee1404d8..cc0c9ea4 100644
--- 
a/src/main/java/org/apache/commons/validator/routines/AbstractCalendarValidator.java
+++ 
b/src/main/java/org/apache/commons/validator/routines/AbstractCalendarValidator.java
@@ -24,6 +24,8 @@ import java.util.Calendar;
 import java.util.Locale;
 import java.util.TimeZone;
 
+import org.apache.commons.validator.GenericValidator;
+
 /**
  * <p>Abstract class for Date/Time/Calendar validation.</p>
  *
@@ -367,7 +369,7 @@ public abstract class AbstractCalendarValidator extends 
AbstractFormatValidator
     @Override
     protected Format getFormat(final String pattern, final Locale locale) {
         DateFormat formatter;
-        final boolean usePattern = !isEmpty(pattern);
+        final boolean usePattern = !GenericValidator.isBlankOrNull(pattern);
         if (!usePattern) {
             formatter = (DateFormat) getFormat(locale);
         } else if (locale == null) {
@@ -406,7 +408,8 @@ public abstract class AbstractCalendarValidator extends 
AbstractFormatValidator
      */
     protected Object parse(String value, final String pattern, final Locale 
locale, final TimeZone timeZone) {
         value = value == null ? null : value.trim();
-        if (isEmpty(value)) {
+        final String value1 = value;
+        if (GenericValidator.isBlankOrNull(value1)) {
             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 62a98584..661c90f2 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 extends AbstractValidator 
implements Serializable {
+public abstract class AbstractFormatValidator 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 7d141d6f..f50cad07 100644
--- 
a/src/main/java/org/apache/commons/validator/routines/AbstractNumberValidator.java
+++ 
b/src/main/java/org/apache/commons/validator/routines/AbstractNumberValidator.java
@@ -22,6 +22,8 @@ import java.text.Format;
 import java.text.NumberFormat;
 import java.util.Locale;
 
+import org.apache.commons.validator.GenericValidator;
+
 /**
  * <p>Abstract class for Number Validation.</p>
  *
@@ -154,7 +156,7 @@ public abstract class AbstractNumberValidator extends 
AbstractFormatValidator {
     protected Format getFormat(final String pattern, final Locale locale) {
 
         NumberFormat formatter;
-        final boolean usePattern = !isEmpty(pattern);
+        final boolean usePattern = !GenericValidator.isBlankOrNull(pattern);
         if (!usePattern) {
             formatter = (NumberFormat) getFormat(locale);
         } else if (locale == null) {
@@ -260,7 +262,8 @@ public abstract class AbstractNumberValidator extends 
AbstractFormatValidator {
      */
     protected Object parse(String value, final String pattern, final Locale 
locale) {
         value = value == null ? null : value.trim();
-        if (isEmpty(value)) {
+        final String value1 = value;
+        if (GenericValidator.isBlankOrNull(value1)) {
             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
deleted file mode 100644
index d2edf1c6..00000000
--- a/src/main/java/org/apache/commons/validator/routines/AbstractValidator.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * 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 6b7e83d2..82bc35e1 100644
--- a/src/main/java/org/apache/commons/validator/routines/CodeValidator.java
+++ b/src/main/java/org/apache/commons/validator/routines/CodeValidator.java
@@ -18,6 +18,7 @@ package org.apache.commons.validator.routines;
 
 import java.io.Serializable;
 
+import org.apache.commons.validator.GenericValidator;
 import org.apache.commons.validator.routines.checkdigit.CheckDigit;
 
 /**
@@ -66,7 +67,7 @@ import 
org.apache.commons.validator.routines.checkdigit.CheckDigit;
  *
  * @since 1.4
  */
-public final class CodeValidator extends AbstractValidator implements 
Serializable {
+public final class CodeValidator implements Serializable {
 
     private static final long serialVersionUID = 446960910870938233L;
 
@@ -161,7 +162,7 @@ public final class CodeValidator extends AbstractValidator 
implements Serializab
      */
     public CodeValidator(final String regex, final int minLength, final int 
maxLength,
             final CheckDigit checkdigit) {
-        if (!isEmpty(regex)) {
+        if (!GenericValidator.isBlankOrNull(regex)) {
             this.regexValidator = new RegexValidator(regex);
         } else {
             this.regexValidator = null;
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 8faa68a2..bbe1e31e 100644
--- 
a/src/main/java/org/apache/commons/validator/routines/CreditCardValidator.java
+++ 
b/src/main/java/org/apache/commons/validator/routines/CreditCardValidator.java
@@ -21,6 +21,7 @@ import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
 
+import org.apache.commons.validator.GenericValidator;
 import org.apache.commons.validator.routines.checkdigit.CheckDigit;
 import org.apache.commons.validator.routines.checkdigit.LuhnCheckDigit;
 
@@ -80,7 +81,7 @@ import 
org.apache.commons.validator.routines.checkdigit.LuhnCheckDigit;
  *
  * @since 1.4
  */
-public class CreditCardValidator extends AbstractValidator implements 
Serializable {
+public class CreditCardValidator implements Serializable {
 
     /**
      * Class that represents a credit card range.
@@ -490,7 +491,7 @@ public class CreditCardValidator extends AbstractValidator 
implements Serializab
      * @return Whether the card number is valid.
      */
     public boolean isValid(final String card) {
-        if (isEmpty(card)) {
+        if (GenericValidator.isBlankOrNull(card)) {
             return false;
         }
         for (final CodeValidator cardType : cardTypes) {
@@ -508,7 +509,7 @@ public class CreditCardValidator extends AbstractValidator 
implements Serializab
      * if invalid.
      */
     public Object validate(final String card) {
-        if (isEmpty(card)) {
+        if (GenericValidator.isBlankOrNull(card)) {
             return null;
         }
         Object result = null;
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 d81a992a..05f27788 100644
--- 
a/src/main/java/org/apache/commons/validator/routines/InetAddressValidator.java
+++ 
b/src/main/java/org/apache/commons/validator/routines/InetAddressValidator.java
@@ -23,6 +23,8 @@ import java.util.Arrays;
 import java.util.List;
 import java.util.regex.Pattern;
 
+import org.apache.commons.validator.GenericValidator;
+
 /**
  * <p><b>InetAddress</b> validation and conversion routines 
(<code>java.net.InetAddress</code>).</p>
  *
@@ -34,7 +36,7 @@ import java.util.regex.Pattern;
  *
  * @since 1.4
  */
-public class InetAddressValidator extends AbstractValidator implements 
Serializable {
+public class InetAddressValidator implements Serializable {
 
     private static final int MAX_BYTE = 128;
 
@@ -96,7 +98,7 @@ public class InetAddressValidator extends AbstractValidator 
implements Serializa
         }
         // verify that address subgroups are legal
         for (final String ipSegment : groups) {
-            if (isEmpty(ipSegment)) {
+            if (GenericValidator.isBlankOrNull(ipSegment)) {
                 return false;
             }
             int iIpSegment = 0;
@@ -175,7 +177,7 @@ public class InetAddressValidator extends AbstractValidator 
implements Serializa
         int emptyOctets = 0; // consecutive empty chunks
         for (int index = 0; index < octets.length; index++) {
             final String octet = octets[index];
-            if (isEmpty(octet)) {
+            if (GenericValidator.isBlankOrNull(octet)) {
                 emptyOctets++;
                 if (emptyOctets > 1) {
                     return false;
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 0ea68543..03c12c6f 100644
--- a/src/main/java/org/apache/commons/validator/routines/UrlValidator.java
+++ b/src/main/java/org/apache/commons/validator/routines/UrlValidator.java
@@ -26,6 +26,8 @@ import java.util.Set;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
+import org.apache.commons.validator.GenericValidator;
+
 /**
  * <p><b>URL Validation</b> routines.</p>
  * Behavior of validation is modified by passing in options:
@@ -73,7 +75,7 @@ import java.util.regex.Pattern;
  *
  * @since 1.4
  */
-public class UrlValidator extends AbstractValidator implements Serializable {
+public class UrlValidator implements Serializable {
 
     private static final long serialVersionUID = 7557161713937335013L;
 
@@ -372,7 +374,7 @@ public class UrlValidator extends AbstractValidator 
implements Serializable {
         }
 
         final String authority = uri.getRawAuthority();
-        if ("file".equals(scheme) && isEmpty(authority)) { // Special case - 
file: allows an empty authority
+        if ("file".equals(scheme) && 
GenericValidator.isBlankOrNull(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 +447,7 @@ public class UrlValidator extends AbstractValidator 
implements Serializable {
                 }
             }
             final String port = authorityMatcher.group(PARSE_AUTHORITY_PORT);
-            if (!isEmpty(port)) {
+            if (!GenericValidator.isBlankOrNull(port)) {
                 try {
                     final int iPort = Integer.parseInt(port);
                     if (iPort < 0 || iPort > MAX_UNSIGNED_16_BIT_INT) {
diff --git 
a/src/main/java/org/apache/commons/validator/routines/checkdigit/AbstractCheckDigit.java
 
b/src/main/java/org/apache/commons/validator/routines/checkdigit/AbstractCheckDigit.java
index 2e5b65ec..da69e983 100644
--- 
a/src/main/java/org/apache/commons/validator/routines/checkdigit/AbstractCheckDigit.java
+++ 
b/src/main/java/org/apache/commons/validator/routines/checkdigit/AbstractCheckDigit.java
@@ -21,15 +21,5 @@ package org.apache.commons.validator.routines.checkdigit;
  * Abstracts CheckDigit.
  */
 abstract class AbstractCheckDigit implements CheckDigit {
-
-    /**
-     * 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();
-    }
-
+    // Empty
 }
diff --git 
a/src/main/java/org/apache/commons/validator/routines/checkdigit/ISBNCheckDigit.java
 
b/src/main/java/org/apache/commons/validator/routines/checkdigit/ISBNCheckDigit.java
index d77ea94c..352dba4b 100644
--- 
a/src/main/java/org/apache/commons/validator/routines/checkdigit/ISBNCheckDigit.java
+++ 
b/src/main/java/org/apache/commons/validator/routines/checkdigit/ISBNCheckDigit.java
@@ -18,6 +18,8 @@ package org.apache.commons.validator.routines.checkdigit;
 
 import java.io.Serializable;
 
+import org.apache.commons.validator.GenericValidator;
+
 /**
  * Combined <b>ISBN-10</b> / <b>ISBN-13</b> Check Digit calculation/validation.
  * <p>
@@ -64,7 +66,7 @@ public final class ISBNCheckDigit extends AbstractCheckDigit 
implements Serializ
      */
     @Override
     public String calculate(final String code) throws CheckDigitException {
-        if (isEmpty(code)) {
+        if (GenericValidator.isBlankOrNull(code)) {
             throw new CheckDigitException("ISBN Code is missing");
         }
         if (code.length() == 9) { // CHECKSTYLE IGNORE MagicNumber
diff --git 
a/src/main/java/org/apache/commons/validator/routines/checkdigit/ModulusCheckDigit.java
 
b/src/main/java/org/apache/commons/validator/routines/checkdigit/ModulusCheckDigit.java
index 22a95946..90df2544 100644
--- 
a/src/main/java/org/apache/commons/validator/routines/checkdigit/ModulusCheckDigit.java
+++ 
b/src/main/java/org/apache/commons/validator/routines/checkdigit/ModulusCheckDigit.java
@@ -18,6 +18,8 @@ package org.apache.commons.validator.routines.checkdigit;
 
 import java.io.Serializable;
 
+import org.apache.commons.validator.GenericValidator;
+
 /**
  * Abstract <b>Modulus</b> Check digit calculation/validation.
  * <p>
@@ -83,7 +85,7 @@ public abstract class ModulusCheckDigit extends 
AbstractCheckDigit implements Se
      */
     @Override
     public String calculate(final String code) throws CheckDigitException {
-        if (isEmpty(code)) {
+        if (GenericValidator.isBlankOrNull(code)) {
             throw new CheckDigitException("Code is missing");
         }
         final int modulusResult = calculateModulus(code, false);
@@ -133,7 +135,7 @@ public abstract class ModulusCheckDigit extends 
AbstractCheckDigit implements Se
      */
     @Override
     public boolean isValid(final String code) {
-        if (isEmpty(code)) {
+        if (GenericValidator.isBlankOrNull(code)) {
             return false;
         }
         try {
diff --git 
a/src/main/java/org/apache/commons/validator/routines/checkdigit/ModulusTenCheckDigit.java
 
b/src/main/java/org/apache/commons/validator/routines/checkdigit/ModulusTenCheckDigit.java
index 958ae3ff..3ca056cd 100644
--- 
a/src/main/java/org/apache/commons/validator/routines/checkdigit/ModulusTenCheckDigit.java
+++ 
b/src/main/java/org/apache/commons/validator/routines/checkdigit/ModulusTenCheckDigit.java
@@ -18,6 +18,7 @@ package org.apache.commons.validator.routines.checkdigit;
 
 import java.util.Arrays;
 
+import org.apache.commons.validator.GenericValidator;
 import org.apache.commons.validator.routines.CodeValidator;
 
 /**
@@ -182,7 +183,7 @@ public final class ModulusTenCheckDigit extends 
ModulusCheckDigit {
      */
     @Override
     public boolean isValid(final String code) {
-        if (isEmpty(code)) {
+        if (GenericValidator.isBlankOrNull(code)) {
             return false;
         }
         if (!Character.isDigit(code.charAt(code.length() - 1))) {
diff --git 
a/src/main/java/org/apache/commons/validator/routines/checkdigit/VerhoeffCheckDigit.java
 
b/src/main/java/org/apache/commons/validator/routines/checkdigit/VerhoeffCheckDigit.java
index 580813da..4df215b9 100644
--- 
a/src/main/java/org/apache/commons/validator/routines/checkdigit/VerhoeffCheckDigit.java
+++ 
b/src/main/java/org/apache/commons/validator/routines/checkdigit/VerhoeffCheckDigit.java
@@ -18,6 +18,8 @@ package org.apache.commons.validator.routines.checkdigit;
 
 import java.io.Serializable;
 
+import org.apache.commons.validator.GenericValidator;
+
 /**
  * <b>Verhoeff</b> (Dihedral) Check Digit calculation/validation.
  * <p>
@@ -74,7 +76,7 @@ public final class VerhoeffCheckDigit extends 
AbstractCheckDigit implements Seri
      */
     @Override
     public String calculate(final String code) throws CheckDigitException {
-        if (isEmpty(code)) {
+        if (GenericValidator.isBlankOrNull(code)) {
             throw new CheckDigitException("Code is missing");
         }
         final int checksum = calculateChecksum(code, false);
@@ -113,7 +115,7 @@ public final class VerhoeffCheckDigit extends 
AbstractCheckDigit implements Seri
      */
     @Override
     public boolean isValid(final String code) {
-        if (isEmpty(code)) {
+        if (GenericValidator.isBlankOrNull(code)) {
             return false;
         }
         try {

Reply via email to