diff --git a/java/build.xml b/java/build.xml
index baceb903d..01a19dbd3 100644
--- a/java/build.xml
+++ b/java/build.xml
@@ -41,6 +41,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/java/libphonenumber/src/com/google/i18n/phonenumbers/ShortNumbersRegionCodeSet.java b/java/libphonenumber/src/com/google/i18n/phonenumbers/ShortNumbersRegionCodeSet.java
new file mode 100644
index 000000000..252b4f699
--- /dev/null
+++ b/java/libphonenumber/src/com/google/i18n/phonenumbers/ShortNumbersRegionCodeSet.java
@@ -0,0 +1,86 @@
+/*
+ * Copyright (C) 2013 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.
+ */
+
+/* This file is automatically generated by {@link BuildMetadataProtoFromXml}.
+ * Please don't modify it directly.
+ */
+
+package com.google.i18n.phonenumbers;
+
+import java.util.HashSet;
+import java.util.Set;
+
+public class ShortNumbersRegionCodeSet {
+ // A set of all region codes for which data is available.
+ static Set getRegionCodeSet() {
+ // The capacity is set to 1 as there are 50 different entries,
+ // and this offers a load factor of roughly 0.75.
+ Set regionCodeSet = new HashSet(1);
+
+ regionCodeSet.add("AM");
+ regionCodeSet.add("AR");
+ regionCodeSet.add("BD");
+ regionCodeSet.add("CH");
+ regionCodeSet.add("CR");
+ regionCodeSet.add("CU");
+ regionCodeSet.add("CZ");
+ regionCodeSet.add("DE");
+ regionCodeSet.add("EE");
+ regionCodeSet.add("FR");
+ regionCodeSet.add("FJ");
+ regionCodeSet.add("FK");
+ regionCodeSet.add("FO");
+ regionCodeSet.add("GB");
+ regionCodeSet.add("GG");
+ regionCodeSet.add("GI");
+ regionCodeSet.add("GT");
+ regionCodeSet.add("GY");
+ regionCodeSet.add("HT");
+ regionCodeSet.add("IL");
+ regionCodeSet.add("IM");
+ regionCodeSet.add("IT");
+ regionCodeSet.add("JE");
+ regionCodeSet.add("JO");
+ regionCodeSet.add("KE");
+ regionCodeSet.add("KI");
+ regionCodeSet.add("KW");
+ regionCodeSet.add("LI");
+ regionCodeSet.add("LU");
+ regionCodeSet.add("MD");
+ regionCodeSet.add("ME");
+ regionCodeSet.add("MU");
+ regionCodeSet.add("MV");
+ regionCodeSet.add("MZ");
+ regionCodeSet.add("NA");
+ regionCodeSet.add("NC");
+ regionCodeSet.add("NL");
+ regionCodeSet.add("NR");
+ regionCodeSet.add("PA");
+ regionCodeSet.add("PY");
+ regionCodeSet.add("QA");
+ regionCodeSet.add("RS");
+ regionCodeSet.add("SA");
+ regionCodeSet.add("SB");
+ regionCodeSet.add("SC");
+ regionCodeSet.add("SG");
+ regionCodeSet.add("SH");
+ regionCodeSet.add("SR");
+ regionCodeSet.add("TL");
+ regionCodeSet.add("UY");
+
+ return regionCodeSet;
+ }
+}
diff --git a/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_AM b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_AM
new file mode 100644
index 000000000..0e9080ebe
Binary files /dev/null and b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_AM differ
diff --git a/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_AR b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_AR
new file mode 100644
index 000000000..8d718a2c4
Binary files /dev/null and b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_AR differ
diff --git a/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_BD b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_BD
new file mode 100644
index 000000000..503a8673b
Binary files /dev/null and b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_BD differ
diff --git a/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_CH b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_CH
new file mode 100644
index 000000000..54eeec72d
Binary files /dev/null and b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_CH differ
diff --git a/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_CR b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_CR
new file mode 100644
index 000000000..9334bdf9e
Binary files /dev/null and b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_CR differ
diff --git a/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_CU b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_CU
new file mode 100644
index 000000000..8f7dc1437
Binary files /dev/null and b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_CU differ
diff --git a/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_CZ b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_CZ
new file mode 100644
index 000000000..19cafbd75
Binary files /dev/null and b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_CZ differ
diff --git a/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_DE b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_DE
new file mode 100644
index 000000000..1e2f10e69
Binary files /dev/null and b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_DE differ
diff --git a/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_EE b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_EE
new file mode 100644
index 000000000..d64301be5
Binary files /dev/null and b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_EE differ
diff --git a/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_FJ b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_FJ
new file mode 100644
index 000000000..82c8f1390
Binary files /dev/null and b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_FJ differ
diff --git a/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_FK b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_FK
new file mode 100644
index 000000000..eaab36571
Binary files /dev/null and b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_FK differ
diff --git a/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_FO b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_FO
new file mode 100644
index 000000000..1c3c5afbc
Binary files /dev/null and b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_FO differ
diff --git a/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_FR b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_FR
new file mode 100644
index 000000000..e78665b99
Binary files /dev/null and b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_FR differ
diff --git a/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_GB b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_GB
new file mode 100644
index 000000000..4c2c7e1d3
Binary files /dev/null and b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_GB differ
diff --git a/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_GG b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_GG
new file mode 100644
index 000000000..a635fe5a6
Binary files /dev/null and b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_GG differ
diff --git a/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_GI b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_GI
new file mode 100644
index 000000000..185a070fd
Binary files /dev/null and b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_GI differ
diff --git a/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_GT b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_GT
new file mode 100644
index 000000000..27dd276c4
Binary files /dev/null and b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_GT differ
diff --git a/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_GY b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_GY
new file mode 100644
index 000000000..f517d3c42
Binary files /dev/null and b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_GY differ
diff --git a/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_HT b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_HT
new file mode 100644
index 000000000..87a12db25
Binary files /dev/null and b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_HT differ
diff --git a/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_IL b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_IL
new file mode 100644
index 000000000..5eccf83f2
Binary files /dev/null and b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_IL differ
diff --git a/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_IM b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_IM
new file mode 100644
index 000000000..787e2dbf8
Binary files /dev/null and b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_IM differ
diff --git a/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_IT b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_IT
new file mode 100644
index 000000000..91a64f58f
Binary files /dev/null and b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_IT differ
diff --git a/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_JE b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_JE
new file mode 100644
index 000000000..dc6507c00
Binary files /dev/null and b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_JE differ
diff --git a/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_JO b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_JO
new file mode 100644
index 000000000..18a23c143
Binary files /dev/null and b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_JO differ
diff --git a/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_KE b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_KE
new file mode 100644
index 000000000..45ed69684
Binary files /dev/null and b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_KE differ
diff --git a/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_KI b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_KI
new file mode 100644
index 000000000..c38886829
Binary files /dev/null and b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_KI differ
diff --git a/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_KW b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_KW
new file mode 100644
index 000000000..b6c6797f6
Binary files /dev/null and b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_KW differ
diff --git a/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_LI b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_LI
new file mode 100644
index 000000000..4ef32694e
Binary files /dev/null and b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_LI differ
diff --git a/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_LU b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_LU
new file mode 100644
index 000000000..81f1cab4f
Binary files /dev/null and b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_LU differ
diff --git a/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_MD b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_MD
new file mode 100644
index 000000000..caedfc8bd
Binary files /dev/null and b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_MD differ
diff --git a/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_ME b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_ME
new file mode 100644
index 000000000..e8fb198af
Binary files /dev/null and b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_ME differ
diff --git a/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_MU b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_MU
new file mode 100644
index 000000000..93e5b4083
Binary files /dev/null and b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_MU differ
diff --git a/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_MV b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_MV
new file mode 100644
index 000000000..5db0ae2ad
Binary files /dev/null and b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_MV differ
diff --git a/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_MZ b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_MZ
new file mode 100644
index 000000000..83e308ab8
Binary files /dev/null and b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_MZ differ
diff --git a/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_NA b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_NA
new file mode 100644
index 000000000..97cce4a1f
Binary files /dev/null and b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_NA differ
diff --git a/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_NC b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_NC
new file mode 100644
index 000000000..3fcc43c46
Binary files /dev/null and b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_NC differ
diff --git a/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_NL b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_NL
new file mode 100644
index 000000000..059f8693b
Binary files /dev/null and b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_NL differ
diff --git a/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_NR b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_NR
new file mode 100644
index 000000000..ab5e8e571
Binary files /dev/null and b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_NR differ
diff --git a/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_PA b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_PA
new file mode 100644
index 000000000..209e03121
Binary files /dev/null and b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_PA differ
diff --git a/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_PY b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_PY
new file mode 100644
index 000000000..2bda927b3
Binary files /dev/null and b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_PY differ
diff --git a/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_QA b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_QA
new file mode 100644
index 000000000..2a22f6904
Binary files /dev/null and b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_QA differ
diff --git a/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_RS b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_RS
new file mode 100644
index 000000000..f0632f3dd
Binary files /dev/null and b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_RS differ
diff --git a/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_SA b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_SA
new file mode 100644
index 000000000..bcdd70225
Binary files /dev/null and b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_SA differ
diff --git a/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_SB b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_SB
new file mode 100644
index 000000000..24ae10c06
Binary files /dev/null and b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_SB differ
diff --git a/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_SC b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_SC
new file mode 100644
index 000000000..15fbb6a55
Binary files /dev/null and b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_SC differ
diff --git a/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_SG b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_SG
new file mode 100644
index 000000000..7377e188d
Binary files /dev/null and b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_SG differ
diff --git a/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_SH b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_SH
new file mode 100644
index 000000000..1b799325f
Binary files /dev/null and b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_SH differ
diff --git a/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_SR b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_SR
new file mode 100644
index 000000000..026114b9e
Binary files /dev/null and b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_SR differ
diff --git a/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_TL b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_TL
new file mode 100644
index 000000000..769406d7d
Binary files /dev/null and b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_TL differ
diff --git a/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_UY b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_UY
new file mode 100644
index 000000000..4b6535eb7
Binary files /dev/null and b/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_UY differ
diff --git a/resources/ShortNumberMetadata.xml b/resources/ShortNumberMetadata.xml
new file mode 100644
index 000000000..2dff27851
--- /dev/null
+++ b/resources/ShortNumberMetadata.xml
@@ -0,0 +1,1301 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+]>
+
+
+
+
+
+
+ [18]\d{2,3}
+ \d{3,4}
+
+
+
+ 8[1-7]\d{2}|
+ 1(?:
+ 0[04-9]|
+ [1-9]\d
+ )
+
+ 8711
+
+
+
+
+
+
+ 1\d{2}
+ \d{3}
+
+
+
+ 1(?:
+ 0[2356]|
+ 1[02-5]|
+ 21
+ )
+
+ 121
+
+
+
+
+
+
+ 1\d{2,4}
+ \d{3,5}
+
+
+
+ 1(?:
+ 0(?:
+ [39]|
+ 5(?:
+ 0\d|
+ [1-4]
+ )|
+ 6\d{2}|
+ 7[0-4]|
+ 8[0-29]
+ )|
+ 1[6-9]|
+ 2(?:
+ 2[0-5]|
+ [34]
+ )|
+ 3(?:
+ 1\d?|
+ 3\d|
+ 6[3-6]
+ )|
+ 4(?:
+ 0\d|
+ 1\d{2}
+ )|
+ 5[2-9]
+ )
+
+ 103
+
+
+
+
+
+
+
+
+
+ 1\d{2,5}
+ \d{3,6}
+
+
+
+
+ 1(?:
+ 0[78]\d{2}|
+ 1(?:
+ [278]|
+ 45|
+ 6(?:
+ 000|
+ 111
+ )
+ )|
+ 4(?:
+ [03457]|
+ 1[45]
+ )|
+ 6(?:
+ 00|
+ [1-46]
+ )|
+ 8(?:
+ 02|
+ 1[189]|
+ 50|
+ 7|
+ 8[08]|
+ 99
+ )
+ )|
+ [2-9]\d{2,4}
+
+ 147
+
+
+
+ 14(?:
+ [0356]|
+ 1[45]
+ )
+
+ \d{3,4}
+ 140
+
+
+ 116\d{3}
+ 116000
+
+
+
+
+
+ 543|
+ 83111
+
+ \d{3,5}
+ 543
+
+
+
+ 10[78]\d{2}
+ \d{5}
+ 10742
+
+
+ 18\d{2}
+ \d{4}
+ 1818
+
+
+ [2-9]\d{2,4}
+ \d{3,6}
+ 600
+
+
+ 116\d{3}
+ \d{6}
+ 116000
+
+
+
+
+
+
+ 1\d{3}
+ \d{4}
+
+
+
+
+ 1(?:
+ 0(?:
+ 00|
+ 15|
+ 2[2-4679]
+ )|
+ 1(?:
+ 1[0-35-9]|
+ 37|
+ [46]6|
+ 7[57]|
+ 8[79]|
+ 9[0-379]
+ )|
+ 2(?:
+ 00|
+ [12]2|
+ 34|
+ 55
+ )|
+ 333|
+ 4(?:
+ 00|
+ 1[56]
+ )|
+ 5(?:
+ 15|
+ 5[15]
+ )|
+ 693|
+ 7(?:
+ 00|
+ 1[789]|
+ 2[02]|
+ [67]7
+ )|
+ 975
+ )
+
+ 1022
+
+
+
+
+
+
+ 1\d{2,5}
+ \d{3,6}
+
+
+
+ 1(?:
+ 1(?:
+ 6111|
+ 8
+ )|
+ 40
+ )
+
+ 140
+
+
+
+
+
+
+ 1\d{3,5}
+ \d{4,6}
+
+
+
+ 1(?:
+ 1(?:
+ 6\d{3}|
+ 8\d
+ )|
+ 2\d{2,3}|
+ 3\d{3,4}|
+ 4\d{3}|
+ 99
+ )
+
+ 116123
+
+
+
+
+
+
+ 1\d{2}
+ \d{3}
+
+
+
+ 115
+ 115
+
+
+
+
+
+
+ 1\d{2}
+ \d{3}
+
+
+
+ 1(?:
+ 1[13-9]|
+ [2-9]\d
+ )
+
+ 116
+
+
+
+
+
+
+
+
+
+ 1\d{1,5}|
+ 3\d{3,4}|
+ [4-8]\d{4}
+
+ \d{2,6}
+
+
+
+
+ 1(?:
+ 0\d{2}|
+ 1(?:
+ [02459]|
+ 6000|
+ 8\d{3}
+ )|
+ [578]
+ )|
+ 3\d{3}
+
+ 1010
+
+
+
+
+
+ 1(?:
+ 1(?:
+ [02459]|
+ 6\d{3}|
+ 8710
+ )|
+ [578]
+ )|
+ 3[01]\d{2}
+
+ 3010
+
+
+
+ 118777
+ \d{6}
+ 118777
+
+
+
+
+ (?:
+ 1(?:
+ 0|
+ 18(
+ [0-68]\d{3}|
+ 7(?:
+ 0\d|
+ 1[1-9]|
+ [2-9]\d
+ )
+ )
+ )|
+ 3[2-9]|
+ [4-8]\d{2}
+ )\d{2}
+
+ \d{4,6}
+ 3200
+
+
+
+ 16\d{2}
+ \d{4}
+ 1600
+
+
+
+ 10\d{2}
+ \d{4}
+ 1012
+
+
+ 118\d{3}
+ \d{6}
+ 118218
+
+
+ 116\d{3}
+ \d{6}
+ 116000
+
+
+
+ [3-8]\d{4}
+ \d{5}
+ 30000
+
+
+
+
+
+
+ [0-579]\d{1,2}
+ \d{2,3}
+
+
+
+
+ 0(?:
+ 04|
+ 1[34]|
+ 8[1-4]
+ )|
+ 1(?:
+ 0[1-3]|
+ [25]9
+ )|
+ 2[289]|
+ 30|
+ [45]4|
+ 75|
+ 913
+
+ 22
+
+
+
+
+
+
+ 1\d{2}
+ \d{3}
+
+
+
+ 123
+
+
+
+
+
+
+ 1\d{2,3}
+ \d{3,4}
+
+
+
+
+ 1(?:
+ 1[48]|
+ 4[124]\d|
+ 71\d|
+ 8[7-9]\d
+ )
+
+ 114
+
+
+
+
+
+
+ [1-4679]\d{2,5}
+ \d{3,6}
+
+
+
+
+ 1(?:
+ 0[01]|
+ 1(?:
+ 1|
+ [68]\d{3}
+ )|
+ 2[123]|
+ 33|
+ 4(?:
+ 1|
+ 7\d
+ )|
+ 5\d|
+ 70\d|
+ 800\d|
+ 9[15]
+ )|
+ 2(?:
+ 02|
+ 2(?:
+ 02|
+ 11|
+ 2
+ )|
+ 3(?:
+ 02|
+ 45
+ )|
+ 425
+ )|
+ 3[13]3|
+ 4(?:
+ 0[02]|
+ 35[01]|
+ 44[45]|
+ 5\d
+ )|
+ 650|
+ 789|
+ 901
+
+ 150
+
+
+
+
+
+
+ 1\d{2,5}
+ \d{3,6}
+
+
+
+
+ 1(?:
+ 0[01]|
+ 1(?:
+ 1|
+ [68]\d{3}
+ )|
+ 23|
+ 4(?:
+ 1|
+ 7\d
+ )|
+ 55|
+ 800\d|
+ 95
+ )
+
+ 155
+
+
+
+
+
+
+ [18]\d{2,5}
+ \d{3,6}
+
+
+
+ 1(?:
+ 00|
+ 1(?:
+ 6(?:
+ 00[06]|
+ 11[17]
+ )|
+ 8\d{2}
+ )|
+ 23|
+ 4(?:
+ 1|
+ 7[014]
+ )|
+ 5[015]|
+ 9[34]
+ )|
+ 8(?:
+ 00|
+ 4[0-2]|
+ 8\d
+ )
+
+ 116000
+
+
+
+
+
+
+ 1\d{2,3}
+ \d{3,4}
+
+
+
+ 1(?:
+ 10|
+ 2\d|
+ [57]\d{2}
+ )
+
+ 123
+
+
+
+
+
+
+ 0\d{2,3}
+ \d{3,4}
+
+
+
+ 0(?:
+ 02|
+ 171|
+ 444|
+ 7[67]7|
+ 801|
+ 9(?:
+ 0[78]|
+ [2-47]
+ )
+ )
+
+ 0801
+
+
+
+
+
+
+ 1\d{2}
+ \d{3}
+
+
+ 114
+
+
+
+
+
+
+ 1\d{3}
+ \d{4}
+
+
+ 1455
+
+
+
+
+
+
+ 1\d{2,5}
+ \d{3,6}
+
+
+ 1\d{2}(?:\d{3})?
+ 150
+
+
+
+
+
+
+ 1\d{2,5}
+ \d{3,6}
+
+
+
+
+ 1(?:
+ 1(?:
+ [47]|
+ 6\d{3}
+ )|
+ 2\d{2}|
+ 4(?:
+ 82|
+ 9\d{1,3}
+ )|
+ 5(?:
+ 00|
+ 1[58]|
+ 2[25]|
+ 3[03]|
+ 44
+ )|
+ 86|
+ 9(?:
+ 2(?:
+ [01]\d{2}|
+ [2-9]\d
+ )|
+ 4\d|
+ 696
+ )
+ )
+
+ 114
+
+
+
+
+
+
+ [12]\d{2,5}
+ \d{3,6}
+
+
+
+
+ 1(?:
+ 00|
+ 18\d{3}|
+ 23|
+ 4(?:
+ [14]|
+ 28|
+ 7\d
+ )|
+ 5\d|
+ 7(?:
+ 0[12]|
+ [128]|
+ 35?
+ )|
+ 808|
+ 9[135]
+ )|
+ 23[234]
+
+ 150
+
+
+
+
+
+
+ 1\d{2}
+ \d{3}
+
+
+
+ 1(?:
+ 09|
+ 1[01]|
+ 9[024-79]
+ )
+
+ 111
+
+
+
+
+
+
+ 1\d{2,3}
+ \d{3,4}
+
+
+
+
+ 1(?:
+ 0[09]|
+ 1(?:
+ [06]|
+ 9[0-2579]
+ )|
+ 2[13]|
+ 3[01]
+ )
+
+ 116
+
+
+
+
+
+
+ 1\d{2,3}
+ \d{3,4}
+
+
+
+ 10(?:
+ [0-8]|
+ 5[01259]
+ )
+
+ 100
+
+
+
+
+
+
+ 1\d{2}
+ \d{3}
+
+
+
+ 1(?:
+ [02-9]\d|
+ 1[013-9]
+ )
+
+ 177
+
+
+
+
+
+
+ 1\d{2,3}
+ \d{3,4}
+
+
+
+ 1(?:
+ 145|
+ 4(?:
+ [0357]|
+ 14
+ )|
+ 50\d{4}|
+ 6(?:
+ 00|
+ [1-4]
+ )|
+ 75|
+ 8(?:
+ 1[128]|
+ 7
+ )
+ )
+
+ 1600
+
+
+
+
+
+
+ 12\d{3}
+ \d{5}
+
+
+ 12123
+
+
+
+
+
+
+ 1\d{2,5}
+ \d{3,6}
+
+
+
+ 1(?:
+ 1(?:
+ [79]|
+ 6(?:
+ 000|
+ 1(?:
+ 11|
+ 23
+ )
+ )|
+ 8\d
+ )|
+ 4\d{3}|
+ 5[0-3]\d|
+ 6[0-389]\d|
+ 8\d{2}|
+ 9(?:
+ 0[04-9]|
+ [1-4]\d
+ )
+ )
+
+ 116000
+
+
+
+
+
+
+ 1\d{2,5}
+ \d{3,6}
+
+
+
+ 1(?:
+ 16\d{3}|
+ 2(?:
+ [015-9]|
+ \d{2}
+ )|
+ [0135]\d{2}|
+ 4\d{2,3}|
+ 9\d{3}
+ )
+
+ 1011
+
+
+
+
+
+
+ [189]\d{2,4}
+ \d{3,5}
+
+
+
+ 1\d{2,4}|
+ 8\d{3}|
+ 99\d
+
+ 995
+
+
+
+
+
+
+ 1\d{2}
+ \d{3}
+
+
+
+ 1(?:
+ [19]0|
+ 23
+ )
+
+ 123
+
+
+
+
+
+
+ 1\d{3}
+ \d{4}
+
+
+ 1[02-5]\d{2}
+ 1011
+
+
+
+
+
+
+ [19]\d{2,4}
+ \d{3,5}
+
+
+
+ 1\d{3}|
+ 9(?:
+ 3111|
+ \d{2}
+ )
+
+ 93111
+
+
+
+
+
+
+ 1\d{3}
+ \d{4}
+
+
+
+
+ 10(?:
+ 0[06]|
+ 1[02-46]|
+ 20|
+ 3[0125]|
+ 42|
+ 5[058]|
+ 77
+ )
+
+ 1000
+
+
+
+
+
+
+ 18\d{2}
+ \d{4}
+
+
+ 1833
+
+
+
+
+
+
+ 1\d{2}
+ \d{3}
+
+
+
+ 1(?:
+ 1[0-2]|
+ 23|
+ 92
+ )
+
+ 110
+
+
+
+
+
+
+ 10[2-4]
+ \d{3}
+
+
+ 102
+
+
+
+
+
+
+ 1[1-4]\d
+ \d{3}
+
+
+ 123
+
+
+
+
+
+
+ [129]\d{2,4}
+ \d{3,5}
+
+
+
+ (?:
+ 1|
+ 20|
+ 9[27]\d
+ )\d{2}
+
+ 2012
+
+
+
+
+
+
+ 1\d{2,5}
+ \d{3,6}
+
+
+
+ 1[189]\d{1,4}|
+ 9[234]
+
+ 112
+
+
+
+
+
+
+ [19]\d{2,5}
+ \d{3,6}
+
+
+
+ 1(?:
+ 16111|
+ 9(?:
+ 00|
+ 1[89]|
+ 9(?:
+ 099|
+ 22|
+ 91
+ )
+ )
+ )|
+ 9(
+ 37|
+ 8[6-8]|
+ 9[2-6]
+ )
+
+ 937
+
+
+
+
+
+
+ [19]\d{2}
+ \d{3}
+
+
+
+ 1(?:
+ 0[02-79]|
+ 1[12]|
+ 2[0-26]|
+ 4[189]|
+ 68
+ )|
+ 9(?:
+ [01]1|
+ 22|
+ 33|
+ 55|
+ 77|
+ 88
+ )
+
+ 100
+
+
+
+
+
+
+ [19]\d{2,3}
+ \d{3,4}
+
+
+
+ 1(?:
+ 0\d|
+ 1[027]|
+ 2[0-8]|
+ 3[13]|
+ 4[0-2]|
+ [59][15]|
+ 6[1-9]|
+ 7[124-6]|
+ 8[158]
+ )|
+ 96\d{2}
+
+ 100
+
+
+
+
+
+
+ [19]\d{2,4}
+ \d{3,5}
+
+
+
+ 1(?:
+ [0136]\d{2}|
+ [89](?:
+ [1-9]\d|
+ 0[1-9]
+ )|
+ [57]\d{2,3})|
+ 99[0246-8]
+
+ 1312
+
+
+
+
+
+
+ 1\d{2,3}
+ \d{3,4}
+
+
+ 1234
+
+
+
+
+
+
+ 1\d{2,3}
+ \d{3,4}
+
+
+
+ 1(?:
+ [02-9]\d|
+ 1[0-46-9]|
+ \d{3}
+ )
+
+ 1234
+
+
+
+
+
+
+ 1\d{2}
+ \d{3}
+
+
+
+ 1(?:
+ 0[02]|
+ 2[0138]|
+ 72|
+ 9[07]
+ )
+
+ 102
+
+
+
+
+
+
+ 1\d{2}
+ \d{3}
+
+
+
+ 1(?:
+ 0[4-9]|
+ 1[2368]|
+ 2[0-3568]
+ )
+
+ 104
+
+
+
+
diff --git a/tools/java/common/src/com/google/i18n/phonenumbers/BuildMetadataFromXml.java b/tools/java/common/src/com/google/i18n/phonenumbers/BuildMetadataFromXml.java
index 15fd2b747..5ce14c2e5 100644
--- a/tools/java/common/src/com/google/i18n/phonenumbers/BuildMetadataFromXml.java
+++ b/tools/java/common/src/com/google/i18n/phonenumbers/BuildMetadataFromXml.java
@@ -166,7 +166,9 @@ public class BuildMetadataFromXml {
String nationalPrefix) {
PhoneMetadata.Builder metadata = PhoneMetadata.newBuilder();
metadata.setId(regionCode);
- metadata.setCountryCode(Integer.parseInt(element.getAttribute(COUNTRY_CODE)));
+ if (element.hasAttribute(COUNTRY_CODE)) {
+ metadata.setCountryCode(Integer.parseInt(element.getAttribute(COUNTRY_CODE)));
+ }
if (element.hasAttribute(LEADING_DIGITS)) {
metadata.setLeadingDigits(validateRE(element.getAttribute(LEADING_DIGITS)));
}
diff --git a/tools/java/cpp-build/target/cpp-build-1.0-SNAPSHOT-jar-with-dependencies.jar b/tools/java/cpp-build/target/cpp-build-1.0-SNAPSHOT-jar-with-dependencies.jar
index 5398924b0..60c4d73b7 100644
Binary files a/tools/java/cpp-build/target/cpp-build-1.0-SNAPSHOT-jar-with-dependencies.jar and b/tools/java/cpp-build/target/cpp-build-1.0-SNAPSHOT-jar-with-dependencies.jar differ
diff --git a/tools/java/java-build/src/com/google/i18n/phonenumbers/BuildMetadataProtoFromXml.java b/tools/java/java-build/src/com/google/i18n/phonenumbers/BuildMetadataProtoFromXml.java
index 452adce2d..64160b1a6 100644
--- a/tools/java/java-build/src/com/google/i18n/phonenumbers/BuildMetadataProtoFromXml.java
+++ b/tools/java/java-build/src/com/google/i18n/phonenumbers/BuildMetadataProtoFromXml.java
@@ -177,11 +177,13 @@ public class BuildMetadataProtoFromXml extends Command {
" // country/region represented by that country code. In the case of multiple\n" +
" // countries sharing a calling code, such as the NANPA countries, the one\n" +
" // indicated with \"isMainCountryForCode\" in the metadata should be first.\n";
- private static final String SET_COMMENT =
+ private static final String COUNTRY_CODE_SET_COMMENT =
" // A set of all country codes for which data is available.\n";
+ private static final String REGION_CODE_SET_COMMENT =
+ " // A set of all region codes for which data is available.\n";
private static final double CAPACITY_FACTOR = 0.75;
private static final String CAPACITY_COMMENT =
- " // The capacity is set to %d as there are %d different country codes,\n" +
+ " // The capacity is set to %d as there are %d different entries,\n" +
" // and this offers a load factor of roughly " + CAPACITY_FACTOR + ".\n";
private static void writeCountryCallingCodeMappingToJavaFile(
@@ -197,13 +199,16 @@ public class BuildMetadataProtoFromXml extends Command {
break;
}
}
+ boolean hasCountryCodes = countryCodeToRegionCodeMap.size() > 1;
ClassWriter writer = new ClassWriter(outputDir, mappingClass, copyright);
- if (hasRegionCodes) {
+ if (hasRegionCodes && hasCountryCodes) {
writeMap(writer, capacity, countryCodeToRegionCodeMap);
+ } else if (hasCountryCodes) {
+ writeCountryCodeSet(writer, capacity, countryCodeToRegionCodeMap.keySet());
} else {
- writeSet(writer, capacity, countryCodeToRegionCodeMap.keySet());
+ writeRegionCodeSet(writer, capacity, countryCodeToRegionCodeMap.get(0));
}
writer.writeToFile();
@@ -243,9 +248,30 @@ public class BuildMetadataProtoFromXml extends Command {
writer.addToBody(" }\n");
}
- private static void writeSet(ClassWriter writer, int capacity,
- Set countryCodeSet) {
- writer.addToBody(SET_COMMENT);
+ private static void writeRegionCodeSet(ClassWriter writer, int capacity,
+ List regionCodeSet) {
+ writer.addToBody(REGION_CODE_SET_COMMENT);
+
+ writer.addToImports("java.util.HashSet");
+ writer.addToImports("java.util.Set");
+
+ writer.addToBody(" static Set getRegionCodeSet() {\n");
+ writer.formatToBody(CAPACITY_COMMENT, capacity, regionCodeSet.size());
+ writer.addToBody(" Set regionCodeSet = new HashSet(" + capacity + ");\n");
+ writer.addToBody("\n");
+
+ for (String regionCode : regionCodeSet) {
+ writer.addToBody(" regionCodeSet.add(\"" + regionCode + "\");\n");
+ }
+
+ writer.addToBody("\n");
+ writer.addToBody(" return regionCodeSet;\n");
+ writer.addToBody(" }\n");
+ }
+
+ private static void writeCountryCodeSet(ClassWriter writer, int capacity,
+ Set countryCodeSet) {
+ writer.addToBody(COUNTRY_CODE_SET_COMMENT);
writer.addToImports("java.util.HashSet");
writer.addToImports("java.util.Set");
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 b44d6fa05..81012875b 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