ISINValidator: Add all codes from ISO 3166-1 alpha-2 except unassigned
code elements
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 8a75397..652f669 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -66,7 +66,8 @@
<body>
<release version="1.9.0" date="YYYY-MM-DD" description="Maintenance and bug fix release.">
<!-- ADD -->
- <action type="update" dev="ggregory" due-to="ashoknan2, Gary Gregory">ISINValidator: Added 9 additional exception country code #129.</action>
+ <action type="update" dev="ggregory" due-to="ashoknan2, Gary Gregory">ISINValidator: Add 9 additional exception country code #129.</action>
+ <action type="update" dev="ggregory" due-to="Gary Gregory">ISINValidator: Add all codes from ISO 3166-1 alpha-2 except unassigned code elements.</action>
<!-- FIX -->
<action type="fix" issue="VALIDATOR-492" dev="ggregory" due-to="Tobias Wildgruber, Gary Gregory">ValidatorUtils.copyFastHashMap is broken.</action>
<!-- UPDATE -->
diff --git a/src/main/java/org/apache/commons/validator/routines/ISINValidator.java b/src/main/java/org/apache/commons/validator/routines/ISINValidator.java
index cc785c1..3ff30c3 100644
--- a/src/main/java/org/apache/commons/validator/routines/ISINValidator.java
+++ b/src/main/java/org/apache/commons/validator/routines/ISINValidator.java
@@ -60,19 +60,368 @@
private static final String [] CCODES = Locale.getISOCountries();
- private static final String [] SPECIALS = {
- "EZ", // http://www.anna-web.org/standards/isin-iso-6166/
- "XS", // https://www.isin.org/isin/
- "XA", // https://www.iso.org/obp/ui/#iso:pub:PUB500001:en
+ /**
+ * All codes from ISO 3166-1 alpha-2 except unassigned code elements.
+ *
+ * From https://www.iso.org/obp/ui/#iso:pub:PUB500001:en as of 2024-03-23.
+ */
+ private static final String[] SPECIALS = {
+ "AA",
+ "AC",
+ "AD",
+ "AE",
+ "AF",
+ "AG",
+ "AI",
+ "AL",
+ "AM",
+ "AN",
+ "AO",
+ "AP",
+ "AQ",
+ "AR",
+ "AS",
+ "AT",
+ "AU",
+ "AW",
+ "AX",
+ "AZ",
+ "BA",
+ "BB",
+ "BD",
+ "BE",
+ "BF",
+ "BG",
+ "BH",
+ "BI",
+ "BJ",
+ "BL",
+ "BM",
+ "BN",
+ "BO",
+ "BQ",
+ "BR",
+ "BS",
+ "BT",
+ "BU",
+ "BV",
+ "BW",
+ "BX",
+ "BY",
+ "BZ",
+ "CA",
+ "CC",
+ "CD",
+ "CF",
+ "CG",
+ "CH",
+ "CI",
+ "CK",
+ "CL",
+ "CM",
+ "CN",
+ "CO",
+ "CP",
+ "CQ",
+ "CR",
+ "CS",
+ "CT",
+ "CU",
+ "CV",
+ "CW",
+ "CX",
+ "CY",
+ "CZ",
+ "DD",
+ "DE",
+ "DG",
+ "DJ",
+ "DK",
+ "DM",
+ "DO",
+ "DY",
+ "DZ",
+ "EA",
+ "EC",
+ "EE",
+ "EF",
+ "EG",
+ "EH",
+ "EM",
+ "EP",
+ "ER",
+ "ES",
+ "ET",
+ "EU",
+ "EV",
+ "EW",
+ "EZ",
+ "FI",
+ "FJ",
+ "FK",
+ "FL",
+ "FM",
+ "FO",
+ "FQ",
+ "FR",
+ "FX",
+ "GA",
+ "GB",
+ "GC",
+ "GD",
+ "GE",
+ "GF",
+ "GG",
+ "GH",
+ "GI",
+ "GL",
+ "GM",
+ "GN",
+ "GP",
+ "GQ",
+ "GR",
+ "GS",
+ "GT",
+ "GU",
+ "GW",
+ "GY",
+ "HK",
+ "HM",
+ "HN",
+ "HR",
+ "HT",
+ "HU",
+ "HV",
+ "IB",
+ "IC",
+ "ID",
+ "IE",
+ "IL",
+ "IM",
+ "IN",
+ "IO",
+ "IQ",
+ "IR",
+ "IS",
+ "IT",
+ "JA",
+ "JE",
+ "JM",
+ "JO",
+ "JP",
+ "JT",
+ "KE",
+ "KG",
+ "KH",
+ "KI",
+ "KM",
+ "KN",
+ "KP",
+ "KR",
+ "KW",
+ "KY",
+ "KZ",
+ "LA",
+ "LB",
+ "LC",
+ "LF",
+ "LI",
+ "LK",
+ "LR",
+ "LS",
+ "LT",
+ "LU",
+ "LV",
+ "LY",
+ "MA",
+ "MC",
+ "MD",
+ "ME",
+ "MF",
+ "MG",
+ "MH",
+ "MI",
+ "MK",
+ "ML",
+ "MM",
+ "MN",
+ "MO",
+ "MP",
+ "MQ",
+ "MR",
+ "MS",
+ "MT",
+ "MU",
+ "MV",
+ "MW",
+ "MX",
+ "MY",
+ "MZ",
+ "NA",
+ "NC",
+ "NE",
+ "NF",
+ "NG",
+ "NH",
+ "NI",
+ "NL",
+ "NO",
+ "NP",
+ "NQ",
+ "NR",
+ "NT",
+ "NU",
+ "NZ",
+ "OA",
+ "OM",
+ "PA",
+ "PC",
+ "PE",
+ "PF",
+ "PG",
+ "PH",
+ "PI",
+ "PK",
+ "PL",
+ "PM",
+ "PN",
+ "PR",
+ "PS",
+ "PT",
+ "PU",
+ "PW",
+ "PY",
+ "PZ",
+ "QA",
+ "QM",
+ "QN",
+ "QO",
+ "QP",
+ "QQ",
+ "QR",
+ "QS",
+ "QT",
+ "QU",
+ "QV",
+ "QW",
+ "QX",
+ "QY",
+ "QZ",
+ "RA",
+ "RB",
+ "RC",
+ "RE",
+ "RH",
+ "RI",
+ "RL",
+ "RM",
+ "RN",
+ "RO",
+ "RP",
+ "RS",
+ "RU",
+ "RW",
+ "SA",
+ "SB",
+ "SC",
+ "SD",
+ "SE",
+ "SF",
+ "SG",
+ "SH",
+ "SI",
+ "SJ",
+ "SK",
+ "SL",
+ "SM",
+ "SN",
+ "SO",
+ "SR",
+ "SS",
+ "ST",
+ "SU",
+ "SV",
+ "SX",
+ "SY",
+ "SZ",
+ "TA",
+ "TC",
+ "TD",
+ "TF",
+ "TG",
+ "TH",
+ "TJ",
+ "TK",
+ "TL",
+ "TM",
+ "TN",
+ "TO",
+ "TP",
+ "TR",
+ "TT",
+ "TV",
+ "TW",
+ "TZ",
+ "UA",
+ "UG",
+ "UK",
+ "UM",
+ "UN",
+ "US",
+ "UY",
+ "UZ",
+ "VA",
+ "VC",
+ "VD",
+ "VE",
+ "VG",
+ "VI",
+ "VN",
+ "VU",
+ "WF",
+ "WG",
+ "WK",
+ "WL",
+ "WO",
+ "WS",
+ "WV",
+ "XA",
"XB",
"XC",
"XD",
+ "XE",
"XF",
- "QS",
- "QT",
- "QW",
- "EU"
- };
+ "XG",
+ "XH",
+ "XI",
+ "XJ",
+ "XK",
+ "XL",
+ "XM",
+ "XN",
+ "XO",
+ "XP",
+ "XQ",
+ "XR",
+ "XS",
+ "XT",
+ "XU",
+ "XV",
+ "XW",
+ "XX",
+ "XY",
+ "XZ",
+ "YD",
+ "YE",
+ "YT",
+ "YU",
+ "YV",
+ "ZA",
+ "ZM",
+ "ZR",
+ "ZW",
+ "ZZ",
+ };
static {
Arrays.sort(CCODES); // we cannot assume the codes are sorted
diff --git a/src/test/java/org/apache/commons/validator/routines/ISINValidatorTest.java b/src/test/java/org/apache/commons/validator/routines/ISINValidatorTest.java
index cd418da..74098f1 100644
--- a/src/test/java/org/apache/commons/validator/routines/ISINValidatorTest.java
+++ b/src/test/java/org/apache/commons/validator/routines/ISINValidatorTest.java
@@ -70,7 +70,7 @@
};
// Invalid codes if country checking is enabled
- private final String[] invalidFormatTrue = { "AA0000000006", // Invalid country code
+ private final String[] invalidFormatTrue = { "AB0000000006", // Invalid country code
};
@Test