You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by bs...@apache.org on 2007/11/03 01:19:53 UTC

svn commit: r591519 - /commons/proper/validator/trunk/src/main/java/org/apache/commons/validator/routines/CreditCardValidator.java

Author: bspeakmon
Date: Fri Nov  2 17:19:53 2007
New Revision: 591519

URL: http://svn.apache.org/viewvc?rev=591519&view=rev
Log:
- VALIDATOR-247: use routines.checkdigit.LuhnCheckDigit

Modified:
    commons/proper/validator/trunk/src/main/java/org/apache/commons/validator/routines/CreditCardValidator.java

Modified: commons/proper/validator/trunk/src/main/java/org/apache/commons/validator/routines/CreditCardValidator.java
URL: http://svn.apache.org/viewvc/commons/proper/validator/trunk/src/main/java/org/apache/commons/validator/routines/CreditCardValidator.java?rev=591519&r1=591518&r2=591519&view=diff
==============================================================================
--- commons/proper/validator/trunk/src/main/java/org/apache/commons/validator/routines/CreditCardValidator.java (original)
+++ commons/proper/validator/trunk/src/main/java/org/apache/commons/validator/routines/CreditCardValidator.java Fri Nov  2 17:19:53 2007
@@ -16,12 +16,14 @@
  */
 package org.apache.commons.validator.routines;
 
+import org.apache.commons.validator.routines.checkdigit.CheckDigit;
+import org.apache.commons.validator.routines.checkdigit.LuhnCheckDigit;
+import org.apache.commons.validator.util.Flags;
+
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Iterator;
 
-import org.apache.commons.validator.util.Flags;
-
 /**
  * <p>Perform credit card validations.</p>
  * <p>
@@ -53,7 +55,6 @@
      * v.addAllowedCardType(customType);
      * v.isValid(aCardNumber);
      * </pre>
-     * @since Validator 1.1.2
      */
     public static final int NONE = 0;
 
@@ -83,6 +84,11 @@
     private Collection cardTypes = new ArrayList();
 
     /**
+     * Luhn checkdigit validator for the card numbers.
+     */
+    private static final CheckDigit LUHN_VALIDATOR = LuhnCheckDigit.INSTANCE;
+
+    /**
      * Create a new CreditCardValidator with default options.
      */
     public CreditCardValidator() {
@@ -126,7 +132,7 @@
             return false;
         }
 
-        if (!this.luhnCheck(card)) {
+        if (!LUHN_VALIDATOR.isValid(card)) {
             return false;
         }
         
@@ -149,36 +155,6 @@
      */
     public void addAllowedCardType(CreditCardType type){
         this.cardTypes.add(type);
-    }
-
-    /**
-     * Checks for a valid credit card number.
-     * @param cardNumber Credit Card Number.
-     * @return Whether the card number passes the luhnCheck.
-     */
-    protected boolean luhnCheck(String cardNumber) {
-        // number must be validated as 0..9 numeric first!!
-        int digits = cardNumber.length();
-        int oddOrEven = digits & 1;
-        long sum = 0;
-        for (int count = 0; count < digits; count++) {
-            int digit = 0;
-            try {
-                digit = Integer.parseInt(cardNumber.charAt(count) + "");
-            } catch(NumberFormatException e) {
-                return false;
-            }
-
-            if (((count & 1) ^ oddOrEven) == 0) { // not
-                digit *= 2;
-                if (digit > 9) {
-                    digit -= 9;
-                }
-            }
-            sum += digit;
-        }
-
-        return (sum == 0) ? false : (sum % 10 == 0);
     }
     
     /**