Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Rename NonGeographicalRegion to NonGeographicalEntity. #3627

Open
wants to merge 10 commits into
base: master
Choose a base branch
from
2 changes: 1 addition & 1 deletion cpp/src/phonenumbers/asyoutypeformatter.cc
Original file line number Diff line number Diff line change
Expand Up @@ -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);
}
Expand Down
10 changes: 5 additions & 5 deletions cpp/src/phonenumbers/phonenumberutil.cc
Original file line number Diff line number Diff line change
Expand Up @@ -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: "
Expand Down Expand Up @@ -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(
Expand Down Expand Up @@ -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);
}

Expand Down Expand Up @@ -2067,7 +2067,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,
Expand All @@ -2090,7 +2090,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
Expand Down
2 changes: 1 addition & 1 deletion cpp/src/phonenumbers/phonenumberutil.h
Original file line number Diff line number Diff line change
Expand Up @@ -862,7 +862,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(
Expand Down
6 changes: 3 additions & 3 deletions cpp/test/phonenumbers/phonenumberutil_test.cc
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down Expand Up @@ -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());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -612,7 +612,7 @@ private boolean attemptToExtractCountryCallingCode() {
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);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -699,7 +699,7 @@ abstract boolean verify(

// 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.
Expand All @@ -715,7 +715,7 @@ abstract boolean verify(
// 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);
Expand Down Expand Up @@ -1072,7 +1072,7 @@ public Set<String> getSupportedRegions() {
* library supports
*/
public Set<Integer> getSupportedGlobalNetworkCallingCodes() {
return Collections.unmodifiableSet(countryCodesForNonGeographicalRegion);
return Collections.unmodifiableSet(countryCodesForNonGeographicalEntity);
}

/**
Expand Down Expand Up @@ -1159,7 +1159,7 @@ public Set<PhoneNumberType> getSupportedTypesForRegion(String regionCode) {
* 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);
Expand Down Expand Up @@ -1436,7 +1436,7 @@ public String formatNationalNumberWithCarrierCode(PhoneNumber number, CharSequen
private PhoneMetadata getMetadataForRegionOrCallingCode(
int countryCallingCode, String regionCode) {
return REGION_CODE_FOR_NON_GEO_ENTITY.equals(regionCode)
? getMetadataForNonGeographicalRegion(countryCallingCode)
? getMetadataForNonGeographicalEntity(countryCallingCode)
: getMetadataForRegion(regionCode);
}

Expand Down Expand Up @@ -2149,7 +2149,7 @@ public PhoneNumber getExampleNumberForType(PhoneNumberType type) {
// 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);
Expand All @@ -2171,7 +2171,7 @@ public PhoneNumber getExampleNumberForType(PhoneNumberType type) {
* 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
Expand Down Expand Up @@ -2322,18 +2322,26 @@ PhoneMetadata getMetadataForRegion(String regionCode) {
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.
*
* @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);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
}
Original file line number Diff line number Diff line change
Expand Up @@ -49,8 +49,17 @@ public MetadataSourceImpl(
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");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,29 +19,14 @@
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);
}
}
Original file line number Diff line number Diff line change
@@ -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);
}
Original file line number Diff line number Diff line change
Expand Up @@ -161,7 +161,7 @@ public void testGetSupportedCallingCodes() {

public void testGetInstanceLoadBadMetadata() {
assertNull(phoneUtil.getMetadataForRegion("No Such Region"));
assertNull(phoneUtil.getMetadataForNonGeographicalRegion(-1));
assertNull(phoneUtil.getMetadataForNonGeographicalEntity(-1));
}

public void testGetSupportedTypesForRegion() {
Expand Down Expand Up @@ -262,7 +262,7 @@ public void testGetInstanceLoadARMetadata() {
}

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());
Expand Down Expand Up @@ -3247,8 +3247,8 @@ public void testGetMetadataForRegionForUnknownRegion_shouldBeNull() {
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() {
Expand All @@ -3262,13 +3262,13 @@ public void run() {
});
}

public void testGetMetadataForNonGeographicalRegionForMissingMetadata() {
public void testGetMetadataForNonGeographicalEntityForMissingMetadata() {
assertThrows(
MissingMetadataException.class,
new ThrowingRunnable() {
@Override
public void run() {
phoneNumberUtilWithMissingMetadata.getMetadataForNonGeographicalRegion(800);
phoneNumberUtilWithMissingMetadata.getMetadataForNonGeographicalEntity(800);
}
});
}
Expand Down
4 changes: 3 additions & 1 deletion pending_code_changes.txt
Original file line number Diff line number Diff line change
@@ -1 +1,3 @@

Code changes:
- Renamed NonGeographicalRegion to NonGeographicalEntity.
- Created a new interface called NonGeographicalEntityMetadataSourceV2
Loading