From 263caa9ab7f6960a82f3bed534389d72f9c54677 Mon Sep 17 00:00:00 2001 From: mandlil <138015259+mandlil@users.noreply.github.com> Date: Mon, 7 Aug 2023 15:09:21 +0530 Subject: [PATCH] Japan(JP, +81): Add support to national carrier code 003768 and short code prefix 000[259]. (#3142) * Japan(JP, +81): Add support to national carrier code 003768 and 000[259] XXX XXX short codes. * updating the testFormatByPattern() * Update NumberingScheme.java --- .../i18n/phonenumbers/PhoneNumberUtilTest.java | 7 ++++--- .../metadata/model/NumberingScheme.java | 13 ++++++++++--- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/java/libphonenumber/test/com/google/i18n/phonenumbers/PhoneNumberUtilTest.java b/java/libphonenumber/test/com/google/i18n/phonenumbers/PhoneNumberUtilTest.java index c97d09c27..cb56077e4 100644 --- a/java/libphonenumber/test/com/google/i18n/phonenumbers/PhoneNumberUtilTest.java +++ b/java/libphonenumber/test/com/google/i18n/phonenumbers/PhoneNumberUtilTest.java @@ -930,9 +930,10 @@ public class PhoneNumberUtilTest extends TestMetadataTestCase { assertEquals("+1 (650) 253-0000", phoneUtil.formatByPattern(US_NUMBER, PhoneNumberFormat.INTERNATIONAL, newNumberFormats)); - assertEquals("tel:+1-650-253-0000", phoneUtil.formatByPattern(US_NUMBER, - PhoneNumberFormat.RFC3966, - newNumberFormats)); + PhoneNumber usNumber2 = new PhoneNumber().setCountryCode(1).setNationalNumber(6507129823L); + assertEquals( + "tel:+1-650-712-9823", + phoneUtil.formatByPattern(usNumber2, PhoneNumberFormat.RFC3966, newNumberFormats)); // $NP is set to '1' for the US. Here we check that for other NANPA countries the US rules are // followed. diff --git a/metadata/src/main/java/com/google/i18n/phonenumbers/metadata/model/NumberingScheme.java b/metadata/src/main/java/com/google/i18n/phonenumbers/metadata/model/NumberingScheme.java index 01484b1ab..02ec4011d 100644 --- a/metadata/src/main/java/com/google/i18n/phonenumbers/metadata/model/NumberingScheme.java +++ b/metadata/src/main/java/com/google/i18n/phonenumbers/metadata/model/NumberingScheme.java @@ -73,6 +73,7 @@ import java.util.TreeSet; public abstract class NumberingScheme { // Bitmask for [1-9] (bits 1..9 set, bit 0 clear). private static final int NOT_ZERO_MASK = 0x3FE; + private static final String JAPAN_COUNTRY_CODE = "81"; /** Top level information about a numbering scheme. */ @AutoValue @@ -416,9 +417,15 @@ public abstract class NumberingScheme { || spec.carrier().map(FormatTemplate::hasNationalPrefix).orElse(false); nationalPrefixSometimesOptional |= spec.nationalPrefixOptional(); } - checkMetadata(attributes.getCarrierPrefixes().isEmpty() || carrierTemplatesExist, - "[%s] carrier prefixes exist but no formats have carrier templates: %s", - cc, formats.values()); + // Only if the present region is not JP do this check as in Japan we are not capturing domestic + // carrier codes. + if (!cc.toString().equals(JAPAN_COUNTRY_CODE)) { + checkMetadata( + attributes.getCarrierPrefixes().isEmpty() || carrierTemplatesExist, + "[%s] carrier prefixes exist but no formats have carrier templates: %s", + cc, + formats.values()); + } checkMetadata(!attributes.getNationalPrefixes().isEmpty() || !nationalPrefixExistsForFormatting, "[%s] if no national prefix exists, it cannot be specified in any format template: %s", cc, formats.values());