diff --git a/java/libphonenumber/src/com/google/i18n/phonenumbers/PhoneNumberUtil.java b/java/libphonenumber/src/com/google/i18n/phonenumbers/PhoneNumberUtil.java index b6625abf0..1f996f2c2 100644 --- a/java/libphonenumber/src/com/google/i18n/phonenumbers/PhoneNumberUtil.java +++ b/java/libphonenumber/src/com/google/i18n/phonenumbers/PhoneNumberUtil.java @@ -1981,9 +1981,7 @@ public class PhoneNumberUtil { } private PhoneNumberType getNumberTypeHelper(String nationalNumber, PhoneMetadata metadata) { - PhoneNumberDesc generalNumberDesc = metadata.getGeneralDesc(); - if (!generalNumberDesc.hasNationalNumberPattern() || - !isNumberMatchingDesc(nationalNumber, generalNumberDesc)) { + if (!isNumberMatchingDesc(nationalNumber, metadata.getGeneralDesc())) { return PhoneNumberType.UNKNOWN; } @@ -2114,16 +2112,7 @@ public class PhoneNumberUtil { // match that of the region code. return false; } - PhoneNumberDesc generalNumDesc = metadata.getGeneralDesc(); String nationalSignificantNumber = getNationalSignificantNumber(number); - - // For regions where we don't have metadata for PhoneNumberDesc, we treat any number passed in - // as a valid number if its national significant number is between the minimum and maximum - // lengths defined by ITU for a national significant number. - if (!generalNumDesc.hasNationalNumberPattern()) { - int numberLength = nationalSignificantNumber.length(); - return numberLength > MIN_LENGTH_FOR_NSN && numberLength <= MAX_LENGTH_FOR_NSN; - } return getNumberTypeHelper(nationalSignificantNumber, metadata) != PhoneNumberType.UNKNOWN; } @@ -2382,18 +2371,6 @@ public class PhoneNumberUtil { // Metadata cannot be null because the country calling code is valid. PhoneMetadata metadata = getMetadataForRegionOrCallingCode(countryCode, regionCode); PhoneNumberDesc generalNumDesc = metadata.getGeneralDesc(); - // Handling case of numbers with no metadata. - if (!generalNumDesc.hasNationalNumberPattern()) { - logger.log(Level.FINER, "Checking if number is possible with incomplete metadata."); - int numberLength = nationalNumber.length(); - if (numberLength < MIN_LENGTH_FOR_NSN) { - return ValidationResult.TOO_SHORT; - } else if (numberLength > MAX_LENGTH_FOR_NSN) { - return ValidationResult.TOO_LONG; - } else { - return ValidationResult.IS_POSSIBLE; - } - } Pattern possibleNumberPattern = regexCache.getPatternForRegex(generalNumDesc.getPossibleNumberPattern()); return testNumberLengthAgainstPattern(possibleNumberPattern, nationalNumber); diff --git a/java/libphonenumber/test/com/google/i18n/phonenumbers/PhoneNumberUtilTest.java b/java/libphonenumber/test/com/google/i18n/phonenumbers/PhoneNumberUtilTest.java index 30d26cd3d..566426880 100644 --- a/java/libphonenumber/test/com/google/i18n/phonenumbers/PhoneNumberUtilTest.java +++ b/java/libphonenumber/test/com/google/i18n/phonenumbers/PhoneNumberUtilTest.java @@ -1314,18 +1314,6 @@ public class PhoneNumberUtilTest extends TestMetadataTestCase { assertEquals(PhoneNumberUtil.ValidationResult.TOO_LONG, phoneUtil.isPossibleNumberWithReason(INTERNATIONAL_TOLL_FREE_TOO_LONG)); - - // Try with number that we don't have metadata for. - PhoneNumber adNumber = new PhoneNumber(); - adNumber.setCountryCode(376).setNationalNumber(12345L); - assertEquals(PhoneNumberUtil.ValidationResult.IS_POSSIBLE, - phoneUtil.isPossibleNumberWithReason(adNumber)); - adNumber.setCountryCode(376).setNationalNumber(1L); - assertEquals(PhoneNumberUtil.ValidationResult.TOO_SHORT, - phoneUtil.isPossibleNumberWithReason(adNumber)); - adNumber.setCountryCode(376).setNationalNumber(123456789012345678L); - assertEquals(PhoneNumberUtil.ValidationResult.TOO_LONG, - phoneUtil.isPossibleNumberWithReason(adNumber)); } public void testIsNotPossibleNumber() { @@ -2350,7 +2338,7 @@ public class PhoneNumberUtilTest extends TestMetadataTestCase { assertEquals("+37612345", phoneUtil.format(adNumber, PhoneNumberFormat.E164)); assertEquals("12345", phoneUtil.format(adNumber, PhoneNumberFormat.NATIONAL)); assertEquals(PhoneNumberUtil.PhoneNumberType.UNKNOWN, phoneUtil.getNumberType(adNumber)); - assertTrue(phoneUtil.isValidNumber(adNumber)); + assertFalse(phoneUtil.isValidNumber(adNumber)); // Test dialing a US number from within Andorra. assertEquals("00 1 650 253 0000", diff --git a/java/libphonenumber/test/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_CC b/java/libphonenumber/test/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_CC index f715e55a8..97fa27e94 100644 Binary files a/java/libphonenumber/test/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_CC and b/java/libphonenumber/test/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_CC differ diff --git a/java/libphonenumber/test/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_CX b/java/libphonenumber/test/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_CX index b6984d8b6..ad6bff5c3 100644 Binary files a/java/libphonenumber/test/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_CX and b/java/libphonenumber/test/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_CX differ diff --git a/resources/PhoneNumberMetadataForTesting.xml b/resources/PhoneNumberMetadataForTesting.xml index ae670caa5..6e598f7f1 100644 --- a/resources/PhoneNumberMetadataForTesting.xml +++ b/resources/PhoneNumberMetadataForTesting.xml @@ -223,14 +223,8 @@ + recognised by the library. --> - - 5\d{3,14} - \d{2,14} - @@ -251,18 +245,12 @@ - + + recognised by the library. --> - - 5\d{3,14} - \d{2,14} -