diff --git a/java/build.xml b/java/build.xml
index 8ce3ba368..27772665c 100644
--- a/java/build.xml
+++ b/java/build.xml
@@ -10,8 +10,8 @@
-
-
+
+
diff --git a/javascript/i18n/phonenumbers/metadata.js b/javascript/i18n/phonenumbers/metadata.js
index 514315ec2..84a3a92c6 100644
--- a/javascript/i18n/phonenumbers/metadata.js
+++ b/javascript/i18n/phonenumbers/metadata.js
@@ -5059,7 +5059,7 @@ i18n.phonenumbers.metadata.countryToMetadata = {
,,[,,"(?:112|99[3459])","\\d{3}",,,"999"]
,[,,"NA","NA"]
]
-,"001":[,[,,"\\d{8}","\\d{8}",,,"12345678"]
+,"800":[,[,,"\\d{8}","\\d{8}",,,"12345678"]
,[,,"NA","NA",,,"12345678"]
,[,,"NA","NA",,,"12345678"]
,[,,"\\d{8}","\\d{8}",,,"12345678"]
@@ -5075,7 +5075,7 @@ i18n.phonenumbers.metadata.countryToMetadata = {
,,[,,"NA","NA"]
,[,,"NA","NA"]
]
-,"001":[,[,,"\\d{8}","\\d{8}",,,"12345678"]
+,"808":[,[,,"\\d{8}","\\d{8}",,,"12345678"]
,[,,"NA","NA",,,"12345678"]
,[,,"NA","NA",,,"12345678"]
,[,,"NA","NA"]
@@ -5091,7 +5091,7 @@ i18n.phonenumbers.metadata.countryToMetadata = {
,,[,,"NA","NA"]
,[,,"NA","NA"]
]
-,"001":[,[,,"[35-7]\\d{8}","\\d{9}",,,"301234567"]
+,"870":[,[,,"[35-7]\\d{8}","\\d{9}",,,"301234567"]
,[,,"NA","NA",,,"301234567"]
,[,,"(?:[356]\\d|7[6-8])\\d{7}","\\d{9}",,,"301234567"]
,[,,"NA","NA"]
@@ -5107,7 +5107,7 @@ i18n.phonenumbers.metadata.countryToMetadata = {
,,[,,"NA","NA"]
,[,,"NA","NA"]
]
-,"001":[,[,,"51\\d{7}(?:\\d{3})?","\\d{9}(?:\\d{3})?",,,"510012345"]
+,"883":[,[,,"51\\d{7}(?:\\d{3})?","\\d{9}(?:\\d{3})?",,,"510012345"]
,[,,"NA","NA",,,"510012345"]
,[,,"NA","NA",,,"510012345"]
,[,,"NA","NA"]
@@ -5124,7 +5124,7 @@ i18n.phonenumbers.metadata.countryToMetadata = {
,,[,,"NA","NA"]
,[,,"NA","NA"]
]
-,"001":[,[,,"\\d{11}","\\d{11}",,,"12345678901"]
+,"888":[,[,,"\\d{11}","\\d{11}",,,"12345678901"]
,[,,"NA","NA",,,"12345678901"]
,[,,"NA","NA",,,"12345678901"]
,[,,"NA","NA"]
@@ -5140,7 +5140,7 @@ i18n.phonenumbers.metadata.countryToMetadata = {
,,[,,"NA","NA"]
,[,,"NA","NA"]
]
-,"001":[,[,,"\\d{9}","\\d{9}",,,"123456789"]
+,"979":[,[,,"\\d{9}","\\d{9}",,,"123456789"]
,[,,"NA","NA",,,"123456789"]
,[,,"NA","NA",,,"123456789"]
,[,,"NA","NA"]
diff --git a/javascript/i18n/phonenumbers/metadatafortesting.js b/javascript/i18n/phonenumbers/metadatafortesting.js
index 998012c34..8585b2986 100644
--- a/javascript/i18n/phonenumbers/metadatafortesting.js
+++ b/javascript/i18n/phonenumbers/metadatafortesting.js
@@ -452,7 +452,7 @@ i18n.phonenumbers.metadata.countryToMetadata = {
,,[,,"NA","NA"]
,[,,"NA","NA"]
]
-,"001":[,[,,"\\d{8}","\\d{8}",,,"12345678"]
+,"800":[,[,,"\\d{8}","\\d{8}",,,"12345678"]
,[,,"NA","NA",,,"12345678"]
,[,,"NA","NA",,,"12345678"]
,[,,"\\d{8}","\\d{8}",,,"12345678"]
diff --git a/javascript/i18n/phonenumbers/metadatalite.js b/javascript/i18n/phonenumbers/metadatalite.js
index 0b399328e..fd45f0a1a 100644
--- a/javascript/i18n/phonenumbers/metadatalite.js
+++ b/javascript/i18n/phonenumbers/metadatalite.js
@@ -5059,7 +5059,7 @@ i18n.phonenumbers.metadata.countryToMetadata = {
,,[,,"(?:112|99[3459])","\\d{3}"]
,[,,"NA","NA"]
]
-,"001":[,[,,"\\d{8}","\\d{8}"]
+,"800":[,[,,"\\d{8}","\\d{8}"]
,[,,"NA","NA"]
,[,,"NA","NA"]
,[,,"\\d{8}","\\d{8}"]
@@ -5075,7 +5075,7 @@ i18n.phonenumbers.metadata.countryToMetadata = {
,,[,,"NA","NA"]
,[,,"NA","NA"]
]
-,"001":[,[,,"\\d{8}","\\d{8}"]
+,"808":[,[,,"\\d{8}","\\d{8}"]
,[,,"NA","NA"]
,[,,"NA","NA"]
,[,,"NA","NA"]
@@ -5091,7 +5091,7 @@ i18n.phonenumbers.metadata.countryToMetadata = {
,,[,,"NA","NA"]
,[,,"NA","NA"]
]
-,"001":[,[,,"[35-7]\\d{8}","\\d{9}"]
+,"870":[,[,,"[35-7]\\d{8}","\\d{9}"]
,[,,"NA","NA"]
,[,,"(?:[356]\\d|7[6-8])\\d{7}","\\d{9}"]
,[,,"NA","NA"]
@@ -5107,7 +5107,7 @@ i18n.phonenumbers.metadata.countryToMetadata = {
,,[,,"NA","NA"]
,[,,"NA","NA"]
]
-,"001":[,[,,"51\\d{7}(?:\\d{3})?","\\d{9}(?:\\d{3})?"]
+,"883":[,[,,"51\\d{7}(?:\\d{3})?","\\d{9}(?:\\d{3})?"]
,[,,"NA","NA"]
,[,,"NA","NA"]
,[,,"NA","NA"]
@@ -5124,7 +5124,7 @@ i18n.phonenumbers.metadata.countryToMetadata = {
,,[,,"NA","NA"]
,[,,"NA","NA"]
]
-,"001":[,[,,"\\d{11}","\\d{11}"]
+,"888":[,[,,"\\d{11}","\\d{11}"]
,[,,"NA","NA"]
,[,,"NA","NA"]
,[,,"NA","NA"]
@@ -5140,7 +5140,7 @@ i18n.phonenumbers.metadata.countryToMetadata = {
,,[,,"NA","NA"]
,[,,"NA","NA"]
]
-,"001":[,[,,"\\d{9}","\\d{9}"]
+,"979":[,[,,"\\d{9}","\\d{9}"]
,[,,"NA","NA"]
,[,,"NA","NA"]
,[,,"NA","NA"]
diff --git a/javascript/i18n/phonenumbers/phonenumberutil.js b/javascript/i18n/phonenumbers/phonenumberutil.js
index 04d698020..ffc140b9f 100644
--- a/javascript/i18n/phonenumbers/phonenumberutil.js
+++ b/javascript/i18n/phonenumbers/phonenumberutil.js
@@ -1250,9 +1250,16 @@ i18n.phonenumbers.PhoneNumberUtil.normalizeHelper_ =
i18n.phonenumbers.PhoneNumberUtil.prototype.isValidRegionCode_ =
function(regionCode) {
+ // In Java we check whether the regionCode is contained in supportedRegions
+ // that is built out of all the values of countryCallingCodeToRegionCodeMap
+ // (countryCodeToRegionCodeMap in JS) minus REGION_CODE_FOR_NON_GEO_ENTITY.
+ // In JS we check whether the regionCode is contained in the keys of
+ // countryToMetadata but since for non-geographical country calling codes
+ // (e.g. +800) we use the country calling codes instead of the region code as
+ // key in the map we have to make sure regionCode is not a number to prevent
+ // returning true for non-geographical country calling codes.
return regionCode != null &&
- regionCode !=
- i18n.phonenumbers.PhoneNumberUtil.REGION_CODE_FOR_NON_GEO_ENTITY &&
+ isNaN(regionCode) &&
regionCode.toUpperCase() in i18n.phonenumbers.metadata.countryToMetadata;
};
@@ -2512,8 +2519,7 @@ i18n.phonenumbers.PhoneNumberUtil.prototype.getMetadataForRegion =
i18n.phonenumbers.PhoneNumberUtil.prototype.
getMetadataForNonGeographicalRegion = function(countryCallingCode) {
- return this.getMetadataForRegion(
- this.getRegionCodeForCountryCode(countryCallingCode));
+ return this.getMetadataForRegion('' + countryCallingCode);
};
diff --git a/tools/java/java-build/src/com/google/i18n/phonenumbers/BuildMetadataJsonFromXml.java b/tools/java/java-build/src/com/google/i18n/phonenumbers/BuildMetadataJsonFromXml.java
index a130688b4..76e281492 100644
--- a/tools/java/java-build/src/com/google/i18n/phonenumbers/BuildMetadataJsonFromXml.java
+++ b/tools/java/java-build/src/com/google/i18n/phonenumbers/BuildMetadataJsonFromXml.java
@@ -136,6 +136,11 @@ public class BuildMetadataJsonFromXml extends Command {
writer.write(",");
}
String regionCode = metadata.getId();
+ // For non-geographical country calling codes (e.g. +800), use the country calling codes
+ // instead of the region code as key in the map.
+ if (regionCode.equals("001")) {
+ regionCode = Integer.toString(metadata.getCountryCode());
+ }
JSArrayBuilder jsArrayBuilder = new JSArrayBuilder();
toJsArray(metadata, jsArrayBuilder);
writer.write("\"");
diff --git a/tools/java/java-build/target/java-build-1.0-SNAPSHOT-jar-with-dependencies.jar b/tools/java/java-build/target/java-build-1.0-SNAPSHOT-jar-with-dependencies.jar
index 398f0363b..3d67596ed 100644
Binary files a/tools/java/java-build/target/java-build-1.0-SNAPSHOT-jar-with-dependencies.jar and b/tools/java/java-build/target/java-build-1.0-SNAPSHOT-jar-with-dependencies.jar differ