* It was confusing and unnecessary. Not every country that has short numbers beginning with a 0 had it, and it is not the only digit that could overlap with a national prefix and hence be interpreted incorrectly.
Alternate metadata and test metadata for C++ was regenerated not due to changes in this commit, but due to PR #1726 and that they should have been updated then.
1) Changing the BuildMetadataFromXml to only set
same_mobile_and_fixed_line_pattern and
national_prefix_optional_when_formatting if they differ from default
values, and the domestic_carrier_code_formatting_rule,
international_prefix and national_prefix_formatting_rule if there is
one.
2) Adding a test with some golden data for the BuildMetadataJsonFromXml.
3) Adding to the proto a missing explicit default false.
4) Updating a couple of methods in the Phonemetadata.java class to have
names that match those of the auto-generated Phonemetadata used by the
CPP build, now that we use those methods when building the metadata.
5) Fix to ant build file to enable the junit command to still work (instructions on open-source on how to regenerate metadata files refer to this)
Resulting data is smaller for Java and C++ and the resulting BuildMetadataJsonFromXml code is cleaner.
Update doc references to refer to CLDR and the page of CLDR codes where
appropriate - it used to say ISO country codes were used, but they aren't.
Also updated to refer to two *or three* letter language codes since they may be three letters (we use the shortest defined one for a language)
Updating comments about leadingDigits field at territory level as well.
Metadata changes:
-- Drops the "-1" that was erroneously included in possible lengths before (didn't break anything, but was wrong) - it was a possibleLength of a sub-component so got added to the generalDesc possibleLengths
-- possibleNumberPattern no longer inherited: we don't use this anyway, we will do another CL soon to stop including it at all in the generated metadata
-- exampleNumber is no longer set on fixed-line and mobile elements from the generalDesc
XML file changes:
-- Stopped specifying "NA" and "-1" specifically for fixed-line and mobile blocks; now they are treated as every other type of phone number: if missing, don't fill them in from generalDesc, but leave them missing.
Code changes:
-- Stop using the exampleNumber on generalDesc for non-geo entities, but look at their phonenumber descs - the exampleNumber won't be stored on the generalDesc anymore. This affects porters if they either copied our build logic or used our built metadata in some way; they should update this method in their port too.
Using new possible length information to calculate whether a short
number is the right length or not. This made us realise that the data
was missing for MY; this was added.
Changing PhoneNumberUtil to use the possibleLengths information, not the reg-exes.
Note the API is not changing, but the metadata is now somewhat stricter for
many countries, since before we applied only a minimum and maximum length for
most countries, and now we specify exactly which lengths are possible.
This has a flow-on effect when parsing, since we decide whether to do certain
operations like strip a national prefix based on whether the number is a
possible length before/after - when parsing, if the number is shorter than the *national* pattern, we no longer strip the national prefix.
Affected countries:
AD (7 digits now invalid)
AM (7 digits now invalid)
AR (9 digits now invalid)
AZ (8 digits now invalid)
BG (4 digits now valid for local-only numbers)
BJ (5-7 digits now invalid)
CC/CX (5 digit numbers now possible: this should always have been the case, but the generalDesc was wrong and didn't reflect its child elements. We now calculate it based on them, which allows 5 digit numbers.)
CO (9 digits now invalid)
CR (9 digits now invalid)
ET (8 digits now invalid)
GE (7 and 8 digits now invalid)
GH (8 digits now invalid)
IL (5 and 6 digits now invalid)
IM/JE/GG (7, 8 and 9 digits now invalid, shortest national number length now 10, so parsing affected for numbers shorter than this)
IS (8 digits now invalid)
KG (7,8 digits now invalid)
KR (11 digits now invalid)
LA (7 digits now invalid)
LI (8 digits now invalid)
LY (8 digits now invalid)
MV (8 and 9 digits now invalid)
MW (8 digits now invalid)
MX (9 digits now invalid)
NP (9 digits now invalid)
SE (11 digits now invalid)
SG (9 digits now invalid)
SL (7 digits now invalid)
SM (7-9 digits now invalid)
UA (8 digits now invalid)
UG (8 digits now invalid)
UZ (8 digits now invalid)
Code changes:
* Phonemetadata.java has two more fields to represent possible lengths of phone numbers. Changed BuildMetadataFromXml (and the resultant jar) to alter the way that metadata about possible-lengths information is consumed when constructing metadata to populate these. Discussion list email: https://groups.google.com/forum/#!topic/libphonenumber-discuss/75TOpTFVi08
Metadata changes:
* Updated phone metadata for region code(s): AG, AM, AX, BY, CD, FI, IN, KR, MA, NA, NL, PK, SY
* Updated short number metadata for region code(s): BR, GB, NL, NZ
* New geocoding data for country calling code(s): 82 (pl, pt, ro, ru, sl, sr, uk, vi)
* Updated carrier data for country calling code(s): 27 (en), 91 (en), 243 (en), 963 (en)
https://groups.google.com/forum/#!topic/libphonenumber-discuss/75TOpTFVi08
* Initial code changes to support the new possibleLengths infrastructure
when building metadata. Includes setting these in the main metadata
file and changing the code to populate them in the PhoneMetadata proto
at build time. Updating tests for Java.
* Updating comment about the possible_lengths_local_only field.
* Adding the generated jars that build files containing the new possible
lengths fields.
* Rebuilding short-number metadata with the new proto field. Not doing
this at release time so we can see what changes in the metadata are due
to metadata fixes, rather than this possibleLengths field.
* Regeneration of phone number metadata with the new possible length
information filled in.
Includes some possible length changes for KR and BY, and a validation
fix for NA where a digit was missing.
* Updating the test proto metadata files with the new possible length
information.
* Added notes about the code changes.
* Regenerating C++ metadata with new possibleLength info and updating unit
test to check this works.
Aug 24, 2016: libphonenumber-7.6.0
Code changes:
Refactored metadata loading and closed all streams after loading.
Made isNumberGeographical public, and changed the geocoder to use this when checking whether to give a detailed answer or country-level only.
Build changes:
Use protobuf-javanano 3.0.0-alpha-7 from Maven Central.
Metadata changes:
Updated phone metadata for region code(s): EH, ET, JM, MA, SK, SN, SY, ZM
Updated short number metadata for region code(s): ZA
Updated geocoding data for country calling code(s): 212 (en)
New carrier data for country calling code(s): 86 (zh, zh_Hant), 852 (zh, zh_Hant), 963 (en)
Updated carrier data for country calling code(s): 86 (en), 212 (en), 251 (en), 421 (en)
Deleted unsupported SingleFilePhoneNumberMetadataProto
Making function IsNumberGeographical public. This function operates on
the type of number and the country it belongs to only, so may have some
false positives.
Using this in the geocoder so that geocoding now limited to numbers that
we consider geographical, based on their type and country, rather than
just based on their type. The C++ geocoder did not previously check the
number type/country at all.
Indonesian and Chinese mobile numbers have now been added to the list of
possibly-geographical numbers.