diff --git a/engine/src/main/java/org/hibernate/validator/internal/constraintvalidators/hv/kor/KorRRNValidator.java b/engine/src/main/java/org/hibernate/validator/internal/constraintvalidators/hv/kor/KorRRNValidator.java index 19ccf4bb7..e8ac274e9 100644 --- a/engine/src/main/java/org/hibernate/validator/internal/constraintvalidators/hv/kor/KorRRNValidator.java +++ b/engine/src/main/java/org/hibernate/validator/internal/constraintvalidators/hv/kor/KorRRNValidator.java @@ -22,7 +22,16 @@ */ public class KorRRNValidator implements ConstraintValidator { - private static final List GENDER_DIGIT = List.of( 1, 2, 3, 4 ); + // Gender digit in Korean Resident Registration Number (RRN): + // 1: Male, born 1900–1999 + // 2: Female, born 1900–1999 + // 3: Male, born 2000–2099 + // 4: Female, born 2000–2099 + // 5: Foreign male, born 1900–1999 + // 6: Foreign female, born 1900–1999 + // 7: Foreign male, born 2000–2099 + // 8: Foreign female, born 2000–2099 + private static final List GENDER_DIGIT = List.of(1, 2, 3, 4, 5, 6, 7, 8); // Check sum weight for ModUtil private static final int[] CHECK_SUM_WEIGHT = new int[] { 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2 }; // index of the digit representing the gender @@ -90,7 +99,7 @@ private static boolean isValidDate(final String rrn) { if ( month < 1 || month > 12 || day < 1 || day > 31 ) { return false; } - return day <= 31 && ( day <= 30 || ( month != 4 && month != 6 && month != 9 && month != 11 ) ) && ( day <= 29 || month != 2 ); + return (day <= 30 || month != 4 && month != 6 && month != 9 && month != 11) && (day <= 29 || month != 2); } private static boolean isValidLength(String rrn) { diff --git a/engine/src/test/java/org/hibernate/validator/test/internal/constraintvalidators/hv/kor/KorRRNValidatorNeverAttrTest.java b/engine/src/test/java/org/hibernate/validator/test/internal/constraintvalidators/hv/kor/KorRRNValidatorNeverAttrTest.java index e95e4fd43..8d037edf8 100644 --- a/engine/src/test/java/org/hibernate/validator/test/internal/constraintvalidators/hv/kor/KorRRNValidatorNeverAttrTest.java +++ b/engine/src/test/java/org/hibernate/validator/test/internal/constraintvalidators/hv/kor/KorRRNValidatorNeverAttrTest.java @@ -47,6 +47,14 @@ void testNeverAttr() { assertValidRRN( "750519-1404601" ); } + @Test + void testNeverForeignerGenderDigits() { + assertValidRRN( "850101-5000000" ); + assertValidRRN( "920202-6000000" ); + assertValidRRN( "010101-7000000" ); + assertValidRRN( "030303-8000000" ); + } + /** * The test succeeds without hyphen ('-') */