You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by se...@apache.org on 2016/04/15 01:24:48 UTC
svn commit: r1739207 - in /commons/proper/validator/trunk/src:
changes/changes.xml
main/java/org/apache/commons/validator/routines/CreditCardValidator.java
test/java/org/apache/commons/validator/routines/CreditCardValidatorTest.java
Author: sebb
Date: Thu Apr 14 23:24:48 2016
New Revision: 1739207
URL: http://svn.apache.org/viewvc?rev=1739207&view=rev
Log:
VALIDATOR-392 - Mastercard Series 2 BIN ranges (active from October 2016)
Modified:
commons/proper/validator/trunk/src/changes/changes.xml
commons/proper/validator/trunk/src/main/java/org/apache/commons/validator/routines/CreditCardValidator.java
commons/proper/validator/trunk/src/test/java/org/apache/commons/validator/routines/CreditCardValidatorTest.java
Modified: commons/proper/validator/trunk/src/changes/changes.xml
URL: http://svn.apache.org/viewvc/commons/proper/validator/trunk/src/changes/changes.xml?rev=1739207&r1=1739206&r2=1739207&view=diff
==============================================================================
--- commons/proper/validator/trunk/src/changes/changes.xml (original)
+++ commons/proper/validator/trunk/src/changes/changes.xml Thu Apr 14 23:24:48 2016
@@ -90,6 +90,10 @@ The dependencies for Validator have not
For the current list of dependencies, please see
http://commons.apache.org/validator/dependencies.html
">
+ <action issue="VALIDATOR-392" type="fix" dev="sebb" due-to="Tim Deboer">
+ Mastercard Series 2 BIN ranges (active from October 2016) added to CreditCardValidator
+ To disable the new ranges, use option MASTERCARD_PRE_OCT2016 or validator MASTERCARD_VALIDATOR_PRE_OCT2016
+ </action>
<action issue="VALIDATOR-386" type="fix" dev="sebb" due-to="Auke van Leeuwen">
org.apache.commons.validator.routines.DomainValidator.ArrayType is not public
</action>
@@ -103,7 +107,7 @@ http://commons.apache.org/validator/depe
DomainValidator - allow access to internal arrays
</action>
<action type="update" dev="sebb">
- Updated to TLD list Version 2016011900, Last Updated Tue Jan 19 07:07:02 2016 UTC
+ Updated to TLD list Version 2016041301, Last Updated Thu Apr 14 07:07:01 2016 UTC
</action>
</release>
<release version="1.5.0" date="2015-11-24" description="
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=1739207&r1=1739206&r2=1739207&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 Thu Apr 14 23:24:48 2016
@@ -103,6 +103,13 @@ public class CreditCardValidator impleme
*/
public static final long VPAY = 1 << 5; // CHECKSTYLE IGNORE MagicNumber
+ /**
+ * Option specifying that Mastercard cards (pre Oct 2016 only) are allowed.
+ * @deprecated for use until Oct 2016 only
+ */
+ @Deprecated
+ public static final long MASTERCARD_PRE_OCT2016 = 1 << 6; // CHECKSTYLE IGNORE MagicNumber
+
/**
* The CreditCardTypes that are allowed to pass validation.
@@ -126,8 +133,28 @@ public class CreditCardValidator impleme
/** Discover Card Validator */
public static final CodeValidator DISCOVER_VALIDATOR = new CodeValidator(DISCOVER_REGEX, LUHN_VALIDATOR);
+ /** Mastercard regular expressions */
+ private static final RegexValidator MASTERCARD_REGEX = new RegexValidator(
+ new String[] {
+ "^(5[1-5]\\d{14})$", // 51 - 55 (pre Oct 2016)
+ // valid from October 2016
+ "^(2221\\d{12})$", // 222100 - 222199
+ "^(222[2-9]\\d{12})$",// 222200 - 222999
+ "^(22[3-9]\\d{13})$", // 223000 - 229999
+ "^(2[3-6]\\d{14})$", // 230000 - 269999
+ "^(27[01]\\d{13})$", // 270000 - 271999
+ "^(2720\\d{12})$", // 272000 - 272099
+ });
+
/** Mastercard Card Validator */
- public static final CodeValidator MASTERCARD_VALIDATOR = new CodeValidator("^(5[1-5]\\d{14})$", LUHN_VALIDATOR);
+ public static final CodeValidator MASTERCARD_VALIDATOR = new CodeValidator(MASTERCARD_REGEX, LUHN_VALIDATOR);
+
+ /**
+ * Mastercard Card Validator (pre Oct 2016)
+ * @deprecated for use until Oct 2016 only
+ */
+ @Deprecated
+ public static final CodeValidator MASTERCARD_VALIDATOR_PRE_OCT2016 = new CodeValidator("^(5[1-5]\\d{14})$", LUHN_VALIDATOR);
/** Visa Card Validator */
public static final CodeValidator VISA_VALIDATOR = new CodeValidator("^(4)(\\d{12}|\\d{15})$", LUHN_VALIDATOR);
@@ -139,6 +166,8 @@ public class CreditCardValidator impleme
/**
* Create a new CreditCardValidator with default options.
+ * The default options are:
+ * AMEX, VISA, MASTERCARD and DISCOVER
*/
public CreditCardValidator() {
this(AMEX + VISA + MASTERCARD + DISCOVER);
@@ -169,6 +198,10 @@ public class CreditCardValidator impleme
this.cardTypes.add(MASTERCARD_VALIDATOR);
}
+ if (isOn(options, MASTERCARD_PRE_OCT2016)) {
+ this.cardTypes.add(MASTERCARD_VALIDATOR_PRE_OCT2016);
+ }
+
if (isOn(options, DISCOVER)) {
this.cardTypes.add(DISCOVER_VALIDATOR);
}
Modified: commons/proper/validator/trunk/src/test/java/org/apache/commons/validator/routines/CreditCardValidatorTest.java
URL: http://svn.apache.org/viewvc/commons/proper/validator/trunk/src/test/java/org/apache/commons/validator/routines/CreditCardValidatorTest.java?rev=1739207&r1=1739206&r2=1739207&view=diff
==============================================================================
--- commons/proper/validator/trunk/src/test/java/org/apache/commons/validator/routines/CreditCardValidatorTest.java (original)
+++ commons/proper/validator/trunk/src/test/java/org/apache/commons/validator/routines/CreditCardValidatorTest.java Thu Apr 14 23:24:48 2016
@@ -384,6 +384,15 @@ public class CreditCardValidatorTest ext
assertTrue("Valid-C", validator.isValid("5301250070000191"));
assertTrue("Valid-D", validator.isValid("5123456789012346"));
assertTrue("Valid-E", validator.isValid("5555555555554444"));
+
+ RegexValidator rev = validator.getRegexValidator();
+ final String PAD = "0000000000";
+ assertFalse("222099",rev.isValid("222099"+PAD));
+ for(int i=222100; i <= 272099; i++) {
+ String j = Integer.toString(i)+PAD;
+ assertTrue(j, rev.isValid(j));
+ }
+ assertFalse("272100",rev.isValid("272100"+PAD));
}
/**