Author: niallp
Date: Tue Nov 13 21:46:28 2007
New Revision: 594778

URL: http://svn.apache.org/viewvc?rev=594778&view=rev
Log:
VALIDATOR-247 - bit more refactoring:
- remove unnecessary Iterator creation (switch from Collection to List)
- make DISCOVER_REGEX final
- remove dependency on o.a.c.v.Flags

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=594778&r1=594777&r2=594778&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
 Tue Nov 13 21:46:28 2007
@@ -18,11 +18,9 @@
 
 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.io.Serializable;
+import java.util.List;
 import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Iterator;
 
 /**
  * <p>Perform credit card validations.</p>
@@ -86,7 +84,7 @@
     /**
      * The CreditCardTypes that are allowed to pass validation.
      */
-    private Collection cardTypes = new ArrayList();
+    private final List cardTypes = new ArrayList();
 
     /**
      * Luhn checkdigit validator for the card numbers.
@@ -100,7 +98,7 @@
     public static final CodeValidator DINERS_VALIDATOR = new 
CodeValidator("^(30[0-5]\\d{11}|36\\d{12})$", LUHN_VALIDATOR);
 
     /** Discover Card regular expressions */
-    private static RegexValidator DISCOVER_REGEX = new RegexValidator(new 
String[] {"^(6011\\d{12})$", "^(65\\d{14})$"});
+    private static final RegexValidator DISCOVER_REGEX = new 
RegexValidator(new String[] {"^(6011\\d{12})$", "^(65\\d{14})$"});
 
     /** Discover Card Validator */
     public static final CodeValidator DISCOVER_VALIDATOR = new 
CodeValidator(DISCOVER_REGEX, LUHN_VALIDATOR);
@@ -127,24 +125,23 @@
     public CreditCardValidator(int options) {
         super();
 
-        Flags f = new Flags(options);
-        if (f.isOn(VISA)) {
+        if (isOn(options, VISA)) {
             this.cardTypes.add(VISA_VALIDATOR);
         }
 
-        if (f.isOn(AMEX)) {
+        if (isOn(options, AMEX)) {
             this.cardTypes.add(AMEX_VALIDATOR);
         }
 
-        if (f.isOn(MASTERCARD)) {
+        if (isOn(options, MASTERCARD)) {
             this.cardTypes.add(MASTERCARD_VALIDATOR);
         }
 
-        if (f.isOn(DISCOVER)) {
+        if (isOn(options, DISCOVER)) {
             this.cardTypes.add(DISCOVER_VALIDATOR);
         }
 
-        if (f.isOn(DINERS)) {
+        if (isOn(options, DINERS)) {
             this.cardTypes.add(DINERS_VALIDATOR);
         }
     }
@@ -171,9 +168,8 @@
         if (card == null || card.length() == 0) {
             return false;
         }
-        Iterator types = this.cardTypes.iterator();
-        while (types.hasNext()) {
-            CodeValidator type = (CodeValidator)types.next();
+        for (int i = 0; i < cardTypes.size(); i++) {
+            CodeValidator type = (CodeValidator)cardTypes.get(i);
             if (type.isValid(card)) {
                 return true;
             }
@@ -192,9 +188,8 @@
             return null;
         }
         Object result = null;
-        Iterator types = this.cardTypes.iterator();
-        while (types.hasNext()) {
-            CodeValidator type = (CodeValidator)types.next();
+        for (int i = 0; i < cardTypes.size(); i++) {
+            CodeValidator type = (CodeValidator)cardTypes.get(i);
             result = type.validate(card);
             if (result != null) {
                 return result ;
@@ -202,6 +197,18 @@
         }
         return null;
 
+    }
+    /**
+     * Tests whether the given flag is on.  If the flag is not a power of 2 
+     * (ie. 3) this tests whether the combination of flags is on.
+     *
+     * @param options The options specified.
+     * @param flag Flag value to check.
+     *
+     * @return whether the specified flag value is on.
+     */
+    private boolean isOn(int options, int flag) {
+        return (options & flag) > 0;
     }
 
 }


Reply via email to