diff options
author | Treehugger Robot <treehugger-gerrit@google.com> | 2022-08-25 20:33:37 +0000 |
---|---|---|
committer | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | 2022-08-25 20:33:37 +0000 |
commit | 5cdc5094a5be9275b4d2b8700a701f5fff266df7 (patch) | |
tree | 37017a582ee037520263bab6a4b6394c8753da3e /repackaged/libphonenumber/src/com/android | |
parent | 25461716dd22bf82d846299da30a652cddc3c2bf (diff) | |
parent | 93a35a2c43571ff24ae57382ccee2fb47ed51e90 (diff) | |
download | libphonenumber-5cdc5094a5be9275b4d2b8700a701f5fff266df7.tar.gz |
Merge "Update libphonenumber to v8.12.54" am: 84f52584d0 am: 93a35a2c43
Original change: https://android-review.googlesource.com/c/platform/external/libphonenumber/+/2192266
Change-Id: I426740f2cae703a9ce0f6c2a54d102bd2df25a1a
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
Diffstat (limited to 'repackaged/libphonenumber/src/com/android')
124 files changed, 1190 insertions, 478 deletions
diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/AlternateFormatsCountryCodeSet.java b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/AlternateFormatsCountryCodeSet.java index cca8a0b8..1b964008 100644 --- a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/AlternateFormatsCountryCodeSet.java +++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/AlternateFormatsCountryCodeSet.java @@ -29,7 +29,7 @@ import java.util.Set; */ public class AlternateFormatsCountryCodeSet { // A set of all country codes for which data is available. - static Set<Integer> getCountryCodeSet() { + public static Set<Integer> getCountryCodeSet() { // The capacity is set to 61 as there are 46 different entries, // and this offers a load factor of roughly 0.75. Set<Integer> countryCodeSet = new HashSet<Integer>(61); diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/CountryCodeToRegionCodeMap.java b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/CountryCodeToRegionCodeMap.java index 6d6b33f6..28072bfb 100644 --- a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/CountryCodeToRegionCodeMap.java +++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/CountryCodeToRegionCodeMap.java @@ -34,7 +34,7 @@ public class CountryCodeToRegionCodeMap { // country/region represented by that country code. In the case of multiple // countries sharing a calling code, such as the NANPA countries, the one // indicated with "isMainCountryForCode" in the metadata should be first. - static Map<Integer, List<String>> getCountryCodeToRegionCodeMap() { + public static Map<Integer, List<String>> getCountryCodeToRegionCodeMap() { // The capacity is set to 286 as there are 215 different entries, // and this offers a load factor of roughly 0.75. Map<Integer, List<String>> countryCodeToRegionCodeMap = diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/MetadataManager.java b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/MetadataManager.java deleted file mode 100644 index 45941115..00000000 --- a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/MetadataManager.java +++ /dev/null @@ -1,234 +0,0 @@ -/* GENERATED SOURCE. DO NOT MODIFY. */ -/* - * Copyright (C) 2012 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.android.i18n.phonenumbers; - -import com.android.i18n.phonenumbers.Phonemetadata.PhoneMetadata; -import com.android.i18n.phonenumbers.Phonemetadata.PhoneMetadataCollection; -import java.io.IOException; -import java.io.InputStream; -import java.io.ObjectInputStream; -import java.util.Collections; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.atomic.AtomicReference; -import java.util.logging.Level; -import java.util.logging.Logger; - -/** - * Manager for loading metadata for alternate formats and short numbers. We also declare some - * constants for phone number metadata loading, to more easily maintain all three types of metadata - * together. - * TODO: Consider managing phone number metadata loading here too. - */ -final class MetadataManager { - static final String MULTI_FILE_PHONE_NUMBER_METADATA_FILE_PREFIX = - "/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto"; - static final String SINGLE_FILE_PHONE_NUMBER_METADATA_FILE_NAME = - "/com/android/i18n/phonenumbers/data/SingleFilePhoneNumberMetadataProto"; - private static final String ALTERNATE_FORMATS_FILE_PREFIX = - "/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto"; - private static final String SHORT_NUMBER_METADATA_FILE_PREFIX = - "/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto"; - - static final MetadataLoader DEFAULT_METADATA_LOADER = new MetadataLoader() { - @Override - public InputStream loadMetadata(String metadataFileName) { - return MetadataManager.class.getResourceAsStream(metadataFileName); - } - }; - - private static final Logger logger = Logger.getLogger(MetadataManager.class.getName()); - - // A mapping from a country calling code to the alternate formats for that country calling code. - private static final ConcurrentHashMap<Integer, PhoneMetadata> alternateFormatsMap = - new ConcurrentHashMap<Integer, PhoneMetadata>(); - - // A mapping from a region code to the short number metadata for that region code. - private static final ConcurrentHashMap<String, PhoneMetadata> shortNumberMetadataMap = - new ConcurrentHashMap<String, PhoneMetadata>(); - - // The set of country calling codes for which there are alternate formats. For every country - // calling code in this set there should be metadata linked into the resources. - private static final Set<Integer> alternateFormatsCountryCodes = - AlternateFormatsCountryCodeSet.getCountryCodeSet(); - - // The set of region codes for which there are short number metadata. For every region code in - // this set there should be metadata linked into the resources. - private static final Set<String> shortNumberMetadataRegionCodes = - ShortNumbersRegionCodeSet.getRegionCodeSet(); - - private MetadataManager() {} - - static PhoneMetadata getAlternateFormatsForCountry(int countryCallingCode) { - if (!alternateFormatsCountryCodes.contains(countryCallingCode)) { - return null; - } - return getMetadataFromMultiFilePrefix(countryCallingCode, alternateFormatsMap, - ALTERNATE_FORMATS_FILE_PREFIX, DEFAULT_METADATA_LOADER); - } - - static PhoneMetadata getShortNumberMetadataForRegion(String regionCode) { - if (!shortNumberMetadataRegionCodes.contains(regionCode)) { - return null; - } - return getMetadataFromMultiFilePrefix(regionCode, shortNumberMetadataMap, - SHORT_NUMBER_METADATA_FILE_PREFIX, DEFAULT_METADATA_LOADER); - } - - static Set<String> getSupportedShortNumberRegions() { - return Collections.unmodifiableSet(shortNumberMetadataRegionCodes); - } - - /** - * @param key the lookup key for the provided map, typically a region code or a country calling - * code - * @param map the map containing mappings of already loaded metadata from their {@code key}. If - * this {@code key}'s metadata isn't already loaded, it will be added to this map after - * loading - * @param filePrefix the prefix of the file to load metadata from - * @param metadataLoader the metadata loader used to inject alternative metadata sources - */ - static <T> PhoneMetadata getMetadataFromMultiFilePrefix(T key, - ConcurrentHashMap<T, PhoneMetadata> map, String filePrefix, MetadataLoader metadataLoader) { - PhoneMetadata metadata = map.get(key); - if (metadata != null) { - return metadata; - } - // We assume key.toString() is well-defined. - String fileName = filePrefix + "_" + key; - List<PhoneMetadata> metadataList = getMetadataFromSingleFileName(fileName, metadataLoader); - if (metadataList.size() > 1) { - logger.log(Level.WARNING, "more than one metadata in file " + fileName); - } - metadata = metadataList.get(0); - PhoneMetadata oldValue = map.putIfAbsent(key, metadata); - return (oldValue != null) ? oldValue : metadata; - } - - // Loader and holder for the metadata maps loaded from a single file. - static class SingleFileMetadataMaps { - static SingleFileMetadataMaps load(String fileName, MetadataLoader metadataLoader) { - List<PhoneMetadata> metadataList = getMetadataFromSingleFileName(fileName, metadataLoader); - Map<String, PhoneMetadata> regionCodeToMetadata = new HashMap<String, PhoneMetadata>(); - Map<Integer, PhoneMetadata> countryCallingCodeToMetadata = - new HashMap<Integer, PhoneMetadata>(); - for (PhoneMetadata metadata : metadataList) { - String regionCode = metadata.getId(); - if (PhoneNumberUtil.REGION_CODE_FOR_NON_GEO_ENTITY.equals(regionCode)) { - // regionCode belongs to a non-geographical entity. - countryCallingCodeToMetadata.put(metadata.getCountryCode(), metadata); - } else { - regionCodeToMetadata.put(regionCode, metadata); - } - } - return new SingleFileMetadataMaps(regionCodeToMetadata, countryCallingCodeToMetadata); - } - - // A map from a region code to the PhoneMetadata for that region. - // For phone number metadata, the region code "001" is excluded, since that is used for the - // non-geographical phone number entities. - private final Map<String, PhoneMetadata> regionCodeToMetadata; - - // A map from a country calling code to the PhoneMetadata for that country calling code. - // Examples of the country calling codes include 800 (International Toll Free Service) and 808 - // (International Shared Cost Service). - // For phone number metadata, only the non-geographical phone number entities' country calling - // codes are present. - private final Map<Integer, PhoneMetadata> countryCallingCodeToMetadata; - - private SingleFileMetadataMaps(Map<String, PhoneMetadata> regionCodeToMetadata, - Map<Integer, PhoneMetadata> countryCallingCodeToMetadata) { - this.regionCodeToMetadata = Collections.unmodifiableMap(regionCodeToMetadata); - this.countryCallingCodeToMetadata = Collections.unmodifiableMap(countryCallingCodeToMetadata); - } - - PhoneMetadata get(String regionCode) { - return regionCodeToMetadata.get(regionCode); - } - - PhoneMetadata get(int countryCallingCode) { - return countryCallingCodeToMetadata.get(countryCallingCode); - } - } - - // Manages the atomic reference lifecycle of a SingleFileMetadataMaps encapsulation. - static SingleFileMetadataMaps getSingleFileMetadataMaps( - AtomicReference<SingleFileMetadataMaps> ref, String fileName, MetadataLoader metadataLoader) { - SingleFileMetadataMaps maps = ref.get(); - if (maps != null) { - return maps; - } - maps = SingleFileMetadataMaps.load(fileName, metadataLoader); - ref.compareAndSet(null, maps); - return ref.get(); - } - - private static List<PhoneMetadata> getMetadataFromSingleFileName(String fileName, - MetadataLoader metadataLoader) { - InputStream source = metadataLoader.loadMetadata(fileName); - if (source == null) { - // Sanity check; this would only happen if we packaged jars incorrectly. - throw new IllegalStateException("missing metadata: " + fileName); - } - PhoneMetadataCollection metadataCollection = loadMetadataAndCloseInput(source); - List<PhoneMetadata> metadataList = metadataCollection.getMetadataList(); - if (metadataList.size() == 0) { - // Sanity check; this should not happen since we build with non-empty metadata. - throw new IllegalStateException("empty metadata: " + fileName); - } - return metadataList; - } - - /** - * Loads and returns the metadata from the given stream and closes the stream. - * - * @param source the non-null stream from which metadata is to be read - * @return the loaded metadata - */ - private static PhoneMetadataCollection loadMetadataAndCloseInput(InputStream source) { - ObjectInputStream ois = null; - try { - try { - ois = new ObjectInputStream(source); - } catch (IOException e) { - throw new RuntimeException("cannot load/parse metadata", e); - } - PhoneMetadataCollection metadataCollection = new PhoneMetadataCollection(); - try { - metadataCollection.readExternal(ois); - } catch (IOException e) { - throw new RuntimeException("cannot load/parse metadata", e); - } - return metadataCollection; - } finally { - try { - if (ois != null) { - // This will close all underlying streams as well, including source. - ois.close(); - } else { - source.close(); - } - } catch (IOException e) { - logger.log(Level.WARNING, "error closing input stream (ignored)", e); - } - } - } -} diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/MissingMetadataException.java b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/MissingMetadataException.java new file mode 100644 index 00000000..ee09e99f --- /dev/null +++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/MissingMetadataException.java @@ -0,0 +1,11 @@ +/* GENERATED SOURCE. DO NOT MODIFY. */ +package com.android.i18n.phonenumbers; + +/** Exception class for cases when expected metadata cannot be found. + * @hide This class is not part of the Android public SDK API*/ +public final class MissingMetadataException extends IllegalStateException { + + public MissingMetadataException(String message) { + super(message); + } +}
\ No newline at end of file diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/MultiFileMetadataSourceImpl.java b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/MultiFileMetadataSourceImpl.java deleted file mode 100644 index 7d9e713c..00000000 --- a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/MultiFileMetadataSourceImpl.java +++ /dev/null @@ -1,87 +0,0 @@ -/* GENERATED SOURCE. DO NOT MODIFY. */ -/* - * Copyright (C) 2015 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.android.i18n.phonenumbers; - -import com.android.i18n.phonenumbers.Phonemetadata.PhoneMetadata; -import java.util.List; -import java.util.concurrent.ConcurrentHashMap; - -/** - * Implementation of {@link MetadataSource} that reads from multiple resource files. - */ -final class MultiFileMetadataSourceImpl implements MetadataSource { - // The prefix of the binary files containing phone number metadata for different regions. - // This enables us to set up with different metadata, such as for testing. - private final String phoneNumberMetadataFilePrefix; - - // The {@link MetadataLoader} used to inject alternative metadata sources. - private final MetadataLoader metadataLoader; - - // A mapping from a region code to the phone number metadata for that region code. - // Unlike the mappings for alternate formats and short number metadata, the phone number metadata - // is loaded from a non-statically determined file prefix; therefore this map is bound to the - // instance and not static. - private final ConcurrentHashMap<String, PhoneMetadata> geographicalRegions = - new ConcurrentHashMap<String, PhoneMetadata>(); - - // A mapping from a country calling code for a non-geographical entity to the phone number - // metadata for that country calling code. Examples of the country calling codes include 800 - // (International Toll Free Service) and 808 (International Shared Cost Service). - // Unlike the mappings for alternate formats and short number metadata, the phone number metadata - // is loaded from a non-statically determined file prefix; therefore this map is bound to the - // instance and not static. - private final ConcurrentHashMap<Integer, PhoneMetadata> nonGeographicalRegions = - new ConcurrentHashMap<Integer, PhoneMetadata>(); - - // It is assumed that metadataLoader is not null. Checks should happen before passing it in here. - // @VisibleForTesting - MultiFileMetadataSourceImpl(String phoneNumberMetadataFilePrefix, MetadataLoader metadataLoader) { - this.phoneNumberMetadataFilePrefix = phoneNumberMetadataFilePrefix; - this.metadataLoader = metadataLoader; - } - - // It is assumed that metadataLoader is not null. Checks should happen before passing it in here. - MultiFileMetadataSourceImpl(MetadataLoader metadataLoader) { - this(MetadataManager.MULTI_FILE_PHONE_NUMBER_METADATA_FILE_PREFIX, metadataLoader); - } - - @Override - public PhoneMetadata getMetadataForRegion(String regionCode) { - return MetadataManager.getMetadataFromMultiFilePrefix(regionCode, geographicalRegions, - phoneNumberMetadataFilePrefix, metadataLoader); - } - - @Override - public PhoneMetadata getMetadataForNonGeographicalRegion(int countryCallingCode) { - if (!isNonGeographical(countryCallingCode)) { - // The given country calling code was for a geographical region. - return null; - } - return MetadataManager.getMetadataFromMultiFilePrefix(countryCallingCode, nonGeographicalRegions, - phoneNumberMetadataFilePrefix, metadataLoader); - } - - // A country calling code is non-geographical if it only maps to the non-geographical region code, - // i.e. "001". - private boolean isNonGeographical(int countryCallingCode) { - List<String> regionCodes = - CountryCodeToRegionCodeMap.getCountryCodeToRegionCodeMap().get(countryCallingCode); - return (regionCodes.size() == 1 - && PhoneNumberUtil.REGION_CODE_FOR_NON_GEO_ENTITY.equals(regionCodes.get(0))); - } -} diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/PhoneNumberMatcher.java b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/PhoneNumberMatcher.java index 2e2d96a3..a9f60e96 100644 --- a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/PhoneNumberMatcher.java +++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/PhoneNumberMatcher.java @@ -25,6 +25,7 @@ import com.android.i18n.phonenumbers.Phonemetadata.PhoneMetadata; import com.android.i18n.phonenumbers.Phonenumber.PhoneNumber.CountryCodeSource; import com.android.i18n.phonenumbers.Phonenumber.PhoneNumber; import com.android.i18n.phonenumbers.internal.RegexCache; +import com.android.i18n.phonenumbers.metadata.DefaultMetadataDependenciesProvider; import java.lang.Character.UnicodeBlock; import java.util.Iterator; import java.util.NoSuchElementException; @@ -576,7 +577,9 @@ final class PhoneNumberMatcher implements Iterator<PhoneNumberMatch> { } // If this didn't pass, see if there are any alternate formats that match, and try them instead. PhoneMetadata alternateFormats = - MetadataManager.getAlternateFormatsForCountry(number.getCountryCode()); + DefaultMetadataDependenciesProvider.getInstance() + .getAlternateFormatsMetadataSource() + .getFormattingMetadataForCountryCallingCode(number.getCountryCode()); String nationalSignificantNumber = util.getNationalSignificantNumber(number); if (alternateFormats != null) { for (NumberFormat alternateFormat : alternateFormats.getNumberFormatList()) { diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/PhoneNumberUtil.java b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/PhoneNumberUtil.java index 95e4c4e7..77f1a13c 100644 --- a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/PhoneNumberUtil.java +++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/PhoneNumberUtil.java @@ -25,11 +25,12 @@ import com.android.i18n.phonenumbers.Phonenumber.PhoneNumber.CountryCodeSource; import com.android.i18n.phonenumbers.internal.MatcherApi; import com.android.i18n.phonenumbers.internal.RegexBasedMatcher; import com.android.i18n.phonenumbers.internal.RegexCache; - +import com.android.i18n.phonenumbers.metadata.DefaultMetadataDependenciesProvider; +import com.android.i18n.phonenumbers.metadata.source.MetadataSource; +import com.android.i18n.phonenumbers.metadata.source.MetadataSourceImpl; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; -import java.util.EnumSet; import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; @@ -75,10 +76,6 @@ public class PhoneNumberUtil { private static final int NANPA_COUNTRY_CODE = 1; - // The prefix that needs to be inserted in front of a Colombian landline number when dialed from - // a mobile phone in Colombia. - private static final String COLOMBIA_MOBILE_TO_FIXED_LINE_PREFIX = "3"; - // Map of country calling codes that use a mobile token before the area code. One example of when // this is relevant is when determining the length of the national destination code, which should // be the length of the area code plus the length of the mobile token. @@ -123,16 +120,16 @@ public class PhoneNumberUtil { private static final Map<Character, Character> ALL_PLUS_NUMBER_GROUPING_SYMBOLS; static { - HashMap<Integer, String> mobileTokenMap = new HashMap<Integer, String>(); + HashMap<Integer, String> mobileTokenMap = new HashMap<>(); mobileTokenMap.put(54, "9"); MOBILE_TOKEN_MAPPINGS = Collections.unmodifiableMap(mobileTokenMap); - HashSet<Integer> geoMobileCountriesWithoutMobileAreaCodes = new HashSet<Integer>(); + HashSet<Integer> geoMobileCountriesWithoutMobileAreaCodes = new HashSet<>(); geoMobileCountriesWithoutMobileAreaCodes.add(86); // China GEO_MOBILE_COUNTRIES_WITHOUT_MOBILE_AREA_CODES = Collections.unmodifiableSet(geoMobileCountriesWithoutMobileAreaCodes); - HashSet<Integer> geoMobileCountries = new HashSet<Integer>(); + HashSet<Integer> geoMobileCountries = new HashSet<>(); geoMobileCountries.add(52); // Mexico geoMobileCountries.add(54); // Argentina geoMobileCountries.add(55); // Brazil @@ -142,7 +139,7 @@ public class PhoneNumberUtil { // Simple ASCII digits map used to populate ALPHA_PHONE_MAPPINGS and // ALL_PLUS_NUMBER_GROUPING_SYMBOLS. - HashMap<Character, Character> asciiDigitMappings = new HashMap<Character, Character>(); + HashMap<Character, Character> asciiDigitMappings = new HashMap<>(); asciiDigitMappings.put('0', '0'); asciiDigitMappings.put('1', '1'); asciiDigitMappings.put('2', '2'); @@ -154,7 +151,7 @@ public class PhoneNumberUtil { asciiDigitMappings.put('8', '8'); asciiDigitMappings.put('9', '9'); - HashMap<Character, Character> alphaMap = new HashMap<Character, Character>(40); + HashMap<Character, Character> alphaMap = new HashMap<>(40); alphaMap.put('A', '2'); alphaMap.put('B', '2'); alphaMap.put('C', '2'); @@ -183,19 +180,19 @@ public class PhoneNumberUtil { alphaMap.put('Z', '9'); ALPHA_MAPPINGS = Collections.unmodifiableMap(alphaMap); - HashMap<Character, Character> combinedMap = new HashMap<Character, Character>(100); + HashMap<Character, Character> combinedMap = new HashMap<>(100); combinedMap.putAll(ALPHA_MAPPINGS); combinedMap.putAll(asciiDigitMappings); ALPHA_PHONE_MAPPINGS = Collections.unmodifiableMap(combinedMap); - HashMap<Character, Character> diallableCharMap = new HashMap<Character, Character>(); + HashMap<Character, Character> diallableCharMap = new HashMap<>(); diallableCharMap.putAll(asciiDigitMappings); diallableCharMap.put(PLUS_SIGN, PLUS_SIGN); diallableCharMap.put('*', '*'); diallableCharMap.put('#', '#'); DIALLABLE_CHAR_MAPPINGS = Collections.unmodifiableMap(diallableCharMap); - HashMap<Character, Character> allPlusNumberGroupings = new HashMap<Character, Character>(); + HashMap<Character, Character> allPlusNumberGroupings = new HashMap<>(); // Put (lower letter -> upper letter) and (upper letter -> upper letter) mappings. for (char c : ALPHA_MAPPINGS.keySet()) { allPlusNumberGroupings.put(Character.toLowerCase(c), c); @@ -310,8 +307,8 @@ public class PhoneNumberUtil { // version. private static final String EXTN_PATTERNS_FOR_PARSING = createExtnPattern(true); static final String EXTN_PATTERNS_FOR_MATCHING = createExtnPattern(false); - - /** + + /** * Helper method for constructing regular expressions for parsing. Creates an expression that * captures up to maxLength digits. */ @@ -692,7 +689,7 @@ public class PhoneNumberUtil { // The set of regions that share country calling code 1. // There are roughly 26 regions. // We set the initial capacity of the HashSet to 35 to offer a load factor of roughly 0.75. - private final Set<String> nanpaRegions = new HashSet<String>(35); + private final Set<String> nanpaRegions = new HashSet<>(35); // A cache for frequently used region-specific regular expressions. // The initial capacity is set to 100 as this seems to be an optimal value for Android, based on @@ -702,11 +699,11 @@ public class PhoneNumberUtil { // The set of regions the library supports. // There are roughly 240 of them and we set the initial capacity of the HashSet to 320 to offer a // load factor of roughly 0.75. - private final Set<String> supportedRegions = new HashSet<String>(320); + private final Set<String> supportedRegions = new HashSet<>(320); // 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<Integer>(); + private final Set<Integer> countryCodesForNonGeographicalRegion = new HashSet<>(); /** * This class implements a singleton, the constructor is only visible to facilitate testing. @@ -1122,7 +1119,7 @@ public class PhoneNumberUtil { * be non-null. */ private Set<PhoneNumberType> getSupportedTypesForMetadata(PhoneMetadata metadata) { - Set<PhoneNumberType> types = new TreeSet<PhoneNumberType>(); + Set<PhoneNumberType> types = new TreeSet<>(); for (PhoneNumberType type : PhoneNumberType.values()) { if (type == PhoneNumberType.FIXED_LINE_OR_MOBILE || type == PhoneNumberType.UNKNOWN) { // Never return FIXED_LINE_OR_MOBILE (it is a convenience type, and represents that a @@ -1183,7 +1180,9 @@ public class PhoneNumberUtil { @android.compat.annotation.UnsupportedAppUsage public static synchronized PhoneNumberUtil getInstance() { if (instance == null) { - setInstance(createInstance(MetadataManager.DEFAULT_METADATA_LOADER)); + MetadataLoader metadataLoader = DefaultMetadataDependenciesProvider.getInstance() + .getMetadataLoader(); + setInstance(createInstance(metadataLoader)); } return instance; } @@ -1204,7 +1203,11 @@ public class PhoneNumberUtil { if (metadataLoader == null) { throw new IllegalArgumentException("metadataLoader could not be null."); } - return createInstance(new MultiFileMetadataSourceImpl(metadataLoader)); + return createInstance(new MetadataSourceImpl( + DefaultMetadataDependenciesProvider.getInstance().getPhoneNumberMetadataFileNameProvider(), + metadataLoader, + DefaultMetadataDependenciesProvider.getInstance().getMetadataParser() + )); } /** @@ -1499,10 +1502,7 @@ public class PhoneNumberUtil { (numberType == PhoneNumberType.FIXED_LINE) || (numberType == PhoneNumberType.MOBILE) || (numberType == PhoneNumberType.FIXED_LINE_OR_MOBILE); // Carrier codes may be needed in some countries. We handle this here. - if (regionCode.equals("CO") && numberType == PhoneNumberType.FIXED_LINE) { - formattedNumber = - formatNationalNumberWithCarrierCode(numberNoExt, COLOMBIA_MOBILE_TO_FIXED_LINE_PREFIX); - } else if (regionCode.equals("BR") && isFixedLineOrMobile) { + if (regionCode.equals("BR") && isFixedLineOrMobile) { // Historically, we set this to an empty string when parsing with raw input if none was // found in the input string. However, this doesn't result in a number we can dial. For this // reason, we treat the empty string the same as if it isn't set at all. @@ -1643,19 +1643,21 @@ public class PhoneNumberUtil { } /** - * Formats a phone number using the original phone number format that the number is parsed from. - * The original format is embedded in the country_code_source field of the PhoneNumber object - * passed in. If such information is missing, the number will be formatted into the NATIONAL - * format by default. When we don't have a formatting pattern for the number, the method returns - * the raw input when it is available. + * Formats a phone number using the original phone number format (e.g. INTERNATIONAL or NATIONAL) + * that the number is parsed from, provided that the number has been parsed with {@link + * parseAndKeepRawInput}. Otherwise the number will be formatted in NATIONAL format. + * + * <p>The original format is embedded in the country_code_source field of the PhoneNumber object + * passed in, which is only set when parsing keeps the raw input. When we don't have a formatting + * pattern for the number, the method falls back to returning the raw input. * - * Note this method guarantees no digit will be inserted, removed or modified as a result of + * <p>Note this method guarantees no digit will be inserted, removed or modified as a result of * formatting. * - * @param number the phone number that needs to be formatted in its original number format - * @param regionCallingFrom the region whose IDD needs to be prefixed if the original number - * has one - * @return the formatted phone number in its original number format + * @param number the phone number that needs to be formatted in its original number format + * @param regionCallingFrom the region whose IDD needs to be prefixed if the original number has + * one + * @return the formatted phone number in its original number format */ @android.compat.annotation.UnsupportedAppUsage public String formatInOriginalFormat(PhoneNumber number, String regionCallingFrom) { @@ -1735,7 +1737,7 @@ public class PhoneNumberUtil { NumberFormat.Builder numFormatCopy = NumberFormat.newBuilder(); numFormatCopy.mergeFrom(formatRule); numFormatCopy.clearNationalPrefixFormattingRule(); - List<NumberFormat> numberFormats = new ArrayList<NumberFormat>(1); + List<NumberFormat> numberFormats = new ArrayList<>(1); numberFormats.add(numFormatCopy.build()); formattedNumber = formatByPattern(number, PhoneNumberFormat.NATIONAL, numberFormats); break; @@ -2313,21 +2315,42 @@ public class PhoneNumberUtil { } /** - * Returns the metadata for the given region code or {@code null} if the region code is invalid - * or unknown. + * Returns the metadata for the given region code or {@code null} if the region code is invalid or + * unknown. + * + * @throws MissingMetadataException if the region code is valid, but metadata cannot be found. */ PhoneMetadata getMetadataForRegion(String regionCode) { if (!isValidRegionCode(regionCode)) { return null; } - return metadataSource.getMetadataForRegion(regionCode); + PhoneMetadata phoneMetadata = metadataSource.getMetadataForRegion(regionCode); + ensureMetadataIsNonNull(phoneMetadata, "Missing metadata for region code " + regionCode); + return phoneMetadata; } + /** + * 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 (!countryCallingCodeToRegionCodeMap.containsKey(countryCallingCode)) { + if (!countryCodesForNonGeographicalRegion.contains(countryCallingCode)) { return null; } - return metadataSource.getMetadataForNonGeographicalRegion(countryCallingCode); + PhoneMetadata phoneMetadata = metadataSource.getMetadataForNonGeographicalRegion( + countryCallingCode); + ensureMetadataIsNonNull(phoneMetadata, + "Missing metadata for country code " + countryCallingCode); + return phoneMetadata; + } + + private static void ensureMetadataIsNonNull(PhoneMetadata phoneMetadata, String message) { + if (phoneMetadata == null) { + throw new MissingMetadataException(message); + } } boolean isNumberMatchingDesc(String nationalNumber, PhoneNumberDesc numberDesc) { @@ -2627,7 +2650,7 @@ public class PhoneNumberUtil { PhoneNumberDesc mobileDesc = getNumberDescByType(metadata, PhoneNumberType.MOBILE); if (descHasPossibleNumberData(mobileDesc)) { // Merge the mobile data in if there was any. We have to make a copy to do this. - possibleLengths = new ArrayList<Integer>(possibleLengths); + possibleLengths = new ArrayList<>(possibleLengths); // Note that when adding the possible lengths from mobile, we have to again check they // aren't empty since if they are this indicates they are the same as the general desc and // should be obtained from there. @@ -2641,7 +2664,7 @@ public class PhoneNumberUtil { if (localLengths.isEmpty()) { localLengths = mobileDesc.getPossibleLengthLocalOnlyList(); } else { - localLengths = new ArrayList<Integer>(localLengths); + localLengths = new ArrayList<>(localLengths); localLengths.addAll(mobileDesc.getPossibleLengthLocalOnlyList()); Collections.sort(localLengths); } diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/ShortNumberInfo.java b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/ShortNumberInfo.java index a09b9228..64c2c743 100644 --- a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/ShortNumberInfo.java +++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/ShortNumberInfo.java @@ -23,6 +23,8 @@ import com.android.i18n.phonenumbers.Phonemetadata.PhoneMetadata; import com.android.i18n.phonenumbers.Phonemetadata.PhoneNumberDesc; import com.android.i18n.phonenumbers.Phonenumber.PhoneNumber; +import com.android.i18n.phonenumbers.metadata.DefaultMetadataDependenciesProvider; +import com.android.i18n.phonenumbers.metadata.source.RegionMetadataSource; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; @@ -46,12 +48,13 @@ public class ShortNumberInfo { private static final Logger logger = Logger.getLogger(ShortNumberInfo.class.getName()); private static final ShortNumberInfo INSTANCE = - new ShortNumberInfo(RegexBasedMatcher.create()); + new ShortNumberInfo( + RegexBasedMatcher.create(), + DefaultMetadataDependenciesProvider.getInstance().getShortNumberMetadataSource()); // In these countries, if extra digits are added to an emergency number, it no longer connects // to the emergency service. - private static final Set<String> REGIONS_WHERE_EMERGENCY_NUMBERS_MUST_BE_EXACT = - new HashSet<String>(); + private static final Set<String> REGIONS_WHERE_EMERGENCY_NUMBERS_MUST_BE_EXACT = new HashSet<>(); static { REGIONS_WHERE_EMERGENCY_NUMBERS_MUST_BE_EXACT.add("BR"); REGIONS_WHERE_EMERGENCY_NUMBERS_MUST_BE_EXACT.add("CL"); @@ -64,7 +67,7 @@ public class ShortNumberInfo { TOLL_FREE, STANDARD_RATE, PREMIUM_RATE, - UNKNOWN_COST; + UNKNOWN_COST } /** Returns the singleton instance of the ShortNumberInfo. */ @@ -82,9 +85,13 @@ public class ShortNumberInfo { // first. private final Map<Integer, List<String>> countryCallingCodeToRegionCodeMap; + private final RegionMetadataSource shortNumberMetadataSource; + // @VisibleForTesting - ShortNumberInfo(MatcherApi matcherApi) { + ShortNumberInfo(MatcherApi matcherApi, + RegionMetadataSource shortNumberMetadataSource) { this.matcherApi = matcherApi; + this.shortNumberMetadataSource = shortNumberMetadataSource; // TODO: Create ShortNumberInfo for a given map this.countryCallingCodeToRegionCodeMap = CountryCodeToRegionCodeMap.getCountryCodeToRegionCodeMap(); @@ -112,6 +119,21 @@ public class ShortNumberInfo { } /** + * A thin wrapper around {@code shortNumberMetadataSource} which catches {@link + * IllegalArgumentException} for invalid region code and instead returns {@code null} + */ + private PhoneMetadata getShortNumberMetadataForRegion(String regionCode) { + if (regionCode == null) { + return null; + } + try { + return shortNumberMetadataSource.getMetadataForRegion(regionCode); + } catch (IllegalArgumentException e) { + return null; + } + } + + /** * Check whether a short number is a possible number when dialed from the given region. This * provides a more lenient check than {@link #isValidShortNumberForRegion}. * @@ -123,8 +145,7 @@ public class ShortNumberInfo { if (!regionDialingFromMatchesNumber(number, regionDialingFrom)) { return false; } - PhoneMetadata phoneMetadata = - MetadataManager.getShortNumberMetadataForRegion(regionDialingFrom); + PhoneMetadata phoneMetadata = getShortNumberMetadataForRegion(regionDialingFrom); if (phoneMetadata == null) { return false; } @@ -145,7 +166,7 @@ public class ShortNumberInfo { List<String> regionCodes = getRegionCodesForCountryCode(number.getCountryCode()); int shortNumberLength = getNationalSignificantNumber(number).length(); for (String region : regionCodes) { - PhoneMetadata phoneMetadata = MetadataManager.getShortNumberMetadataForRegion(region); + PhoneMetadata phoneMetadata = getShortNumberMetadataForRegion(region); if (phoneMetadata == null) { continue; } @@ -169,8 +190,7 @@ public class ShortNumberInfo { if (!regionDialingFromMatchesNumber(number, regionDialingFrom)) { return false; } - PhoneMetadata phoneMetadata = - MetadataManager.getShortNumberMetadataForRegion(regionDialingFrom); + PhoneMetadata phoneMetadata = getShortNumberMetadataForRegion(regionDialingFrom); if (phoneMetadata == null) { return false; } @@ -231,8 +251,7 @@ public class ShortNumberInfo { return ShortNumberCost.UNKNOWN_COST; } // Note that regionDialingFrom may be null, in which case phoneMetadata will also be null. - PhoneMetadata phoneMetadata = MetadataManager.getShortNumberMetadataForRegion( - regionDialingFrom); + PhoneMetadata phoneMetadata = getShortNumberMetadataForRegion(regionDialingFrom); if (phoneMetadata == null) { return ShortNumberCost.UNKNOWN_COST; } @@ -329,7 +348,7 @@ public class ShortNumberInfo { } String nationalNumber = getNationalSignificantNumber(number); for (String regionCode : regionCodes) { - PhoneMetadata phoneMetadata = MetadataManager.getShortNumberMetadataForRegion(regionCode); + PhoneMetadata phoneMetadata = getShortNumberMetadataForRegion(regionCode); if (phoneMetadata != null && matchesPossibleNumberAndNationalNumber(nationalNumber, phoneMetadata.getShortCode())) { // The number is valid for this region. @@ -340,13 +359,6 @@ public class ShortNumberInfo { } /** - * Convenience method to get a list of what regions the library has metadata for. - */ - Set<String> getSupportedRegions() { - return MetadataManager.getSupportedShortNumberRegions(); - } - - /** * Gets a valid short number for the specified region. * * @param regionCode the region for which an example short number is needed @@ -355,7 +367,7 @@ public class ShortNumberInfo { */ // @VisibleForTesting String getExampleShortNumber(String regionCode) { - PhoneMetadata phoneMetadata = MetadataManager.getShortNumberMetadataForRegion(regionCode); + PhoneMetadata phoneMetadata = getShortNumberMetadataForRegion(regionCode); if (phoneMetadata == null) { return ""; } @@ -376,7 +388,7 @@ public class ShortNumberInfo { */ // @VisibleForTesting String getExampleShortNumberForCost(String regionCode, ShortNumberCost cost) { - PhoneMetadata phoneMetadata = MetadataManager.getShortNumberMetadataForRegion(regionCode); + PhoneMetadata phoneMetadata = getShortNumberMetadataForRegion(regionCode); if (phoneMetadata == null) { return ""; } @@ -444,7 +456,7 @@ public class ShortNumberInfo { // add additional logic here to handle it. return false; } - PhoneMetadata metadata = MetadataManager.getShortNumberMetadataForRegion(regionCode); + PhoneMetadata metadata = getShortNumberMetadataForRegion(regionCode); if (metadata == null || !metadata.hasEmergency()) { return false; } @@ -471,7 +483,7 @@ public class ShortNumberInfo { List<String> regionCodes = getRegionCodesForCountryCode(number.getCountryCode()); String regionCode = getRegionCodeForShortNumberFromRegionList(number, regionCodes); String nationalNumber = getNationalSignificantNumber(number); - PhoneMetadata phoneMetadata = MetadataManager.getShortNumberMetadataForRegion(regionCode); + PhoneMetadata phoneMetadata = getShortNumberMetadataForRegion(regionCode); return (phoneMetadata != null) && (matchesPossibleNumberAndNationalNumber(nationalNumber, phoneMetadata.getCarrierSpecific())); @@ -495,8 +507,7 @@ public class ShortNumberInfo { return false; } String nationalNumber = getNationalSignificantNumber(number); - PhoneMetadata phoneMetadata = - MetadataManager.getShortNumberMetadataForRegion(regionDialingFrom); + PhoneMetadata phoneMetadata = getShortNumberMetadataForRegion(regionDialingFrom); return (phoneMetadata != null) && (matchesPossibleNumberAndNationalNumber(nationalNumber, phoneMetadata.getCarrierSpecific())); @@ -519,8 +530,7 @@ public class ShortNumberInfo { if (!regionDialingFromMatchesNumber(number, regionDialingFrom)) { return false; } - PhoneMetadata phoneMetadata = - MetadataManager.getShortNumberMetadataForRegion(regionDialingFrom); + PhoneMetadata phoneMetadata = getShortNumberMetadataForRegion(regionDialingFrom); return phoneMetadata != null && matchesPossibleNumberAndNationalNumber(getNationalSignificantNumber(number), phoneMetadata.getSmsServices()); diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/ShortNumbersRegionCodeSet.java b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/ShortNumbersRegionCodeSet.java index 12f1745c..227881cb 100644 --- a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/ShortNumbersRegionCodeSet.java +++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/ShortNumbersRegionCodeSet.java @@ -29,7 +29,7 @@ import java.util.Set; */ public class ShortNumbersRegionCodeSet { // A set of all region codes for which data is available. - static Set<String> getRegionCodeSet() { + public static Set<String> getRegionCodeSet() { // The capacity is set to 321 as there are 241 different entries, // and this offers a load factor of roughly 0.75. Set<String> regionCodeSet = new HashSet<String>(321); diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/SingleFileMetadataSourceImpl.java b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/SingleFileMetadataSourceImpl.java deleted file mode 100644 index 8b15cbb8..00000000 --- a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/SingleFileMetadataSourceImpl.java +++ /dev/null @@ -1,66 +0,0 @@ -/* GENERATED SOURCE. DO NOT MODIFY. */ -/* - * Copyright (C) 2015 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.android.i18n.phonenumbers; - -import com.android.i18n.phonenumbers.Phonemetadata.PhoneMetadata; -import java.util.concurrent.atomic.AtomicReference; - -/** - * Implementation of {@link MetadataSource} that reads from a single resource file. - */ -final class SingleFileMetadataSourceImpl implements MetadataSource { - // The name of the binary file containing phone number metadata for different regions. - // This enables us to set up with different metadata, such as for testing. - private final String phoneNumberMetadataFileName; - - // The {@link MetadataLoader} used to inject alternative metadata sources. - private final MetadataLoader metadataLoader; - - private final AtomicReference<MetadataManager.SingleFileMetadataMaps> phoneNumberMetadataRef = - new AtomicReference<MetadataManager.SingleFileMetadataMaps>(); - - // It is assumed that metadataLoader is not null. Checks should happen before passing it in here. - // @VisibleForTesting - SingleFileMetadataSourceImpl(String phoneNumberMetadataFileName, MetadataLoader metadataLoader) { - this.phoneNumberMetadataFileName = phoneNumberMetadataFileName; - this.metadataLoader = metadataLoader; - } - - // It is assumed that metadataLoader is not null. Checks should happen before passing it in here. - SingleFileMetadataSourceImpl(MetadataLoader metadataLoader) { - this(MetadataManager.SINGLE_FILE_PHONE_NUMBER_METADATA_FILE_NAME, metadataLoader); - } - - @Override - public PhoneMetadata getMetadataForRegion(String regionCode) { - return MetadataManager.getSingleFileMetadataMaps(phoneNumberMetadataRef, - phoneNumberMetadataFileName, metadataLoader).get(regionCode); - } - - @Override - public PhoneMetadata getMetadataForNonGeographicalRegion(int countryCallingCode) { - // A country calling code is non-geographical if it only maps to the non-geographical region - // code, i.e. "001". If this is not true of the given country calling code, then we will return - // null here. If not for the atomic reference, such as if we were loading in multiple stages, we - // would check that the passed in country calling code was indeed non-geographical to avoid - // loading costs for a null result. Here though we do not check this since the entire data must - // be loaded anyway if any of it is needed at some point in the life cycle of this class. - return MetadataManager.getSingleFileMetadataMaps(phoneNumberMetadataRef, - phoneNumberMetadataFileName, metadataLoader).get(countryCallingCode); - } -} diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_375 b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_375 Binary files differdeleted file mode 100644 index b7d8cacd..00000000 --- a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_375 +++ /dev/null diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_380 b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_380 Binary files differindex 874e5e13..f01473b5 100644 --- a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_380 +++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_380 diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_49 b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_49 Binary files differindex d169d31e..fdb9f55c 100644 --- a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_49 +++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_49 diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_63 b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_63 Binary files differdeleted file mode 100644 index e6f03ad1..00000000 --- a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_63 +++ /dev/null diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_800 b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_800 Binary files differindex 6806a009..f4091758 100644 --- a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_800 +++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_800 diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AG b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AG Binary files differindex dfe50786..600f043a 100644 --- a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AG +++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AG diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AI b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AI Binary files differindex 6ba5be41..50c61861 100644 --- a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AI +++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AI diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AO b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AO Binary files differindex 894d4fab..09ca4ed5 100644 --- a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AO +++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AO diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AR b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AR Binary files differindex 41c00923..dd6e97b0 100644 --- a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AR +++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AR diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AS b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AS Binary files differindex 29424fbe..8fd93bf2 100644 --- a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AS +++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AS diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AT b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AT Binary files differindex a54f4ca3..c9dc3115 100644 --- a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AT +++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_AT diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BB b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BB Binary files differindex 339334bf..51ce25ba 100644 --- a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BB +++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BB diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BE b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BE Binary files differindex 01bb8dac..d3feed89 100644 --- a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BE +++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BE diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BF b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BF Binary files differindex dc01444b..2bcb8e83 100644 --- a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BF +++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BF diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BJ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BJ Binary files differindex bb43464a..09d12540 100644 --- a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BJ +++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BJ diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BM b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BM Binary files differindex efa9b058..4a01f606 100644 --- a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BM +++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BM diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BR b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BR Binary files differindex ed648e4b..6a1c9818 100644 --- a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BR +++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BR diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BS b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BS Binary files differindex 6ccdd69a..73e27753 100644 --- a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BS +++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BS diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BW b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BW Binary files differindex e1cab68c..ca363123 100644 --- a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BW +++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_BW diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CA b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CA Binary files differindex 5e981c85..b9ee37d2 100644 --- a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CA +++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CA diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CL b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CL Binary files differindex ddebc8f7..6bc75af5 100644 --- a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CL +++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CL diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CM b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CM Binary files differindex 283e679d..5fc149d4 100644 --- a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CM +++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CM diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CN b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CN Binary files differindex 3f7fcbbc..95fc994a 100644 --- a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CN +++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CN diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CO b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CO Binary files differindex 492f70af..b2942a98 100644 --- a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CO +++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_CO diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_DE b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_DE Binary files differindex ebb5fb49..4be09b00 100644 --- a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_DE +++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_DE diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_DM b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_DM Binary files differindex 2b89782e..4075371b 100644 --- a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_DM +++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_DM diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_DO b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_DO Binary files differindex 5a7271eb..245f2c6c 100644 --- a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_DO +++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_DO diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_EE b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_EE Binary files differindex cdfd1f86..fbe8f680 100644 --- a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_EE +++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_EE diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_EH b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_EH Binary files differindex 43163312..c91bbb61 100644 --- a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_EH +++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_EH diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_ET b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_ET Binary files differindex 33d742f9..bbc37a6f 100644 --- a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_ET +++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_ET diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_FO b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_FO Binary files differindex c7ee185a..9fea3ab0 100644 --- a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_FO +++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_FO diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_FR b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_FR Binary files differindex d52abcfc..80847ce0 100644 --- a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_FR +++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_FR diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GB b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GB Binary files differindex b11e9fda..12d9f4a7 100644 --- a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GB +++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GB diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GD b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GD Binary files differindex e11e957c..5538023d 100644 --- a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GD +++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GD diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GE b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GE Binary files differindex 009e48ab..eb003a64 100644 --- a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GE +++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GE diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GF b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GF Binary files differindex 8a056eb2..f6d9e149 100644 --- a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GF +++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GF diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GG b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GG Binary files differindex e1da75ca..c765fb03 100644 --- a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GG +++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GG diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GH b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GH Binary files differindex 296fcf9d..45e6bc8f 100644 --- a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GH +++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GH diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GP b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GP Binary files differindex d0da8506..2633c4ad 100644 --- a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GP +++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GP diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GU b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GU Binary files differindex f6a759c8..5ccbef1a 100644 --- a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GU +++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_GU diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_HK b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_HK Binary files differindex 7d938623..7b464ce8 100644 --- a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_HK +++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_HK diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_HN b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_HN Binary files differindex 00752953..883376c4 100644 --- a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_HN +++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_HN diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_HR b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_HR Binary files differindex 11de05ac..a38c7113 100644 --- a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_HR +++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_HR diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_IL b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_IL Binary files differindex 993af32f..2a4a84c8 100644 --- a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_IL +++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_IL diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_IR b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_IR Binary files differindex 8a720626..43229559 100644 --- a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_IR +++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_IR diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_IS b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_IS Binary files differindex c75dce67..857459b8 100644 --- a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_IS +++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_IS diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_IT b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_IT Binary files differindex 0cea04e8..d7001a5f 100644 --- a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_IT +++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_IT diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_JE b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_JE Binary files differindex bd6d7e51..0393a859 100644 --- a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_JE +++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_JE diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_JM b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_JM Binary files differindex fa01bc2c..ca4265cc 100644 --- a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_JM +++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_JM diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_JP b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_JP Binary files differindex 97585357..3ac3c9de 100644 --- a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_JP +++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_JP diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_KE b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_KE Binary files differindex ec6030f6..85766380 100644 --- a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_KE +++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_KE diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_KG b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_KG Binary files differindex 7672fa34..eeff6fe0 100644 --- a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_KG +++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_KG diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_KN b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_KN Binary files differindex 0c9dd320..1bf09f59 100644 --- a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_KN +++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_KN diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_KY b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_KY Binary files differindex 4ba22785..da2f3cf0 100644 --- a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_KY +++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_KY diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_LC b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_LC Binary files differindex 85135ca2..36adc17f 100644 --- a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_LC +++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_LC diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MA b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MA Binary files differindex 47c2eec0..25cac90d 100644 --- a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MA +++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MA diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MH b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MH Binary files differindex a29c69d8..fc1542b9 100644 --- a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MH +++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MH diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_ML b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_ML Binary files differindex 7efdbaee..cabf18c5 100644 --- a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_ML +++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_ML diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MM b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MM Binary files differindex dbd636e5..c4e58998 100644 --- a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MM +++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MM diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MN b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MN Binary files differindex 5ab6a0d6..2723b92c 100644 --- a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MN +++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MN diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MP b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MP Binary files differindex 41b92f5b..51eaccdc 100644 --- a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MP +++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MP diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MQ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MQ Binary files differindex f8b5f35c..a53de1f6 100644 --- a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MQ +++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MQ diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MS b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MS Binary files differindex 51ff6a48..a51b808d 100644 --- a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MS +++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MS diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MT b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MT Binary files differindex cde7ce65..e7133bec 100644 --- a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MT +++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MT diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MV b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MV Binary files differindex 365bafd7..22fc4c93 100644 --- a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MV +++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MV diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MX b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MX Binary files differindex a885cb56..8c6a632c 100644 --- a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MX +++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MX diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MY b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MY Binary files differindex 4622c358..9317fcae 100644 --- a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MY +++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_MY diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_NC b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_NC Binary files differindex 21951ced..486c78a0 100644 --- a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_NC +++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_NC diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_NL b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_NL Binary files differindex 852c356a..4ee5e60c 100644 --- a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_NL +++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_NL diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_NP b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_NP Binary files differindex 36dc1e39..6b02afaa 100644 --- a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_NP +++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_NP diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_NZ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_NZ Binary files differindex 49e38ad9..05a1d226 100644 --- a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_NZ +++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_NZ diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_PA b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_PA Binary files differindex 6ec881ff..e1eddfda 100644 --- a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_PA +++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_PA diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_PE b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_PE Binary files differindex 45b707a5..db7408c2 100644 --- a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_PE +++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_PE diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_PG b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_PG Binary files differindex 81dd47e2..f68e5223 100644 --- a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_PG +++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_PG diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_PM b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_PM Binary files differindex 305b85e9..257a20e6 100644 --- a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_PM +++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_PM diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_PR b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_PR Binary files differindex 67735fad..204e12d5 100644 --- a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_PR +++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_PR diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_PT b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_PT Binary files differindex 15e4a2a7..53563095 100644 --- a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_PT +++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_PT diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_QA b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_QA Binary files differindex 857b6d9b..1ae59572 100644 --- a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_QA +++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_QA diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_RE b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_RE Binary files differindex dddb34ea..62d1a5d1 100644 --- a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_RE +++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_RE diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SE b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SE Binary files differindex fb9422cc..170d0d5c 100644 --- a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SE +++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SE diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SG b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SG Binary files differindex d3d777cf..eadddf85 100644 --- a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SG +++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SG diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SI b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SI Binary files differindex 0e2e60c2..9b044f61 100644 --- a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SI +++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SI diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SX b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SX Binary files differindex b0fd135b..4b330f71 100644 --- a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SX +++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SX diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SY b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SY Binary files differindex 1f1ce10f..b2d56078 100644 --- a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SY +++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_SY diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_TC b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_TC Binary files differindex 23c56495..ce6cd976 100644 --- a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_TC +++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_TC diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_TT b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_TT Binary files differindex ddbeb93b..ae0d173b 100644 --- a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_TT +++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_TT diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_UA b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_UA Binary files differindex 76b49f27..ed30c934 100644 --- a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_UA +++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_UA diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_UG b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_UG Binary files differindex d08e73c7..ee2e0579 100644 --- a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_UG +++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_UG diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_US b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_US Binary files differindex f8859190..6fad5941 100644 --- a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_US +++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_US diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_VC b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_VC Binary files differindex 7cfd32e7..a94967ad 100644 --- a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_VC +++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_VC diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_VG b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_VG Binary files differindex 057bc582..87aa6c65 100644 --- a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_VG +++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_VG diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_VI b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_VI Binary files differindex b340ff45..0e99feaa 100644 --- a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_VI +++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_VI diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_VN b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_VN Binary files differindex 0a8fd5af..d7470ecd 100644 --- a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_VN +++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_VN diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_YT b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_YT Binary files differindex cec9da09..728c7e64 100644 --- a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_YT +++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto_YT diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_AT b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_AT Binary files differindex 1947aa2a..ecfe1344 100644 --- a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_AT +++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto_AT diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/internal/GeoEntityUtility.java b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/internal/GeoEntityUtility.java new file mode 100644 index 00000000..e4576344 --- /dev/null +++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/internal/GeoEntityUtility.java @@ -0,0 +1,58 @@ +/* GENERATED SOURCE. DO NOT MODIFY. */ +/* + * 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.android.i18n.phonenumbers.internal; + +import com.android.i18n.phonenumbers.CountryCodeToRegionCodeMap; +import java.util.List; + +/** + * Utility class for checking whether identifiers region code and country calling code belong + * to geographical entities. For more information about geo vs. non-geo entities see {@link + * com.android.i18n.phonenumbers.metadata.source.RegionMetadataSource} and {@link + * com.android.i18n.phonenumbers.metadata.source.NonGeographicalEntityMetadataSource} + * @hide This class is not part of the Android public SDK API + */ +public final class GeoEntityUtility { + + /** Region code with a special meaning, used to mark non-geographical entities */ + public static final String REGION_CODE_FOR_NON_GEO_ENTITIES = "001"; + + /** Determines whether {@code regionCode} belongs to a geographical entity. */ + public static boolean isGeoEntity(String regionCode) { + return !regionCode.equals(REGION_CODE_FOR_NON_GEO_ENTITIES); + } + + /** + * Determines whether {@code countryCallingCode} belongs to a geographical entity. + * + * <p>A single country calling code could map to several different regions. It is considered that + * {@code countryCallingCode} belongs to a geo entity if all of these regions are geo entities + * + * <p>Note that this method will not throw an exception even when the underlying mapping for the + * {@code countryCallingCode} does not exist, instead it will return {@code false} + */ + public static boolean isGeoEntity(int countryCallingCode) { + List<String> regionCodesForCountryCallingCode = + CountryCodeToRegionCodeMap.getCountryCodeToRegionCodeMap().get(countryCallingCode); + + return regionCodesForCountryCallingCode != null + && !regionCodesForCountryCallingCode.contains(REGION_CODE_FOR_NON_GEO_ENTITIES); + } + + private GeoEntityUtility() {} +} diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/metadata/DefaultMetadataDependenciesProvider.java b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/metadata/DefaultMetadataDependenciesProvider.java new file mode 100644 index 00000000..cca19b90 --- /dev/null +++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/metadata/DefaultMetadataDependenciesProvider.java @@ -0,0 +1,117 @@ +/* GENERATED SOURCE. DO NOT MODIFY. */ +/* + * 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.android.i18n.phonenumbers.metadata; + +import com.android.i18n.phonenumbers.MetadataLoader; +import com.android.i18n.phonenumbers.metadata.init.ClassPathResourceMetadataLoader; +import com.android.i18n.phonenumbers.metadata.init.MetadataParser; +import com.android.i18n.phonenumbers.metadata.source.FormattingMetadataSource; +import com.android.i18n.phonenumbers.metadata.source.FormattingMetadataSourceImpl; +import com.android.i18n.phonenumbers.metadata.source.MetadataSource; +import com.android.i18n.phonenumbers.metadata.source.MetadataSourceImpl; +import com.android.i18n.phonenumbers.metadata.source.MultiFileModeFileNameProvider; +import com.android.i18n.phonenumbers.metadata.source.PhoneMetadataFileNameProvider; +import com.android.i18n.phonenumbers.metadata.source.RegionMetadataSource; +import com.android.i18n.phonenumbers.metadata.source.RegionMetadataSourceImpl; + +/** + * Provides metadata init and source dependencies when metadata is stored in multi-file mode and + * loaded as a classpath resource. + * @hide This class is not part of the Android public SDK API + */ +public final class DefaultMetadataDependenciesProvider { + + private static final DefaultMetadataDependenciesProvider INSTANCE = new DefaultMetadataDependenciesProvider(); + + public static DefaultMetadataDependenciesProvider getInstance() { + return INSTANCE; + } + + private DefaultMetadataDependenciesProvider() { + } + + private final MetadataParser metadataParser = MetadataParser.newLenientParser(); + private final MetadataLoader metadataLoader = new ClassPathResourceMetadataLoader(); + + private final PhoneMetadataFileNameProvider phoneNumberMetadataFileNameProvider = + new MultiFileModeFileNameProvider( + "/com/android/i18n/phonenumbers/data/PhoneNumberMetadataProto"); + private final MetadataSource phoneNumberMetadataSource = + new MetadataSourceImpl( + phoneNumberMetadataFileNameProvider, + metadataLoader, + metadataParser); + + private final PhoneMetadataFileNameProvider shortNumberMetadataFileNameProvider = + new MultiFileModeFileNameProvider( + "/com/android/i18n/phonenumbers/data/ShortNumberMetadataProto"); + private final RegionMetadataSource shortNumberMetadataSource = + new RegionMetadataSourceImpl( + shortNumberMetadataFileNameProvider, + metadataLoader, + metadataParser); + + private final PhoneMetadataFileNameProvider alternateFormatsMetadataFileNameProvider = + new MultiFileModeFileNameProvider( + "/com/android/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto"); + private final FormattingMetadataSource alternateFormatsMetadataSource = + new FormattingMetadataSourceImpl( + alternateFormatsMetadataFileNameProvider, + metadataLoader, + metadataParser); + + public MetadataParser getMetadataParser() { + return metadataParser; + } + + public MetadataLoader getMetadataLoader() { + return metadataLoader; + } + + public PhoneMetadataFileNameProvider getPhoneNumberMetadataFileNameProvider() { + return phoneNumberMetadataFileNameProvider; + } + + public MetadataSource getPhoneNumberMetadataSource() { + return phoneNumberMetadataSource; + } + + public PhoneMetadataFileNameProvider getShortNumberMetadataFileNameProvider() { + return shortNumberMetadataFileNameProvider; + } + + public RegionMetadataSource getShortNumberMetadataSource() { + return shortNumberMetadataSource; + } + + public PhoneMetadataFileNameProvider getAlternateFormatsMetadataFileNameProvider() { + return alternateFormatsMetadataFileNameProvider; + } + + public FormattingMetadataSource getAlternateFormatsMetadataSource() { + return alternateFormatsMetadataSource; + } + + public String getCarrierDataDirectory() { + return "/com/android/i18n/phonenumbers/carrier/data/"; + } + + public String getGeocodingDataDirectory() { + return "/com/android/i18n/phonenumbers/geocoding/data/"; + } +} diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/metadata/init/ClassPathResourceMetadataLoader.java b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/metadata/init/ClassPathResourceMetadataLoader.java new file mode 100644 index 00000000..4a5d4738 --- /dev/null +++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/metadata/init/ClassPathResourceMetadataLoader.java @@ -0,0 +1,44 @@ +/* GENERATED SOURCE. DO NOT MODIFY. */ +/* + * 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.android.i18n.phonenumbers.metadata.init; + +import com.android.i18n.phonenumbers.MetadataLoader; +import java.io.InputStream; +import java.util.logging.Level; +import java.util.logging.Logger; + +/** + * A {@link MetadataLoader} implementation that reads phone number metadata files as classpath + * resources. + * @hide This class is not part of the Android public SDK API + */ +public final class ClassPathResourceMetadataLoader implements MetadataLoader { + + private static final Logger logger = + Logger.getLogger(ClassPathResourceMetadataLoader.class.getName()); + + @Override + public InputStream loadMetadata(String metadataFileName) { + InputStream inputStream = + ClassPathResourceMetadataLoader.class.getResourceAsStream(metadataFileName); + if (inputStream == null) { + logger.log(Level.WARNING, String.format("File %s not found", metadataFileName)); + } + return inputStream; + } +}
\ No newline at end of file diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/metadata/init/MetadataParser.java b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/metadata/init/MetadataParser.java new file mode 100644 index 00000000..2f045232 --- /dev/null +++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/metadata/init/MetadataParser.java @@ -0,0 +1,110 @@ +/* GENERATED SOURCE. DO NOT MODIFY. */ +/* + * 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.android.i18n.phonenumbers.metadata.init; + +import com.android.i18n.phonenumbers.Phonemetadata.PhoneMetadata; +import com.android.i18n.phonenumbers.Phonemetadata.PhoneMetadataCollection; +import java.io.IOException; +import java.io.InputStream; +import java.io.ObjectInputStream; +import java.util.Collection; +import java.util.Collections; +import java.util.List; +import java.util.logging.Level; +import java.util.logging.Logger; + +/** + * Exposes single method for parsing {@link InputStream} content into {@link Collection} of {@link + * PhoneMetadata} + * @hide This class is not part of the Android public SDK API + */ +public final class MetadataParser { + + private static final Logger logger = Logger.getLogger(MetadataParser.class.getName()); + + /** + * Creates new instance in lenient mode, see {@link MetadataParser#parse(InputStream)} for more + * info. + */ + public static MetadataParser newLenientParser() { + return new MetadataParser(false); + } + + /** + * Creates new instance in strict mode, see {@link MetadataParser#parse(InputStream)} for more + * info + */ + public static MetadataParser newStrictParser() { + return new MetadataParser(true); + } + + private final boolean strictMode; + + private MetadataParser(boolean strictMode) { + this.strictMode = strictMode; + } + + /** + * Parses given {@link InputStream} into a {@link Collection} of {@link PhoneMetadata}. + * + * @throws IllegalArgumentException if {@code source} is {@code null} and strict mode is on + * @return parsed {@link PhoneMetadata}, or empty {@link Collection} if {@code source} is {@code + * null} and lenient mode is on + */ + public Collection<PhoneMetadata> parse(InputStream source) { + if (source == null) { + return handleNullSource(); + } + ObjectInputStream ois = null; + try { + ois = new ObjectInputStream(source); + PhoneMetadataCollection phoneMetadataCollection = new PhoneMetadataCollection(); + phoneMetadataCollection.readExternal(ois); + List<PhoneMetadata> phoneMetadata = phoneMetadataCollection.getMetadataList(); + // Sanity check; this should not happen if provided InputStream is valid + if (phoneMetadata.isEmpty()) { + throw new IllegalStateException("Empty metadata"); + } + return phoneMetadataCollection.getMetadataList(); + } catch (IOException e) { + throw new IllegalStateException("Unable to parse metadata file", e); + } finally { + if (ois != null) { + // This will close all underlying streams as well, including source. + close(ois); + } else { + close(source); + } + } + } + + private List<PhoneMetadata> handleNullSource() { + if (strictMode) { + throw new IllegalArgumentException("Source cannot be null"); + } + return Collections.emptyList(); + } + + private void close(InputStream inputStream) { + try { + inputStream.close(); + } catch (IOException e) { + logger.log(Level.WARNING, "Error closing input stream (ignored)", e); + } + } +}
\ No newline at end of file diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/metadata/source/BlockingMetadataBootstrappingGuard.java b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/metadata/source/BlockingMetadataBootstrappingGuard.java new file mode 100644 index 00000000..ddb2fb9f --- /dev/null +++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/metadata/source/BlockingMetadataBootstrappingGuard.java @@ -0,0 +1,79 @@ +/* GENERATED SOURCE. DO NOT MODIFY. */ +/* + * 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.android.i18n.phonenumbers.metadata.source; + +import com.android.i18n.phonenumbers.MetadataLoader; +import com.android.i18n.phonenumbers.Phonemetadata.PhoneMetadata; +import com.android.i18n.phonenumbers.metadata.init.MetadataParser; +import java.io.InputStream; +import java.util.Collection; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +/** + * A blocking implementation of {@link MetadataBootstrappingGuard}. Can be used for both single-file + * (bulk) and multi-file metadata + * + * @param <T> needs to extend {@link MetadataContainer} + */ +final class BlockingMetadataBootstrappingGuard<T extends MetadataContainer> + implements MetadataBootstrappingGuard<T> { + + private final MetadataLoader metadataLoader; + private final MetadataParser metadataParser; + private final T metadataContainer; + private final Map<String, String> loadedFiles; // identity map + + BlockingMetadataBootstrappingGuard( + MetadataLoader metadataLoader, MetadataParser metadataParser, T metadataContainer) { + this.metadataLoader = metadataLoader; + this.metadataParser = metadataParser; + this.metadataContainer = metadataContainer; + this.loadedFiles = new ConcurrentHashMap<>(); + } + + @Override + public T getOrBootstrap(String phoneMetadataFile) { + if (!loadedFiles.containsKey(phoneMetadataFile)) { + bootstrapMetadata(phoneMetadataFile); + } + return metadataContainer; + } + + private synchronized void bootstrapMetadata(String phoneMetadataFile) { + // Additional check is needed because multiple threads could pass the first check when calling + // getOrBootstrap() at the same time for unloaded metadata file + if (loadedFiles.containsKey(phoneMetadataFile)) { + return; + } + Collection<PhoneMetadata> phoneMetadata = read(phoneMetadataFile); + for (PhoneMetadata metadata : phoneMetadata) { + metadataContainer.accept(metadata); + } + loadedFiles.put(phoneMetadataFile, phoneMetadataFile); + } + + private Collection<PhoneMetadata> read(String phoneMetadataFile) { + try { + InputStream metadataStream = metadataLoader.loadMetadata(phoneMetadataFile); + return metadataParser.parse(metadataStream); + } catch (IllegalArgumentException | IllegalStateException e) { + throw new IllegalStateException("Failed to read file " + phoneMetadataFile, e); + } + } +} diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/metadata/source/CompositeMetadataContainer.java b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/metadata/source/CompositeMetadataContainer.java new file mode 100644 index 00000000..93d52a18 --- /dev/null +++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/metadata/source/CompositeMetadataContainer.java @@ -0,0 +1,70 @@ +/* GENERATED SOURCE. DO NOT MODIFY. */ +/* + * 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.android.i18n.phonenumbers.metadata.source; + +import com.android.i18n.phonenumbers.Phonemetadata.PhoneMetadata; +import com.android.i18n.phonenumbers.internal.GeoEntityUtility; + +/** + * Implementation of {@link MetadataContainer} which is a composition of different {@link + * MapBackedMetadataContainer}s. It adds items to a single simpler container at a time depending on + * the content of {@link PhoneMetadata}. + */ +final class CompositeMetadataContainer implements MetadataContainer { + + private final MapBackedMetadataContainer<Integer> metadataByCountryCode = + MapBackedMetadataContainer.byCountryCallingCode(); + private final MapBackedMetadataContainer<String> metadataByRegionCode = + MapBackedMetadataContainer.byRegionCode(); + + /** + * Intended to be called for geographical regions only. For non-geographical entities, use {@link + * CompositeMetadataContainer#getMetadataBy(int)} + */ + PhoneMetadata getMetadataBy(String regionCode) { + return metadataByRegionCode.getMetadataBy(regionCode); + } + + /** + * Intended to be called for non-geographical entities only, such as 800 (country code assigned to + * the Universal International Freephone Service). For geographical regions, use {@link + * CompositeMetadataContainer#getMetadataBy(String)} + */ + PhoneMetadata getMetadataBy(int countryCallingCode) { + return metadataByCountryCode.getMetadataBy(countryCallingCode); + } + + /** + * If the metadata belongs to a specific geographical region (it has a region code other than + * {@link GeoEntityUtility#REGION_CODE_FOR_NON_GEO_ENTITIES}), it will be added to a {@link + * MapBackedMetadataContainer} which stores metadata by region code. Otherwise, it will be added + * to a {@link MapBackedMetadataContainer} which stores metadata by country calling code. This + * means that {@link CompositeMetadataContainer#getMetadataBy(int)} will not work for country + * calling codes such as 41 (country calling code for Switzerland), only for country calling codes + * such as 800 (country code assigned to the Universal International Freephone Service) + */ + @Override + public void accept(PhoneMetadata phoneMetadata) { + String regionCode = metadataByRegionCode.getKeyProvider().getKeyOf(phoneMetadata); + if (GeoEntityUtility.isGeoEntity(regionCode)) { + metadataByRegionCode.accept(phoneMetadata); + } else { + metadataByCountryCode.accept(phoneMetadata); + } + } +} diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/metadata/source/FormattingMetadataSource.java b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/metadata/source/FormattingMetadataSource.java new file mode 100644 index 00000000..0638eb7a --- /dev/null +++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/metadata/source/FormattingMetadataSource.java @@ -0,0 +1,39 @@ +/* GENERATED SOURCE. DO NOT MODIFY. */ +/* + * 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.android.i18n.phonenumbers.metadata.source; + +import com.android.i18n.phonenumbers.Phonemetadata.PhoneMetadata; + +/** A source of formatting phone metadata. + * @hide This class is not part of the Android public SDK API*/ +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 + * 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 + * would contain formatting metadata. + * + * @return the phone metadata for provided {@code countryCallingCode}, or null if there is none. + */ + PhoneMetadata getFormattingMetadataForCountryCallingCode(int countryCallingCode); +} diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/metadata/source/FormattingMetadataSourceImpl.java b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/metadata/source/FormattingMetadataSourceImpl.java new file mode 100644 index 00000000..b2c806be --- /dev/null +++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/metadata/source/FormattingMetadataSourceImpl.java @@ -0,0 +1,59 @@ +/* GENERATED SOURCE. DO NOT MODIFY. */ +/* + * 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.android.i18n.phonenumbers.metadata.source; + +import com.android.i18n.phonenumbers.MetadataLoader; +import com.android.i18n.phonenumbers.Phonemetadata.PhoneMetadata; +import com.android.i18n.phonenumbers.metadata.init.MetadataParser; + +/** + * Implementation of {@link FormattingMetadataSource} guarded by {@link MetadataBootstrappingGuard} + * + * <p>By default, a {@link BlockingMetadataBootstrappingGuard} will be used, but any custom + * implementation can be injected. + * @hide This class is not part of the Android public SDK API + */ +public final class FormattingMetadataSourceImpl implements FormattingMetadataSource { + + private final PhoneMetadataFileNameProvider phoneMetadataFileNameProvider; + private final MetadataBootstrappingGuard<MapBackedMetadataContainer<Integer>> bootstrappingGuard; + + public FormattingMetadataSourceImpl( + PhoneMetadataFileNameProvider phoneMetadataFileNameProvider, + MetadataBootstrappingGuard<MapBackedMetadataContainer<Integer>> bootstrappingGuard) { + this.phoneMetadataFileNameProvider = phoneMetadataFileNameProvider; + this.bootstrappingGuard = bootstrappingGuard; + } + + public FormattingMetadataSourceImpl( + PhoneMetadataFileNameProvider phoneMetadataFileNameProvider, + MetadataLoader metadataLoader, + MetadataParser metadataParser) { + this( + phoneMetadataFileNameProvider, + new BlockingMetadataBootstrappingGuard<>( + metadataLoader, metadataParser, MapBackedMetadataContainer.byCountryCallingCode())); + } + + @Override + public PhoneMetadata getFormattingMetadataForCountryCallingCode(int countryCallingCode) { + return bootstrappingGuard + .getOrBootstrap(phoneMetadataFileNameProvider.getFor(countryCallingCode)) + .getMetadataBy(countryCallingCode); + } +} diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/metadata/source/MapBackedMetadataContainer.java b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/metadata/source/MapBackedMetadataContainer.java new file mode 100644 index 00000000..5183984f --- /dev/null +++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/metadata/source/MapBackedMetadataContainer.java @@ -0,0 +1,75 @@ +/* GENERATED SOURCE. DO NOT MODIFY. */ +/* + * 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.android.i18n.phonenumbers.metadata.source; + +import com.android.i18n.phonenumbers.Phonemetadata.PhoneMetadata; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.ConcurrentMap; + +/** + * A {@link MetadataContainer} implementation backed by a {@link ConcurrentHashMap} with generic + * keys. + */ +final class MapBackedMetadataContainer<T> implements MetadataContainer { + + static MapBackedMetadataContainer<String> byRegionCode() { + return new MapBackedMetadataContainer<>( + new KeyProvider<String>() { + @Override + public String getKeyOf(PhoneMetadata phoneMetadata) { + return phoneMetadata.getId(); + } + }); + } + + static MapBackedMetadataContainer<Integer> byCountryCallingCode() { + return new MapBackedMetadataContainer<>( + new KeyProvider<Integer>() { + @Override + public Integer getKeyOf(PhoneMetadata phoneMetadata) { + return phoneMetadata.getCountryCode(); + } + }); + } + + private final ConcurrentMap<T, PhoneMetadata> metadataMap; + + private final KeyProvider<T> keyProvider; + + private MapBackedMetadataContainer(KeyProvider<T> keyProvider) { + this.metadataMap = new ConcurrentHashMap<>(); + this.keyProvider = keyProvider; + } + + PhoneMetadata getMetadataBy(T key) { + return key != null ? metadataMap.get(key) : null; + } + + KeyProvider<T> getKeyProvider() { + return keyProvider; + } + + @Override + public void accept(PhoneMetadata phoneMetadata) { + metadataMap.put(keyProvider.getKeyOf(phoneMetadata), phoneMetadata); + } + + interface KeyProvider<T> { + T getKeyOf(PhoneMetadata phoneMetadata); + } +} diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/metadata/source/MetadataBootstrappingGuard.java b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/metadata/source/MetadataBootstrappingGuard.java new file mode 100644 index 00000000..770bfb3b --- /dev/null +++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/metadata/source/MetadataBootstrappingGuard.java @@ -0,0 +1,37 @@ +/* GENERATED SOURCE. DO NOT MODIFY. */ +/* + * 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.android.i18n.phonenumbers.metadata.source; + +/** + * Guard that ensures that metadata bootstrapping process (loading and parsing) is triggered only + * once per metadata file. + * + * @param <T> needs to extend {@link MetadataContainer} + * @hide This class is not part of the Android public SDK API + */ +public interface MetadataBootstrappingGuard<T extends MetadataContainer> { + + /** + * If metadata from the provided file has not yet been read, invokes loading and parsing from the + * provided file and adds the result to guarded {@link MetadataContainer}. + * + * @param phoneMetadataFile to read from + * @return guarded {@link MetadataContainer} + */ + T getOrBootstrap(String phoneMetadataFile); +} diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/MetadataSource.java b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/metadata/source/MetadataContainer.java index 0e338a89..e5aacd7e 100644 --- a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/MetadataSource.java +++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/metadata/source/MetadataContainer.java @@ -1,6 +1,6 @@ /* GENERATED SOURCE. DO NOT MODIFY. */ /* - * Copyright (C) 2015 The Libphonenumber Authors + * 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. @@ -15,26 +15,19 @@ * limitations under the License. */ -package com.android.i18n.phonenumbers; +package com.android.i18n.phonenumbers.metadata.source; import com.android.i18n.phonenumbers.Phonemetadata.PhoneMetadata; /** - * A source for phone metadata for all regions. + * A container for {@link PhoneMetadata} */ -interface MetadataSource { +interface MetadataContainer { /** - * Gets phone metadata for a region. - * @param regionCode the region code. - * @return the phone metadata for that region, or null if there is none. + * Adds {@link PhoneMetadata} to the container. It depends on the implementation of the interface + * what this means, for example {@link MapBackedMetadataContainer} simply adds the provided + * metadata into the backing map. Implementing classes should ensure thread-safety. */ - PhoneMetadata getMetadataForRegion(String regionCode); - - /** - * Gets phone metadata for a non-geographical region. - * @param countryCallingCode the country calling code. - * @return the phone metadata for that region, or null if there is none. - */ - PhoneMetadata getMetadataForNonGeographicalRegion(int countryCallingCode); + void accept(PhoneMetadata phoneMetadata); } diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/metadata/source/MetadataSource.java b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/metadata/source/MetadataSource.java new file mode 100644 index 00000000..cd377d84 --- /dev/null +++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/metadata/source/MetadataSource.java @@ -0,0 +1,23 @@ +/* GENERATED SOURCE. DO NOT MODIFY. */ +/* + * 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.android.i18n.phonenumbers.metadata.source; + +/** A source of phone metadata split by different regions. + * @hide This class is not part of the Android public SDK API*/ +public interface MetadataSource extends RegionMetadataSource, NonGeographicalEntityMetadataSource { +} diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/metadata/source/MetadataSourceImpl.java b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/metadata/source/MetadataSourceImpl.java new file mode 100644 index 00000000..e2b97b0b --- /dev/null +++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/metadata/source/MetadataSourceImpl.java @@ -0,0 +1,74 @@ +/* GENERATED SOURCE. DO NOT MODIFY. */ +/* + * 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.android.i18n.phonenumbers.metadata.source; + +import com.android.i18n.phonenumbers.MetadataLoader; +import com.android.i18n.phonenumbers.Phonemetadata.PhoneMetadata; +import com.android.i18n.phonenumbers.internal.GeoEntityUtility; +import com.android.i18n.phonenumbers.metadata.init.MetadataParser; + +/** + * Implementation of {@link MetadataSource} guarded by {@link MetadataBootstrappingGuard}. + * + * <p>By default, a {@link BlockingMetadataBootstrappingGuard} will be used, but any custom + * implementation can be injected. + * @hide This class is not part of the Android public SDK API + */ +public final class MetadataSourceImpl implements MetadataSource { + + private final PhoneMetadataFileNameProvider phoneMetadataFileNameProvider; + private final MetadataBootstrappingGuard<CompositeMetadataContainer> bootstrappingGuard; + + public MetadataSourceImpl( + PhoneMetadataFileNameProvider phoneMetadataFileNameProvider, + MetadataBootstrappingGuard<CompositeMetadataContainer> bootstrappingGuard) { + this.phoneMetadataFileNameProvider = phoneMetadataFileNameProvider; + this.bootstrappingGuard = bootstrappingGuard; + } + + public MetadataSourceImpl( + PhoneMetadataFileNameProvider phoneMetadataFileNameProvider, + MetadataLoader metadataLoader, + MetadataParser metadataParser) { + this( + phoneMetadataFileNameProvider, + new BlockingMetadataBootstrappingGuard<>( + metadataLoader, metadataParser, new CompositeMetadataContainer())); + } + + @Override + public PhoneMetadata getMetadataForNonGeographicalRegion(int countryCallingCode) { + if (GeoEntityUtility.isGeoEntity(countryCallingCode)) { + throw new IllegalArgumentException( + countryCallingCode + " calling code belongs to a geo entity"); + } + return bootstrappingGuard + .getOrBootstrap(phoneMetadataFileNameProvider.getFor(countryCallingCode)) + .getMetadataBy(countryCallingCode); + } + + @Override + public PhoneMetadata getMetadataForRegion(String regionCode) { + if (!GeoEntityUtility.isGeoEntity(regionCode)) { + throw new IllegalArgumentException(regionCode + " region code is a non-geo entity"); + } + return bootstrappingGuard + .getOrBootstrap(phoneMetadataFileNameProvider.getFor(regionCode)) + .getMetadataBy(regionCode); + } +} diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/metadata/source/MultiFileModeFileNameProvider.java b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/metadata/source/MultiFileModeFileNameProvider.java new file mode 100644 index 00000000..b8ee7c91 --- /dev/null +++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/metadata/source/MultiFileModeFileNameProvider.java @@ -0,0 +1,44 @@ +/* GENERATED SOURCE. DO NOT MODIFY. */ +/* + * 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.android.i18n.phonenumbers.metadata.source; + +import java.util.regex.Pattern; + +/** + * {@link PhoneMetadataFileNameProvider} implementation which appends key as a suffix to the + * predefined metadata file name base. + * @hide This class is not part of the Android public SDK API + */ +public final class MultiFileModeFileNameProvider implements PhoneMetadataFileNameProvider { + + private final String phoneMetadataFileNamePrefix; + private static final Pattern ALPHANUMERIC = Pattern.compile("^[\\p{L}\\p{N}]+$"); + + public MultiFileModeFileNameProvider(String phoneMetadataFileNameBase) { + this.phoneMetadataFileNamePrefix = phoneMetadataFileNameBase + "_"; + } + + @Override + public String getFor(Object key) { + String keyAsString = key.toString(); + if (!ALPHANUMERIC.matcher(keyAsString).matches()) { + throw new IllegalArgumentException("Invalid key: " + keyAsString); + } + return phoneMetadataFileNamePrefix + key; + } +} diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/metadata/source/NonGeographicalEntityMetadataSource.java b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/metadata/source/NonGeographicalEntityMetadataSource.java new file mode 100644 index 00000000..a7dbbef1 --- /dev/null +++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/metadata/source/NonGeographicalEntityMetadataSource.java @@ -0,0 +1,49 @@ +/* GENERATED SOURCE. DO NOT MODIFY. */ +/* + * 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.android.i18n.phonenumbers.metadata.source; + +import com.android.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> + * @hide This class is not part of the Android public SDK API + */ +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 + */ + PhoneMetadata getMetadataForNonGeographicalRegion(int countryCallingCode); +} diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/metadata/source/PhoneMetadataFileNameProvider.java b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/metadata/source/PhoneMetadataFileNameProvider.java new file mode 100644 index 00000000..55e0849d --- /dev/null +++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/metadata/source/PhoneMetadataFileNameProvider.java @@ -0,0 +1,38 @@ +/* GENERATED SOURCE. DO NOT MODIFY. */ +/* + * 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.android.i18n.phonenumbers.metadata.source; + +/** + * Abstraction responsible for inferring the metadata file name. + * + * <p>Two implementations are available: + * + * <ul> + * <li>{@link SingleFileModeFileNameProvider} for single-file metadata. + * <li>{@link MultiFileModeFileNameProvider} for multi-file metadata. + * </ul> + * @hide This class is not part of the Android public SDK API + */ +public interface PhoneMetadataFileNameProvider { + + /** + * Returns phone metadata file path for the given key. Assumes that key.toString() is + * well-defined. + */ + String getFor(Object key); +} diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/metadata/source/RegionMetadataSource.java b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/metadata/source/RegionMetadataSource.java new file mode 100644 index 00000000..bc80dea3 --- /dev/null +++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/metadata/source/RegionMetadataSource.java @@ -0,0 +1,42 @@ +/* GENERATED SOURCE. DO NOT MODIFY. */ +/* + * 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.android.i18n.phonenumbers.metadata.source; + +import com.android.i18n.phonenumbers.Phonemetadata.PhoneMetadata; +import com.android.i18n.phonenumbers.internal.GeoEntityUtility; + +/** + * A source of phone metadata split by geographical regions. + * @hide This class is not part of the Android public SDK API + */ +public interface RegionMetadataSource { + + /** + * Returns phone metadata for provided geographical region. + * + * <p>The {@code regionCode} must be different from {@link + * GeoEntityUtility#REGION_CODE_FOR_NON_GEO_ENTITIES}, which has a special meaning and is used to + * mark non-geographical regions (see {@link NonGeographicalEntityMetadataSource} for more + * information). + * + * @return the phone metadata for provided {@code regionCode}, or null if there is none. + * @throws IllegalArgumentException if provided {@code regionCode} is {@link + * GeoEntityUtility#REGION_CODE_FOR_NON_GEO_ENTITIES} + */ + PhoneMetadata getMetadataForRegion(String regionCode); +} diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/metadata/source/RegionMetadataSourceImpl.java b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/metadata/source/RegionMetadataSourceImpl.java new file mode 100644 index 00000000..95f009fb --- /dev/null +++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/metadata/source/RegionMetadataSourceImpl.java @@ -0,0 +1,64 @@ +/* GENERATED SOURCE. DO NOT MODIFY. */ +/* + * 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.android.i18n.phonenumbers.metadata.source; + +import com.android.i18n.phonenumbers.MetadataLoader; +import com.android.i18n.phonenumbers.Phonemetadata.PhoneMetadata; +import com.android.i18n.phonenumbers.internal.GeoEntityUtility; +import com.android.i18n.phonenumbers.metadata.init.MetadataParser; + +/** + * Implementation of {@link RegionMetadataSource} guarded by {@link MetadataBootstrappingGuard} + * + * <p>By default, a {@link BlockingMetadataBootstrappingGuard} will be used, but any custom + * implementation can be injected. + * @hide This class is not part of the Android public SDK API + */ +public final class RegionMetadataSourceImpl implements RegionMetadataSource { + + private final PhoneMetadataFileNameProvider phoneMetadataFileNameProvider; + private final MetadataBootstrappingGuard<MapBackedMetadataContainer<String>> + bootstrappingGuard; + + public RegionMetadataSourceImpl( + PhoneMetadataFileNameProvider phoneMetadataFileNameProvider, + MetadataBootstrappingGuard<MapBackedMetadataContainer<String>> bootstrappingGuard) { + this.phoneMetadataFileNameProvider = phoneMetadataFileNameProvider; + this.bootstrappingGuard = bootstrappingGuard; + } + + public RegionMetadataSourceImpl( + PhoneMetadataFileNameProvider phoneMetadataFileNameProvider, + MetadataLoader metadataLoader, + MetadataParser metadataParser) { + this( + phoneMetadataFileNameProvider, + new BlockingMetadataBootstrappingGuard<>( + metadataLoader, metadataParser, MapBackedMetadataContainer.byRegionCode())); + } + + @Override + public PhoneMetadata getMetadataForRegion(String regionCode) { + if (!GeoEntityUtility.isGeoEntity(regionCode)) { + throw new IllegalArgumentException(regionCode + " region code is a non-geo entity"); + } + return bootstrappingGuard + .getOrBootstrap(phoneMetadataFileNameProvider.getFor(regionCode)) + .getMetadataBy(regionCode); + } +} diff --git a/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/metadata/source/SingleFileModeFileNameProvider.java b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/metadata/source/SingleFileModeFileNameProvider.java new file mode 100644 index 00000000..52566dc7 --- /dev/null +++ b/repackaged/libphonenumber/src/com/android/i18n/phonenumbers/metadata/source/SingleFileModeFileNameProvider.java @@ -0,0 +1,37 @@ +/* GENERATED SOURCE. DO NOT MODIFY. */ +/* + * 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.android.i18n.phonenumbers.metadata.source; + +/** + * {@link PhoneMetadataFileNameProvider} implementation that returns the same metadata file name for + * each key + * @hide This class is not part of the Android public SDK API + */ +public final class SingleFileModeFileNameProvider implements PhoneMetadataFileNameProvider { + + private final String phoneMetadataFileName; + + public SingleFileModeFileNameProvider(String phoneMetadataFileName) { + this.phoneMetadataFileName = phoneMetadataFileName; + } + + @Override + public String getFor(Object key) { + return phoneMetadataFileName; + } +} |