Browse Source

Merge 7fc605d00a into cf446565d9

pull/3627/merge
KarolJakubKrawiec 4 days ago
committed by GitHub
parent
commit
31b1c267b6
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
13 changed files with 101 additions and 50 deletions
  1. +1
    -1
      cpp/src/phonenumbers/asyoutypeformatter.cc
  2. +5
    -5
      cpp/src/phonenumbers/phonenumberutil.cc
  3. +1
    -1
      cpp/src/phonenumbers/phonenumberutil.h
  4. +3
    -3
      cpp/test/phonenumbers/phonenumberutil_test.cc
  5. +1
    -1
      java/libphonenumber/src/com/google/i18n/phonenumbers/AsYouTypeFormatter.java
  6. +18
    -10
      java/libphonenumber/src/com/google/i18n/phonenumbers/PhoneNumberUtil.java
  7. +1
    -1
      java/libphonenumber/src/com/google/i18n/phonenumbers/metadata/source/FormattingMetadataSource.java
  8. +1
    -1
      java/libphonenumber/src/com/google/i18n/phonenumbers/metadata/source/MetadataSource.java
  9. +9
    -0
      java/libphonenumber/src/com/google/i18n/phonenumbers/metadata/source/MetadataSourceImpl.java
  10. +5
    -20
      java/libphonenumber/src/com/google/i18n/phonenumbers/metadata/source/NonGeographicalEntityMetadataSource.java
  11. +47
    -0
      java/libphonenumber/src/com/google/i18n/phonenumbers/metadata/source/NonGeographicalEntityMetadataSourceV2.java
  12. +6
    -6
      java/libphonenumber/test/com/google/i18n/phonenumbers/PhoneNumberUtilTest.java
  13. +3
    -1
      pending_code_changes.txt

+ 1
- 1
cpp/src/phonenumbers/asyoutypeformatter.cc View File

