Browse Source

Update Java libphonenumber to use the protocol buffer v2 API for PhoneMetadata. (#2480)

The PhoneMetadata class that's included is a mix of v1 and v2 APIs and will be
changed over time to only support the v2 API.
pull/2484/head
tmarek-google 6 years ago
committed by GitHub
parent
commit
f9ce6ddd7d
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
11 changed files with 97 additions and 64 deletions
  1. +6
    -6
      java/libphonenumber/src/com/google/i18n/phonenumbers/AsYouTypeFormatter.java
  2. +3
    -3
      java/libphonenumber/src/com/google/i18n/phonenumbers/PhoneNumberMatcher.java
  3. +12
    -12
      java/libphonenumber/src/com/google/i18n/phonenumbers/PhoneNumberUtil.java
  4. +36
    -4
      java/libphonenumber/src/com/google/i18n/phonenumbers/Phonemetadata.java
  5. +1
    -1
      java/libphonenumber/test/com/google/i18n/phonenumbers/MetadataManagerTest.java
  6. +24
    -16
      java/libphonenumber/test/com/google/i18n/phonenumbers/PhoneNumberUtilTest.java
  7. +3
    -5
      java/libphonenumber/test/com/google/i18n/phonenumbers/internal/MatcherTest.java
  8. +1
    -1
      pending_code_changes.txt
  9. +7
    -10
      tools/java/common/src/com/google/i18n/phonenumbers/BuildMetadataFromXml.java
  10. +3
    -5
      tools/java/common/test/com/google/i18n/phonenumbers/BuildMetadataFromXmlTest.java
  11. +1
    -1
      tools/java/cpp-build/pom.xml

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

@ -62,7 +62,7 @@ public class AsYouTypeFormatter {
// code, from the national number.
private static final char SEPARATOR_BEFORE_NATIONAL_NUMBER = ' ';
private static final PhoneMetadata EMPTY_METADATA =
new PhoneMetadata().setInternationalPrefix("NA");
PhoneMetadata.newBuilder().setId("<ignored>").setInternationalPrefix("NA").build();
private PhoneMetadata defaultMetadata;
private PhoneMetadata currentMetadata;
@ -166,9 +166,9 @@ public class AsYouTypeFormatter {
// First decide whether we should use international or national number rules.
boolean isInternationalNumber = isCompleteNumber && extractedNationalPrefix.length() == 0;
List<NumberFormat> formatList =
(isInternationalNumber && currentMetadata.intlNumberFormatSize() > 0)
? currentMetadata.intlNumberFormats()
: currentMetadata.numberFormats();
(isInternationalNumber && currentMetadata.getIntlNumberFormatCount() > 0)
? currentMetadata.getIntlNumberFormatList()
: currentMetadata.getNumberFormatList();
for (NumberFormat format : formatList) {
// Discard a few formats that we know are not relevant based on the presence of the national
// prefix.
@ -203,12 +203,12 @@ public class AsYouTypeFormatter {
Iterator<NumberFormat> it = possibleFormats.iterator();
while (it.hasNext()) {
NumberFormat format = it.next();
if (format.leadingDigitsPatternSize() == 0) {
if (format.getLeadingDigitsPatternCount() == 0) {
// Keep everything that isn't restricted by leading digits.
continue;
}
int lastLeadingDigitsPattern =
Math.min(indexOfLeadingDigitsPattern, format.leadingDigitsPatternSize() - 1);
Math.min(indexOfLeadingDigitsPattern, format.getLeadingDigitsPatternCount() - 1);
Pattern leadingDigitsPattern = regexCache.getPatternForRegex(
format.getLeadingDigitsPattern(lastLeadingDigitsPattern));
Matcher m = leadingDigitsPattern.matcher(leadingDigits);


+ 3
- 3
java/libphonenumber/src/com/google/i18n/phonenumbers/PhoneNumberMatcher.java View File

@ -578,8 +578,8 @@ final class PhoneNumberMatcher implements Iterator<PhoneNumberMatch> {
MetadataManager.getAlternateFormatsForCountry(number.getCountryCode());
String nationalSignificantNumber = util.getNationalSignificantNumber(number);
if (alternateFormats != null) {
for (NumberFormat alternateFormat : alternateFormats.numberFormats()) {
if (alternateFormat.leadingDigitsPatternSize() > 0) {
for (NumberFormat alternateFormat : alternateFormats.getNumberFormatList()) {
if (alternateFormat.getLeadingDigitsPatternCount() > 0) {
// There is only one leading digits pattern for alternate formats.
Pattern pattern =
regexCache.getPatternForRegex(alternateFormat.getLeadingDigitsPattern(0));
@ -667,7 +667,7 @@ final class PhoneNumberMatcher implements Iterator<PhoneNumberMatch> {
// Check if a national prefix should be present when formatting this number.
String nationalNumber = util.getNationalSignificantNumber(number);
NumberFormat formatRule =
util.chooseFormattingPatternForNumber(metadata.numberFormats(), nationalNumber);
util.chooseFormattingPatternForNumber(metadata.getNumberFormatList(), nationalNumber);
// To do this, we check that a national prefix formatting rule was present and that it wasn't
// just the first-group symbol ($1) with punctuation.
if ((formatRule != null) && formatRule.getNationalPrefixFormattingRule().length() > 0) {


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

@ -1306,7 +1306,7 @@ public class PhoneNumberUtil {
}
}
formattedNumber.append(
formatNsnUsingPattern(nationalSignificantNumber, numFormatCopy, numberFormat));
formatNsnUsingPattern(nationalSignificantNumber, numFormatCopy.build(), numberFormat));
}
maybeAppendFormattedExtension(number, metadata, numberFormat, formattedNumber);
prefixNumberWithCountryCallingCode(countryCallingCode, numberFormat, formattedNumber);
@ -1615,7 +1615,7 @@ public class PhoneNumberUtil {
PhoneMetadata metadata = getMetadataForRegion(regionCode);
String nationalNumber = getNationalSignificantNumber(number);
NumberFormat formatRule =
chooseFormattingPatternForNumber(metadata.numberFormats(), nationalNumber);
chooseFormattingPatternForNumber(metadata.getNumberFormatList(), nationalNumber);
// The format rule could still be null here if the national number was 0 and there was no
// raw input (this should not be possible for numbers generated by the phonenumber library
// as they would also not have a country calling code and we would have exited earlier).
@ -1647,7 +1647,7 @@ public class PhoneNumberUtil {
numFormatCopy.mergeFrom(formatRule);
numFormatCopy.clearNationalPrefixFormattingRule();
List<NumberFormat> numberFormats = new ArrayList<NumberFormat>(1);
numberFormats.add(numFormatCopy);
numberFormats.add(numFormatCopy.build());
formattedNumber = formatByPattern(number, PhoneNumberFormat.NATIONAL, numberFormats);
break;
}
@ -1694,7 +1694,7 @@ public class PhoneNumberUtil {
}
String nationalNumber = getNationalSignificantNumber(number);
NumberFormat formatRule =
chooseFormattingPatternForNumber(metadata.numberFormats(), nationalNumber);
chooseFormattingPatternForNumber(metadata.getNumberFormatList(), nationalNumber);
return formatRule != null;
}
@ -1758,7 +1758,7 @@ public class PhoneNumberUtil {
} else if (metadataForRegionCallingFrom != null
&& countryCode == getCountryCodeForValidRegion(regionCallingFrom)) {
NumberFormat formattingPattern =
chooseFormattingPatternForNumber(metadataForRegionCallingFrom.numberFormats(),
chooseFormattingPatternForNumber(metadataForRegionCallingFrom.getNumberFormatList(),
nationalNumber);
if (formattingPattern == null) {
// If no pattern above is matched, we format the original input.
@ -1775,7 +1775,7 @@ public class PhoneNumberUtil {
// This will not work in the cases where the pattern (and not the leading digits) decide
// whether a national prefix needs to be used, since we have overridden the pattern to match
// anything, but that is not the case in the metadata to date.
return formatNsnUsingPattern(rawInput, newFormat, PhoneNumberFormat.NATIONAL);
return formatNsnUsingPattern(rawInput, newFormat.build(), PhoneNumberFormat.NATIONAL);
}
String internationalPrefixForFormatting = "";
// If an unsupported region-calling-from is entered, or a country with multiple international
@ -1868,13 +1868,13 @@ public class PhoneNumberUtil {
PhoneMetadata metadata,
PhoneNumberFormat numberFormat,
CharSequence carrierCode) {
List<NumberFormat> intlNumberFormats = metadata.intlNumberFormats();
List<NumberFormat> intlNumberFormats = metadata.getIntlNumberFormatList();
// When the intlNumberFormats exists, we use that to format national number for the
// INTERNATIONAL format instead of using the numberDesc.numberFormats.
List<NumberFormat> availableFormats =
(intlNumberFormats.size() == 0 || numberFormat == PhoneNumberFormat.NATIONAL)
? metadata.numberFormats()
: metadata.intlNumberFormats();
? metadata.getNumberFormatList()
: metadata.getIntlNumberFormatList();
NumberFormat formattingPattern = chooseFormattingPatternForNumber(availableFormats, number);
return (formattingPattern == null)
? number
@ -1884,7 +1884,7 @@ public class PhoneNumberUtil {
NumberFormat chooseFormattingPatternForNumber(List<NumberFormat> availableFormats,
String nationalNumber) {
for (NumberFormat numFormat : availableFormats) {
int size = numFormat.leadingDigitsPatternSize();
int size = numFormat.getLeadingDigitsPatternCount();
if (size == 0 || regexCache.getPatternForRegex(
// We always use the last leading_digits_pattern, as it is the most detailed.
numFormat.getLeadingDigitsPattern(size - 1)).matcher(nationalNumber).lookingAt()) {
@ -2536,7 +2536,7 @@ public class PhoneNumberUtil {
// 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.
possibleLengths.addAll(mobileDesc.getPossibleLengthList().size() == 0
possibleLengths.addAll(mobileDesc.getPossibleLengthCount() == 0
? metadata.getGeneralDesc().getPossibleLengthList()
: mobileDesc.getPossibleLengthList());
// The current list is sorted; we need to merge in the new list and re-sort (duplicates
@ -3518,6 +3518,6 @@ public class PhoneNumberUtil {
logger.log(Level.WARNING, "Invalid or unknown region code provided: " + regionCode);
return false;
}
return metadata.isMobileNumberPortableRegion();
return metadata.getMobileNumberPortableRegion();
}
}

+ 36
- 4
java/libphonenumber/src/com/google/i18n/phonenumbers/Phonemetadata.java View File

@ -102,7 +102,9 @@ public final class Phonemetadata {
public java.util.List<String> leadingDigitPatterns() {
return leadingDigitsPattern_;
}
public int leadingDigitsPatternSize() { return leadingDigitsPattern_.size(); }
@Deprecated
public int leadingDigitsPatternSize() { return getLeadingDigitsPatternCount(); }
public int getLeadingDigitsPatternCount() { return leadingDigitsPattern_.size(); }
public String getLeadingDigitsPattern(int index) {
return leadingDigitsPattern_.get(index);
}
@ -361,6 +363,16 @@ public final class Phonemetadata {
public PhoneMetadata build() {
return this;
}
public Builder setId(String value) {
super.setId(value);
return this;
}
public Builder setInternationalPrefix(String value) {
super.setInternationalPrefix(value);
return this;
}
}
public static Builder newBuilder() {
return new Builder();
@ -371,6 +383,12 @@ public final class Phonemetadata {
private PhoneNumberDesc generalDesc_ = null;
public boolean hasGeneralDesc() { return hasGeneralDesc; }
public PhoneNumberDesc getGeneralDesc() { return generalDesc_; }
public PhoneNumberDesc getGeneralDescBuilder() {
if (generalDesc_ == null) {
generalDesc_ = new PhoneNumberDesc();
}
return generalDesc_ ;
}
public PhoneMetadata setGeneralDesc(PhoneNumberDesc value) {
if (value == null) {
throw new NullPointerException();
@ -730,10 +748,16 @@ public final class Phonemetadata {
// repeated NumberFormat number_format = 19;
private java.util.List<NumberFormat> numberFormat_ = new java.util.ArrayList<NumberFormat>();
@Deprecated
public java.util.List<NumberFormat> numberFormats() {
return getNumberFormatList();
}
public java.util.List<NumberFormat> getNumberFormatList() {
return numberFormat_;
}
public int numberFormatSize() { return numberFormat_.size(); }
@Deprecated
public int numberFormatSize() { return getNumberFormatCount(); }
public int getNumberFormatCount() { return numberFormat_.size(); }
public NumberFormat getNumberFormat(int index) {
return numberFormat_.get(index);
}
@ -748,10 +772,16 @@ public final class Phonemetadata {
// repeated NumberFormat intl_number_format = 20;
private java.util.List<NumberFormat> intlNumberFormat_ =
new java.util.ArrayList<NumberFormat>();
@Deprecated
public java.util.List<NumberFormat> intlNumberFormats() {
return getIntlNumberFormatList();
}
public java.util.List<NumberFormat> getIntlNumberFormatList() {
return intlNumberFormat_;
}
public int intlNumberFormatSize() { return intlNumberFormat_.size(); }
@Deprecated
public int intlNumberFormatSize() { return getIntlNumberFormatCount(); }
public int getIntlNumberFormatCount() { return intlNumberFormat_.size(); }
public NumberFormat getIntlNumberFormat(int index) {
return intlNumberFormat_.get(index);
}
@ -818,7 +848,9 @@ public final class Phonemetadata {
private boolean hasMobileNumberPortableRegion;
private boolean mobileNumberPortableRegion_ = false;
public boolean hasMobileNumberPortableRegion() { return hasMobileNumberPortableRegion; }
public boolean isMobileNumberPortableRegion() { return mobileNumberPortableRegion_; }
@Deprecated
public boolean isMobileNumberPortableRegion() { return getMobileNumberPortableRegion(); }
public boolean getMobileNumberPortableRegion() { return mobileNumberPortableRegion_; }
public PhoneMetadata setMobileNumberPortableRegion(boolean value) {
hasMobileNumberPortableRegion = true;
mobileNumberPortableRegion_ = value;


+ 1
- 1
java/libphonenumber/test/com/google/i18n/phonenumbers/MetadataManagerTest.java View File

@ -28,7 +28,7 @@ public class MetadataManagerTest extends TestCase {
// We should have some data for Germany.
PhoneMetadata germanyMetadata = MetadataManager.getAlternateFormatsForCountry(49);
assertNotNull(germanyMetadata);
assertTrue(germanyMetadata.numberFormats().size() > 0);
assertTrue(germanyMetadata.getNumberFormatCount() > 0);
}
public void testAlternateFormatsFailsGracefully() throws Exception {


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

@ -189,7 +189,7 @@ public class PhoneNumberUtilTest extends TestMetadataTestCase {
assertEquals(1, metadata.getCountryCode());
assertEquals("011", metadata.getInternationalPrefix());
assertTrue(metadata.hasNationalPrefix());
assertEquals(2, metadata.numberFormatSize());
assertEquals(2, metadata.getNumberFormatCount());
assertEquals("(\\d{3})(\\d{3})(\\d{4})",
metadata.getNumberFormat(1).getPattern());
assertEquals("$1 $2 $3", metadata.getNumberFormat(1).getFormat());
@ -213,8 +213,8 @@ public class PhoneNumberUtilTest extends TestMetadataTestCase {
assertEquals(49, metadata.getCountryCode());
assertEquals("00", metadata.getInternationalPrefix());
assertEquals("0", metadata.getNationalPrefix());
assertEquals(6, metadata.numberFormatSize());
assertEquals(1, metadata.getNumberFormat(5).leadingDigitsPatternSize());
assertEquals(6, metadata.getNumberFormatCount());
assertEquals(1, metadata.getNumberFormat(5).getLeadingDigitsPatternCount());
assertEquals("900", metadata.getNumberFormat(5).getLeadingDigitsPattern(0));
assertEquals("(\\d{3})(\\d{3,4})(\\d{4})",
metadata.getNumberFormat(5).getPattern());
@ -900,11 +900,11 @@ public class PhoneNumberUtilTest extends TestMetadataTestCase {
}
public void testFormatByPattern() {
NumberFormat newNumFormat = new NumberFormat();
NumberFormat.Builder newNumFormat = NumberFormat.newBuilder();
newNumFormat.setPattern("(\\d{3})(\\d{3})(\\d{4})");
newNumFormat.setFormat("($1) $2-$3");
List<NumberFormat> newNumberFormats = new ArrayList<NumberFormat>();
newNumberFormats.add(newNumFormat);
newNumberFormats.add(newNumFormat.build());
assertEquals("(650) 253-0000", phoneUtil.formatByPattern(US_NUMBER, PhoneNumberFormat.NATIONAL,
newNumberFormats));
@ -919,6 +919,7 @@ public class PhoneNumberUtilTest extends TestMetadataTestCase {
// followed.
newNumFormat.setNationalPrefixFormattingRule("$NP ($FG)");
newNumFormat.setFormat("$1 $2-$3");
newNumberFormats.set(0, newNumFormat.build());
assertEquals("1 (242) 365-1234",
phoneUtil.formatByPattern(BS_NUMBER, PhoneNumberFormat.NATIONAL,
newNumberFormats));
@ -928,7 +929,7 @@ public class PhoneNumberUtilTest extends TestMetadataTestCase {
newNumFormat.setPattern("(\\d{2})(\\d{5})(\\d{3})");
newNumFormat.setFormat("$1-$2 $3");
newNumberFormats.set(0, newNumFormat);
newNumberFormats.set(0, newNumFormat.build());
assertEquals("02-36618 300",
phoneUtil.formatByPattern(IT_NUMBER, PhoneNumberFormat.NATIONAL,
@ -940,17 +941,19 @@ public class PhoneNumberUtilTest extends TestMetadataTestCase {
newNumFormat.setNationalPrefixFormattingRule("$NP$FG");
newNumFormat.setPattern("(\\d{2})(\\d{4})(\\d{4})");
newNumFormat.setFormat("$1 $2 $3");
newNumberFormats.set(0, newNumFormat);
newNumberFormats.set(0, newNumFormat.build());
assertEquals("020 7031 3000",
phoneUtil.formatByPattern(GB_NUMBER, PhoneNumberFormat.NATIONAL,
newNumberFormats));
newNumFormat.setNationalPrefixFormattingRule("($NP$FG)");
newNumberFormats.set(0, newNumFormat.build());
assertEquals("(020) 7031 3000",
phoneUtil.formatByPattern(GB_NUMBER, PhoneNumberFormat.NATIONAL,
newNumberFormats));
newNumFormat.setNationalPrefixFormattingRule("");
newNumberFormats.set(0, newNumFormat.build());
assertEquals("20 7031 3000",
phoneUtil.formatByPattern(GB_NUMBER, PhoneNumberFormat.NATIONAL,
newNumberFormats));
@ -1814,29 +1817,32 @@ public class PhoneNumberUtilTest extends TestMetadataTestCase {
}
public void testMaybeStripNationalPrefix() {
PhoneMetadata metadata = new PhoneMetadata();
PhoneMetadata.Builder metadata = PhoneMetadata.newBuilder();
metadata.setId("ignored");
metadata.setNationalPrefixForParsing("34");
metadata.setGeneralDesc(new PhoneNumberDesc().setNationalNumberPattern("\\d{4,8}"));
metadata
.getGeneralDescBuilder()
.setNationalNumberPattern("\\d{4,8}");
StringBuilder numberToStrip = new StringBuilder("34356778");
String strippedNumber = "356778";
assertTrue(phoneUtil.maybeStripNationalPrefixAndCarrierCode(numberToStrip, metadata, null));
assertTrue(phoneUtil.maybeStripNationalPrefixAndCarrierCode(numberToStrip, metadata.build(), null));
assertEquals("Should have had national prefix stripped.",
strippedNumber, numberToStrip.toString());
// Retry stripping - now the number should not start with the national prefix, so no more
// stripping should occur.
assertFalse(phoneUtil.maybeStripNationalPrefixAndCarrierCode(numberToStrip, metadata, null));
assertFalse(phoneUtil.maybeStripNationalPrefixAndCarrierCode(numberToStrip, metadata.build(), null));
assertEquals("Should have had no change - no national prefix present.",
strippedNumber, numberToStrip.toString());
// Some countries have no national prefix. Repeat test with none specified.
metadata.setNationalPrefixForParsing("");
assertFalse(phoneUtil.maybeStripNationalPrefixAndCarrierCode(numberToStrip, metadata, null));
assertFalse(phoneUtil.maybeStripNationalPrefixAndCarrierCode(numberToStrip, metadata.build(), null));
assertEquals("Should not strip anything with empty national prefix.",
strippedNumber, numberToStrip.toString());
// If the resultant number doesn't match the national rule, it shouldn't be stripped.
metadata.setNationalPrefixForParsing("3");
numberToStrip = new StringBuilder("3123");
strippedNumber = "3123";
assertFalse(phoneUtil.maybeStripNationalPrefixAndCarrierCode(numberToStrip, metadata, null));
assertFalse(phoneUtil.maybeStripNationalPrefixAndCarrierCode(numberToStrip, metadata.build(), null));
assertEquals("Should have had no change - after stripping, it wouldn't have matched "
+ "the national rule.",
strippedNumber, numberToStrip.toString());
@ -1845,8 +1851,9 @@ public class PhoneNumberUtilTest extends TestMetadataTestCase {
numberToStrip = new StringBuilder("08122123456");
strippedNumber = "22123456";
StringBuilder carrierCode = new StringBuilder();
assertTrue(phoneUtil.maybeStripNationalPrefixAndCarrierCode(
numberToStrip, metadata, carrierCode));
assertTrue(
phoneUtil.maybeStripNationalPrefixAndCarrierCode(
numberToStrip, metadata.build(), carrierCode));
assertEquals("81", carrierCode.toString());
assertEquals("Should have had national prefix and carrier code stripped.",
strippedNumber, numberToStrip.toString());
@ -1856,7 +1863,8 @@ public class PhoneNumberUtilTest extends TestMetadataTestCase {
metadata.setNationalPrefixForParsing("0(\\d{2})");
numberToStrip = new StringBuilder("031123");
String transformedNumber = "5315123";
assertTrue(phoneUtil.maybeStripNationalPrefixAndCarrierCode(numberToStrip, metadata, null));
assertTrue(
phoneUtil.maybeStripNationalPrefixAndCarrierCode(numberToStrip, metadata.build(), null));
assertEquals("Should transform the 031 to a 5315.",
transformedNumber, numberToStrip.toString());
}


+ 3
- 5
java/libphonenumber/test/com/google/i18n/phonenumbers/internal/MatcherTest.java View File

@ -29,9 +29,7 @@ public class MatcherTest extends TestCase {
}
private void checkMatcherBehavesAsExpected(MatcherApi matcher) {
PhoneNumberDesc desc = new PhoneNumberDesc();
desc = createDesc("");
PhoneNumberDesc desc = createDesc("");
// Test if there is no matcher data.
assertInvalid(matcher, "1", desc);
@ -60,11 +58,11 @@ public class MatcherTest extends TestCase {
// Helper method to set national number fields in the PhoneNumberDesc proto. Empty fields won't be
// set.
private PhoneNumberDesc createDesc(String nationalNumberPattern) {
PhoneNumberDesc desc = new PhoneNumberDesc();
PhoneNumberDesc.Builder desc = PhoneNumberDesc.newBuilder();
if (nationalNumberPattern.length() > 0) {
desc.setNationalNumberPattern(nationalNumberPattern);
}
return desc;
return desc.build();
}
private void assertMatched(MatcherApi matcher, String number, PhoneNumberDesc desc) {


+ 1
- 1
pending_code_changes.txt View File

@ -1 +1 @@
- [Java only] Use protobuf API v2 for PhoneMetadata only, mark old methods as deprecated.

+ 7
- 10
tools/java/common/src/com/google/i18n/phonenumbers/BuildMetadataFromXml.java View File

@ -129,7 +129,7 @@ public class BuildMetadataFromXml {
PhoneMetadata.Builder metadata = loadCountryMetadata(regionCode, territoryElement,
isShortNumberMetadata, isAlternateFormatsMetadata);
metadataFilter.filterMetadata(metadata);
metadataCollection.addMetadata(metadata);
metadataCollection.addMetadata(metadata.build());
}
return metadataCollection.build();
}
@ -272,7 +272,7 @@ public class BuildMetadataFromXml {
}
if (intlFormat.hasFormat()) {
metadata.addIntlNumberFormat(intlFormat);
metadata.addIntlNumberFormat(intlFormat.build());
}
return hasExplicitIntlFormatDefined;
}
@ -438,7 +438,7 @@ public class BuildMetadataFromXml {
* @return complete description of that phone number type
*/
// @VisibleForTesting
static PhoneNumberDesc.Builder processPhoneNumberDescElement(PhoneNumberDesc parentDesc,
static PhoneNumberDesc.Builder processPhoneNumberDescElement(PhoneNumberDesc.Builder parentDesc,
Element countryElement,
String numberType) {
NodeList phoneNumberDescList = countryElement.getElementsByTagName(numberType);
@ -464,7 +464,7 @@ public class BuildMetadataFromXml {
TreeSet<Integer> lengths = new TreeSet<Integer>();
TreeSet<Integer> localOnlyLengths = new TreeSet<Integer>();
populatePossibleLengthSets(element, lengths, localOnlyLengths);
setPossibleLengths(lengths, localOnlyLengths, parentDesc, numberDesc);
setPossibleLengths(lengths, localOnlyLengths, parentDesc.build(), numberDesc);
}
NodeList validPattern = element.getElementsByTagName(NATIONAL_NUMBER_PATTERN);
@ -484,15 +484,12 @@ public class BuildMetadataFromXml {
// @VisibleForTesting
static void setRelevantDescPatterns(PhoneMetadata.Builder metadata, Element element,
boolean isShortNumberMetadata) {
PhoneNumberDesc.Builder generalDescBuilder = processPhoneNumberDescElement(null, element,
PhoneNumberDesc.Builder generalDesc = processPhoneNumberDescElement(null, element,
GENERAL_DESC);
// Calculate the possible lengths for the general description. This will be based on the
// possible lengths of the child elements.
setPossibleLengthsGeneralDesc(
generalDescBuilder, metadata.getId(), element, isShortNumberMetadata);
metadata.setGeneralDesc(generalDescBuilder);
PhoneNumberDesc generalDesc = metadata.getGeneralDesc();
setPossibleLengthsGeneralDesc(generalDesc, metadata.getId(), element, isShortNumberMetadata);
metadata.setGeneralDesc(generalDesc);
if (!isShortNumberMetadata) {
// Set fields used by regular length phone numbers.


+ 3
- 5
tools/java/common/test/com/google/i18n/phonenumbers/BuildMetadataFromXmlTest.java View File

@ -340,7 +340,7 @@ public class BuildMetadataFromXmlTest extends TestCase {
PhoneMetadata.Builder metadata = PhoneMetadata.newBuilder();
BuildMetadataFromXml.loadAvailableFormats(
metadata, element, "0", "($1)", false /* NP not optional */);
assertEquals(0, metadata.intlNumberFormatSize());
assertEquals(0, metadata.getIntlNumberFormatCount());
}
public void testLoadAvailableFormatsHandlesMultipleNumberFormats()
@ -369,7 +369,7 @@ public class BuildMetadataFromXmlTest extends TestCase {
BuildMetadataFromXml.loadInternationalFormat(metadata, numberFormatElement,
nationalFormat.build());
assertEquals(0, metadata.intlNumberFormatSize());
assertEquals(0, metadata.getIntlNumberFormatCount());
}
// Tests setLeadingDigitsPatterns().
@ -619,9 +619,7 @@ public class BuildMetadataFromXmlTest extends TestCase {
+ " <nationalNumberPattern>\t \\d { 6 } </nationalNumberPattern>"
+ "</fixedLine></territory>";
Element countryElement = parseXmlString(xmlInput);
PhoneNumberDesc.Builder phoneNumberDesc;
phoneNumberDesc = BuildMetadataFromXml.processPhoneNumberDescElement(
PhoneNumberDesc.Builder phoneNumberDesc = BuildMetadataFromXml.processPhoneNumberDescElement(
generalDesc, countryElement, "fixedLine");
assertEquals("\\d{6}", phoneNumberDesc.getNationalNumberPattern());
}


+ 1
- 1
tools/java/cpp-build/pom.xml View File

@ -154,7 +154,7 @@
<dependency>
<groupId>com.google.protobuf</groupId>
<artifactId>protobuf-java</artifactId>
<version>3.6.1</version>
<version>3.8.0</version>
</dependency>
</dependencies>


Loading…
Cancel
Save