@ -688,7 +688,7 @@ bool AsYouTypeFormatter::AttemptToExtractCountryCode() {
phone_util_.GetRegionCodeForCountryCode(country_code, &new_region_code);
if (PhoneNumberUtil::kRegionCodeForNonGeoEntity == new_region_code) {
current_metadata_ =
phone_util_.GetMetadataForNonGeographicalRegion(country_code);
phone_util_.GetMetadataForNonGeographicalEntity(country_code);
} else if (new_region_code != default_country_) {
current_metadata_ = GetMetadataForRegion(new_region_code);
}


+ 5
- 5
cpp/src/phonenumbers/phonenumberutil.cc View File

@ -974,7 +974,7 @@ void PhoneNumberUtil::GetSupportedTypesForNonGeoEntity(
std::set<PhoneNumberType>* types) const {
DCHECK(types);
const PhoneMetadata* metadata =
GetMetadataForNonGeographicalRegion(country_calling_code);
GetMetadataForNonGeographicalEntity(country_calling_code);
if (metadata == NULL) {
LOG(WARNING) << "Unknown country calling code for a non-geographical "
<< "entity provided: "
@ -1105,7 +1105,7 @@ const PhoneMetadata* PhoneNumberUtil::GetMetadataForRegion(
return NULL;
}
const PhoneMetadata* PhoneNumberUtil::GetMetadataForNonGeographicalRegion(
const PhoneMetadata* PhoneNumberUtil::GetMetadataForNonGeographicalEntity(
int country_calling_code) const {
absl::node_hash_map<int, PhoneMetadata>::const_iterator it =
country_code_to_non_geographical_metadata_map_->find(
@ -1257,7 +1257,7 @@ void PhoneNumberUtil::FormatNationalNumberWithCarrierCode(
const PhoneMetadata* PhoneNumberUtil::GetMetadataForRegionOrCallingCode(
int country_calling_code, const string& region_code) const {
return kRegionCodeForNonGeoEntity == region_code
? GetMetadataForNonGeographicalRegion(country_calling_code)
? GetMetadataForNonGeographicalEntity(country_calling_code)
: GetMetadataForRegion(region_code);
}
@ -2078,7 +2078,7 @@ bool PhoneNumberUtil::GetExampleNumberForType(
it != global_network_calling_codes.end(); ++it) {
int country_calling_code = *it;
const PhoneMetadata* metadata =
GetMetadataForNonGeographicalRegion(country_calling_code);
GetMetadataForNonGeographicalEntity(country_calling_code);
const PhoneNumberDesc* desc = GetNumberDescByType(*metadata, type);
if (desc->has_example_number()) {
ErrorType success = Parse(StrCat(kPlusSign,
@ -2101,7 +2101,7 @@ bool PhoneNumberUtil::GetExampleNumberForNonGeoEntity(
int country_calling_code, PhoneNumber* number) const {
DCHECK(number);
const PhoneMetadata* metadata =
GetMetadataForNonGeographicalRegion(country_calling_code);
GetMetadataForNonGeographicalEntity(country_calling_code);
if (metadata) {
// For geographical entities, fixed-line data is always present. However,
// for non-geographical entities, this is not the case, so we have to go


+ 1
- 1
cpp/src/phonenumbers/phonenumberutil.h View File

@ -876,7 +876,7 @@ class PhoneNumberUtil : public Singleton<PhoneNumberUtil> {
const i18n::phonenumbers::PhoneMetadata* GetMetadataForRegion(
const string& region_code) const;
const i18n::phonenumbers::PhoneMetadata* GetMetadataForNonGeographicalRegion(
const i18n::phonenumbers::PhoneMetadata* GetMetadataForNonGeographicalEntity(
int country_calling_code) const;
const i18n::phonenumbers::PhoneMetadata* GetMetadataForRegionOrCallingCode(


+ 3
- 3
cpp/test/phonenumbers/phonenumberutil_test.cc View File

@ -64,9 +64,9 @@ class PhoneNumberUtilTest : public testing::Test {
return phone_util_.GetMetadataForRegion(region_code);
}
const PhoneMetadata* GetMetadataForNonGeographicalRegion(
const PhoneMetadata* GetMetadataForNonGeographicalEntity(
int country_code) const {
return phone_util_.GetMetadataForNonGeographicalRegion(country_code);
return phone_util_.GetMetadataForNonGeographicalEntity(country_code);
}
void ExtractPossibleNumber(const string& number,
@ -341,7 +341,7 @@ TEST_F(PhoneNumberUtilTest, GetInstanceLoadARMetadata) {
}
TEST_F(PhoneNumberUtilTest, GetInstanceLoadInternationalTollFreeMetadata) {
const PhoneMetadata* metadata = GetMetadataForNonGeographicalRegion(800);
const PhoneMetadata* metadata = GetMetadataForNonGeographicalEntity(800);
EXPECT_FALSE(metadata == NULL);
EXPECT_EQ("001", metadata->id());
EXPECT_EQ(800, metadata->country_code());


+ 1
- 1
java/libphonenumber/src/com/google/i18n/phonenumbers/AsYouTypeFormatter.java View File

@ -612,7 +612,7 @@ public class AsYouTypeFormatter {
nationalNumber.append(numberWithoutCountryCallingCode);
String newRegionCode = phoneUtil.getRegionCodeForCountryCode(countryCode);
if (PhoneNumberUtil.REGION_CODE_FOR_NON_GEO_ENTITY.equals(newRegionCode)) {
currentMetadata = phoneUtil.getMetadataForNonGeographicalRegion(countryCode);
currentMetadata = phoneUtil.getMetadataForNonGeographicalEntity(countryCode);
} else if (!newRegionCode.equals(defaultCountry)) {
currentMetadata = getMetadataForRegion(newRegionCode);
}


+ 18
- 10
java/libphonenumber/src/com/google/i18n/phonenumbers/PhoneNumberUtil.java View File

@ -699,7 +699,7 @@ public class PhoneNumberUtil {
// The set of country calling codes that map to the non-geo entity region ("001"). This set
// currently contains < 12 elements so the default capacity of 16 (load factor=0.75) is fine.
private final Set<Integer> countryCodesForNonGeographicalRegion = new HashSet<>();
private final Set<Integer> countryCodesForNonGeographicalEntity = new HashSet<>();
/**
* This class implements a singleton, the constructor is only visible to facilitate testing.
@ -715,7 +715,7 @@ public class PhoneNumberUtil {
// that's the only region code it maps to.
if (regionCodes.size() == 1 && REGION_CODE_FOR_NON_GEO_ENTITY.equals(regionCodes.get(0))) {
// This is the subset of all country codes that map to the non-geo entity region code.
countryCodesForNonGeographicalRegion.add(entry.getKey());
countryCodesForNonGeographicalEntity.add(entry.getKey());
} else {
// The supported regions set does not include the "001" non-geo entity region code.
supportedRegions.addAll(regionCodes);
@ -1072,7 +1072,7 @@ public class PhoneNumberUtil {
* library supports
*/
public Set<Integer> getSupportedGlobalNetworkCallingCodes() {
return Collections.unmodifiableSet(countryCodesForNonGeographicalRegion);
return Collections.unmodifiableSet(countryCodesForNonGeographicalEntity);
}
/**
@ -1159,7 +1159,7 @@ public class PhoneNumberUtil {
* entity.
*/
public Set<PhoneNumberType> getSupportedTypesForNonGeoEntity(int countryCallingCode) {
PhoneMetadata metadata = getMetadataForNonGeographicalRegion(countryCallingCode);
PhoneMetadata metadata = getMetadataForNonGeographicalEntity(countryCallingCode);
if (metadata == null) {
logger.log(Level.WARNING, "Unknown country calling code for a non-geographical entity "
+ "provided: " + countryCallingCode);
@ -1436,7 +1436,7 @@ public class PhoneNumberUtil {
private PhoneMetadata getMetadataForRegionOrCallingCode(
int countryCallingCode, String regionCode) {
return REGION_CODE_FOR_NON_GEO_ENTITY.equals(regionCode)
? getMetadataForNonGeographicalRegion(countryCallingCode)
? getMetadataForNonGeographicalEntity(countryCallingCode)
: getMetadataForRegion(regionCode);
}
@ -2152,7 +2152,7 @@ public class PhoneNumberUtil {
// If there wasn't an example number for a region, try the non-geographical entities.
for (int countryCallingCode : getSupportedGlobalNetworkCallingCodes()) {
PhoneNumberDesc desc = getNumberDescByType(
getMetadataForNonGeographicalRegion(countryCallingCode), type);
getMetadataForNonGeographicalEntity(countryCallingCode), type);
try {
if (desc.hasExampleNumber()) {
return parse("+" + countryCallingCode + desc.getExampleNumber(), UNKNOWN_REGION);
@ -2174,7 +2174,7 @@ public class PhoneNumberUtil {
* to a non-geographical entity.
*/
public PhoneNumber getExampleNumberForNonGeoEntity(int countryCallingCode) {
PhoneMetadata metadata = getMetadataForNonGeographicalRegion(countryCallingCode);
PhoneMetadata metadata = getMetadataForNonGeographicalEntity(countryCallingCode);
if (metadata != null) {
// For geographical entities, fixed-line data is always present. However, for non-geographical
// entities, this is not the case, so we have to go through different types to find the
@ -2325,6 +2325,14 @@ public class PhoneNumberUtil {
return phoneMetadata;
}
/**
* @deprecated Use {@link #getMetadataForNonGeographicalEntity}
*/
@Deprecated
PhoneMetadata getMetadataForNonGeographicalRegion(int countryCallingCode) {
return getMetadataForNonGeographicalEntity(countryCallingCode);
}
/**
* Returns the metadata for the given country calling code or {@code null} if the country calling
* code is invalid or unknown.
@ -2332,11 +2340,11 @@ public class PhoneNumberUtil {
* @throws MissingMetadataException if the country calling code is valid, but metadata cannot be
* found.
*/
PhoneMetadata getMetadataForNonGeographicalRegion(int countryCallingCode) {
if (!countryCodesForNonGeographicalRegion.contains(countryCallingCode)) {
PhoneMetadata getMetadataForNonGeographicalEntity(int countryCallingCode) {
if (!countryCodesForNonGeographicalEntity.contains(countryCallingCode)) {
return null;
}
PhoneMetadata phoneMetadata = metadataSource.getMetadataForNonGeographicalRegion(
PhoneMetadata phoneMetadata = metadataSource.getMetadataForNonGeographicalEntity(
countryCallingCode);
ensureMetadataIsNonNull(phoneMetadata,
"Missing metadata for country code " + countryCallingCode);


+ 1
- 1
java/libphonenumber/src/com/google/i18n/phonenumbers/metadata/source/FormattingMetadataSource.java View File

@ -25,7 +25,7 @@ public interface FormattingMetadataSource {
* Returns formatting phone metadata for provided country calling code.
*
* <p>This method is similar to the one in {@link
* NonGeographicalEntityMetadataSource#getMetadataForNonGeographicalRegion(int)}, except that it
* NonGeographicalEntityMetadataSourceV2#getMetadataForNonGeographicalEntity(int)}, except that it
* will not fail for geographical regions, it can be used for both geo- and non-geo entities.
*
* <p>In case the provided {@code countryCallingCode} maps to several different regions, only one


+ 1
- 1
java/libphonenumber/src/com/google/i18n/phonenumbers/metadata/source/MetadataSource.java View File

@ -17,5 +17,5 @@
package com.google.i18n.phonenumbers.metadata.source;
/** A source of phone metadata split by different regions. */
public interface MetadataSource extends RegionMetadataSource, NonGeographicalEntityMetadataSource {
public interface MetadataSource extends RegionMetadataSource, NonGeographicalEntityMetadataSource, NonGeographicalEntityMetadataSourceV2 {
}

+ 9
- 0
java/libphonenumber/src/com/google/i18n/phonenumbers/metadata/source/MetadataSourceImpl.java View File

@ -49,8 +49,17 @@ public final class MetadataSourceImpl implements MetadataSource {
metadataLoader, metadataParser, new CompositeMetadataContainer()));
}
/**
* @deprecated Use {@link #getMetadataForNonGeographicalEntity(int)}
*/
@Deprecated
@Override
public PhoneMetadata getMetadataForNonGeographicalRegion(int countryCallingCode) {
return getMetadataForNonGeographicalEntity(countryCallingCode);
}
@Override
public PhoneMetadata getMetadataForNonGeographicalEntity(int countryCallingCode) {
if (GeoEntityUtility.isGeoEntity(countryCallingCode)) {
throw new IllegalArgumentException(
countryCallingCode + " calling code belongs to a geo entity");


+ 5
- 20
java/libphonenumber/src/com/google/i18n/phonenumbers/metadata/source/NonGeographicalEntityMetadataSource.java View File

@ -19,29 +19,14 @@ package com.google.i18n.phonenumbers.metadata.source;
import com.google.i18n.phonenumbers.Phonemetadata.PhoneMetadata;
/**
* A source of phone metadata for non-geographical entities.
*
* <p>Non-geographical entities are phone number ranges that have a country calling code, but either
* do not belong to an actual country (some international services), or belong to a region which has
* a different country calling code from the country it is part of. Examples of such ranges are
* those starting with:
*
* <ul>
* <li>800 - country code assigned to the Universal International Freephone Service
* <li>808 - country code assigned to the International Shared Cost Service
* <li>870 - country code assigned to the Pitcairn Islands
* <li>...
* </ul>
* @deprecated Use {@link NonGeographicalEntityMetadataSourceV2}
*/
@Deprecated
public interface NonGeographicalEntityMetadataSource {
/**
* Gets phone metadata for a non-geographical entity.
*
* @param countryCallingCode the country calling code.
* @return the phone metadata for that entity, or null if there is none.
* @throws IllegalArgumentException if provided {@code countryCallingCode} does not belong to a
* non-geographical entity
* @deprecated use {@link NonGeographicalEntityMetadataSourceV2#getMetadataForNonGeographicalEntity(int)}
*/
@Deprecated
PhoneMetadata getMetadataForNonGeographicalRegion(int countryCallingCode);
}
}

+ 47
- 0
java/libphonenumber/src/com/google/i18n/phonenumbers/metadata/source/NonGeographicalEntityMetadataSourceV2.java View File

@ -0,0 +1,47 @@
/*
* Copyright (C) 2022 The Libphonenumber Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.google.i18n.phonenumbers.metadata.source;
import com.google.i18n.phonenumbers.Phonemetadata.PhoneMetadata;
/**
* A source of phone metadata for non-geographical entities.
*
* <p>Non-geographical entities are phone number ranges that have a country calling code, but either
* do not belong to an actual country (some international services), or belong to a region which has
* a different country calling code from the country it is part of. Examples of such ranges are
* those starting with:
*
* <ul>
* <li>800 - country code assigned to the Universal International Freephone Service
* <li>808 - country code assigned to the International Shared Cost Service
* <li>870 - country code assigned to the Pitcairn Islands
* <li>...
* </ul>
*/
public interface NonGeographicalEntityMetadataSourceV2 {
/**
* Gets phone metadata for a non-geographical entity.
*
* @param countryCallingCode the country calling code.
* @return the phone metadata for that entity, or null if there is none.
* @throws IllegalArgumentException if provided {@code countryCallingCode} does not belong to a
* non-geographical entity
*/
PhoneMetadata getMetadataForNonGeographicalEntity(int countryCallingCode);
}

+ 6
- 6
java/libphonenumber/test/com/google/i18n/phonenumbers/PhoneNumberUtilTest.java View File

@ -161,7 +161,7 @@ public class PhoneNumberUtilTest extends TestMetadataTestCase {
public void testGetInstanceLoadBadMetadata() {
assertNull(phoneUtil.getMetadataForRegion("No Such Region"));
assertNull(phoneUtil.getMetadataForNonGeographicalRegion(-1));
assertNull(phoneUtil.getMetadataForNonGeographicalEntity(-1));
}
public void testGetSupportedTypesForRegion() {
@ -262,7 +262,7 @@ public class PhoneNumberUtilTest extends TestMetadataTestCase {
}
public void testGetInstanceLoadInternationalTollFreeMetadata() {
PhoneMetadata metadata = phoneUtil.getMetadataForNonGeographicalRegion(800);
PhoneMetadata metadata = phoneUtil.getMetadataForNonGeographicalEntity(800);
assertEquals("001", metadata.getId());
assertEquals(800, metadata.getCountryCode());
assertEquals("$1 $2", metadata.getNumberFormat(0).getFormat());
@ -3254,8 +3254,8 @@ public class PhoneNumberUtilTest extends TestMetadataTestCase {
assertNull(phoneUtil.getMetadataForRegion(RegionCode.ZZ));
}
public void testGetMetadataForNonGeographicalRegionForGeoRegion_shouldBeNull() {
assertNull(phoneUtil.getMetadataForNonGeographicalRegion(/* countryCallingCode = */ 1));
public void testGetMetadataForNonGeographicalEntityForGeoRegion_shouldBeNull() {
assertNull(phoneUtil.getMetadataForNonGeographicalEntity(/* countryCallingCode = */ 1));
}
public void testGetMetadataForRegionForMissingMetadata() {
@ -3269,13 +3269,13 @@ public class PhoneNumberUtilTest extends TestMetadataTestCase {
});
}
public void testGetMetadataForNonGeographicalRegionForMissingMetadata() {
public void testGetMetadataForNonGeographicalEntityForMissingMetadata() {
assertThrows(
MissingMetadataException.class,
new ThrowingRunnable() {
@Override
public void run() {
phoneNumberUtilWithMissingMetadata.getMetadataForNonGeographicalRegion(800);
phoneNumberUtilWithMissingMetadata.getMetadataForNonGeographicalEntity(800);
}
});
}


+ 3
- 1
pending_code_changes.txt View File

@ -1 +1,3 @@
Code changes:
- Renamed NonGeographicalRegion to NonGeographicalEntity.
- Created a new interface called NonGeographicalEntityMetadataSourceV2

Loading…
Cancel
Save