phonelib 0.6.2 → 0.6.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/{README.rdoc → README.md} +116 -75
- data/data/extended_data.dat +0 -0
- data/data/libphonenumber/FALSEHOODS.md +16 -0
- data/data/libphonenumber/FAQ.md +8 -0
- data/data/libphonenumber/README.md +1 -1
- data/data/libphonenumber/cpp/src/phonenumbers/alternate_format.cc +108 -100
- data/data/libphonenumber/cpp/src/phonenumbers/lite_metadata.cc +10070 -10016
- data/data/libphonenumber/cpp/src/phonenumbers/metadata.cc +10938 -10884
- data/data/libphonenumber/cpp/src/phonenumbers/short_metadata.cc +2481 -2455
- data/data/libphonenumber/java/carrier/pom.xml +26 -4
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/255_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/374_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/374_ru +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/421_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/66_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/91_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/93_fa +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/973_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/98_fa +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/992_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/994_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/config +0 -0
- data/data/libphonenumber/java/demo/pom.xml +6 -6
- data/data/libphonenumber/java/geocoder/pom.xml +26 -4
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1747_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1934_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/371_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/44_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/504_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/82_bg +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/82_ca +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/82_el +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/82_es +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/82_fi +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/82_hi +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/82_hu +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/82_iw +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/82_ja +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/82_tr +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/91_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/93_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/93_fa +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/98_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/98_fa +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/992_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/994_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/config +0 -0
- data/data/libphonenumber/java/internal/prefixmapper/pom.xml +25 -3
- data/data/libphonenumber/java/libphonenumber/pom.xml +23 -2
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/MetadataLoader.java +2 -1
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/MultiFileMetadataSourceImpl.java +63 -70
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberAlternateFormatsProto_595 +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_AZ +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BD +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BG +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BH +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_CI +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_CN +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_HK +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_HN +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_IN +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_KN +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_KW +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_LV +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_PY +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_SK +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_SN +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_TC +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_TH +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_TJ +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_TZ +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_US +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_AE +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_AR +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_BR +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_GB +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_IN +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_NO +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_SK +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_ZA +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/SingleFilePhoneNumberMetadataProto +0 -0
- data/data/libphonenumber/java/libphonenumber/test/com/google/i18n/phonenumbers/MultiFileMetadataSourceImplTest.java +25 -5
- data/data/libphonenumber/java/pom.xml +2 -2
- data/data/libphonenumber/java/release_notes.txt +45 -0
- data/data/libphonenumber/javascript/i18n/phonenumbers/demo-compiled.js +72 -70
- data/data/libphonenumber/javascript/i18n/phonenumbers/metadata.js +38 -32
- data/data/libphonenumber/javascript/i18n/phonenumbers/metadatalite.js +38 -32
- data/data/libphonenumber/resources/PhoneNumberAlternateFormats.xml +16 -0
- data/data/libphonenumber/resources/PhoneNumberMetadata.xml +232 -96
- data/data/libphonenumber/resources/ShortNumberMetadata.xml +188 -44
- data/data/libphonenumber/resources/carrier/en/255.txt +2 -0
- data/data/libphonenumber/resources/carrier/en/374.txt +3 -3
- data/data/libphonenumber/resources/carrier/en/421.txt +1 -0
- data/data/libphonenumber/resources/carrier/en/66.txt +1 -0
- data/data/libphonenumber/resources/carrier/en/91.txt +419 -253
- data/data/libphonenumber/resources/carrier/en/973.txt +1 -0
- data/data/libphonenumber/resources/carrier/en/992.txt +1 -0
- data/data/libphonenumber/resources/carrier/en/994.txt +3 -0
- data/data/libphonenumber/resources/carrier/fa/93.txt +24 -0
- data/data/libphonenumber/resources/carrier/fa/98.txt +30 -0
- data/data/libphonenumber/resources/carrier/ru/374.txt +28 -0
- data/data/libphonenumber/resources/geocoding/bg/82.txt +34 -0
- data/data/libphonenumber/resources/geocoding/ca/82.txt +34 -0
- data/data/libphonenumber/resources/geocoding/el/82.txt +28 -0
- data/data/libphonenumber/resources/geocoding/en/1.txt +2 -0
- data/data/libphonenumber/resources/geocoding/en/371.txt +3 -0
- data/data/libphonenumber/resources/geocoding/en/44.txt +19 -1
- data/data/libphonenumber/resources/geocoding/en/504.txt +19 -0
- data/data/libphonenumber/resources/geocoding/en/91.txt +1 -5
- data/data/libphonenumber/resources/geocoding/en/93.txt +52 -0
- data/data/libphonenumber/resources/geocoding/en/98.txt +0 -2
- data/data/libphonenumber/resources/geocoding/en/992.txt +77 -0
- data/data/libphonenumber/resources/geocoding/en/994.txt +98 -0
- data/data/libphonenumber/resources/geocoding/es/82.txt +33 -0
- data/data/libphonenumber/resources/geocoding/fa/93.txt +53 -0
- data/data/libphonenumber/resources/geocoding/fa/98.txt +0 -2
- data/data/libphonenumber/resources/geocoding/fi/82.txt +34 -0
- data/data/libphonenumber/resources/geocoding/hi/82.txt +36 -0
- data/data/libphonenumber/resources/geocoding/hu/82.txt +35 -0
- data/data/libphonenumber/resources/geocoding/iw/82.txt +37 -0
- data/data/libphonenumber/resources/geocoding/ja/82.txt +35 -0
- data/data/libphonenumber/resources/geocoding/tr/82.txt +35 -0
- data/data/libphonenumber/tools/java/common/pom.xml +2 -0
- data/data/libphonenumber/tools/java/cpp-build/pom.xml +4 -0
- data/data/libphonenumber/tools/java/data/pom.xml +1 -11
- data/data/libphonenumber/tools/java/java-build/pom.xml +2 -0
- data/data/phone_data.dat +0 -0
- data/lib/phonelib.rb +7 -6
- data/lib/phonelib/core.rb +116 -68
- data/lib/phonelib/data_importer.rb +23 -19
- data/lib/phonelib/data_importer_helper.rb +16 -16
- data/lib/phonelib/phone.rb +47 -137
- data/lib/phonelib/phone_analyzer.rb +27 -25
- data/lib/phonelib/phone_analyzer_helper.rb +16 -9
- data/lib/phonelib/phone_extended_data.rb +27 -17
- data/lib/phonelib/phone_formatter.rb +131 -0
- data/lib/phonelib/version.rb +2 -3
- data/lib/tasks/phonelib_tasks.rake +0 -2
- data/lib/validators/phone_validator.rb +24 -14
- metadata +42 -3
@@ -3,14 +3,14 @@
|
|
3
3
|
<modelVersion>4.0.0</modelVersion>
|
4
4
|
<groupId>com.googlecode.libphonenumber</groupId>
|
5
5
|
<artifactId>carrier</artifactId>
|
6
|
-
<version>1.
|
6
|
+
<version>1.40-SNAPSHOT</version>
|
7
7
|
<packaging>jar</packaging>
|
8
8
|
<url>https://github.com/googlei18n/libphonenumber/</url>
|
9
9
|
|
10
10
|
<parent>
|
11
11
|
<groupId>com.googlecode.libphonenumber</groupId>
|
12
12
|
<artifactId>libphonenumber-parent</artifactId>
|
13
|
-
<version>7.
|
13
|
+
<version>7.5.2-SNAPSHOT</version>
|
14
14
|
</parent>
|
15
15
|
|
16
16
|
<build>
|
@@ -28,18 +28,40 @@
|
|
28
28
|
<targetPath>com/google/i18n/phonenumbers/carrier/testing_data</targetPath>
|
29
29
|
</testResource>
|
30
30
|
</testResources>
|
31
|
+
<plugins>
|
32
|
+
<plugin>
|
33
|
+
<groupId>org.codehaus.mojo</groupId>
|
34
|
+
<artifactId>animal-sniffer-maven-plugin</artifactId>
|
35
|
+
<version>1.15</version>
|
36
|
+
<executions>
|
37
|
+
<execution>
|
38
|
+
<phase>test</phase>
|
39
|
+
<goals>
|
40
|
+
<goal>check</goal>
|
41
|
+
</goals>
|
42
|
+
</execution>
|
43
|
+
</executions>
|
44
|
+
<configuration>
|
45
|
+
<signature>
|
46
|
+
<groupId>org.codehaus.mojo.signature</groupId>
|
47
|
+
<artifactId>java15</artifactId>
|
48
|
+
<version>1.0</version>
|
49
|
+
</signature>
|
50
|
+
</configuration>
|
51
|
+
</plugin>
|
52
|
+
</plugins>
|
31
53
|
</build>
|
32
54
|
|
33
55
|
<dependencies>
|
34
56
|
<dependency>
|
35
57
|
<groupId>com.googlecode.libphonenumber</groupId>
|
36
58
|
<artifactId>libphonenumber</artifactId>
|
37
|
-
<version>7.
|
59
|
+
<version>7.5.2-SNAPSHOT</version>
|
38
60
|
</dependency>
|
39
61
|
<dependency>
|
40
62
|
<groupId>com.googlecode.libphonenumber</groupId>
|
41
63
|
<artifactId>prefixmapper</artifactId>
|
42
|
-
<version>2.
|
64
|
+
<version>2.50-SNAPSHOT</version>
|
43
65
|
</dependency>
|
44
66
|
</dependencies>
|
45
67
|
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
@@ -4,11 +4,11 @@
|
|
4
4
|
<parent>
|
5
5
|
<artifactId>libphonenumber-parent</artifactId>
|
6
6
|
<groupId>com.googlecode.libphonenumber</groupId>
|
7
|
-
<version>7.
|
7
|
+
<version>7.5.2-SNAPSHOT</version>
|
8
8
|
</parent>
|
9
9
|
<groupId>com.googlecode.libphonenumber</groupId>
|
10
10
|
<artifactId>demo</artifactId>
|
11
|
-
<version>7.
|
11
|
+
<version>7.5.2-SNAPSHOT</version>
|
12
12
|
|
13
13
|
<properties>
|
14
14
|
<gae.version>1.9.32</gae.version>
|
@@ -31,7 +31,7 @@
|
|
31
31
|
<version>2.5</version>
|
32
32
|
</dependency>
|
33
33
|
<dependency>
|
34
|
-
<groupId>
|
34
|
+
<groupId>commons-io</groupId>
|
35
35
|
<artifactId>commons-io</artifactId>
|
36
36
|
<version>1.3.2</version>
|
37
37
|
</dependency>
|
@@ -48,17 +48,17 @@
|
|
48
48
|
<dependency>
|
49
49
|
<groupId>com.googlecode.libphonenumber</groupId>
|
50
50
|
<artifactId>libphonenumber</artifactId>
|
51
|
-
<version>7.
|
51
|
+
<version>7.5.2-SNAPSHOT</version>
|
52
52
|
</dependency>
|
53
53
|
<dependency>
|
54
54
|
<groupId>com.googlecode.libphonenumber</groupId>
|
55
55
|
<artifactId>geocoder</artifactId>
|
56
|
-
<version>2.
|
56
|
+
<version>2.50-SNAPSHOT</version>
|
57
57
|
</dependency>
|
58
58
|
<dependency>
|
59
59
|
<groupId>com.googlecode.libphonenumber</groupId>
|
60
60
|
<artifactId>carrier</artifactId>
|
61
|
-
<version>1.
|
61
|
+
<version>1.40-SNAPSHOT</version>
|
62
62
|
</dependency>
|
63
63
|
</dependencies>
|
64
64
|
|
@@ -3,14 +3,14 @@
|
|
3
3
|
<modelVersion>4.0.0</modelVersion>
|
4
4
|
<groupId>com.googlecode.libphonenumber</groupId>
|
5
5
|
<artifactId>geocoder</artifactId>
|
6
|
-
<version>2.
|
6
|
+
<version>2.50-SNAPSHOT</version>
|
7
7
|
<packaging>jar</packaging>
|
8
8
|
<url>https://github.com/googlei18n/libphonenumber/</url>
|
9
9
|
|
10
10
|
<parent>
|
11
11
|
<groupId>com.googlecode.libphonenumber</groupId>
|
12
12
|
<artifactId>libphonenumber-parent</artifactId>
|
13
|
-
<version>7.
|
13
|
+
<version>7.5.2-SNAPSHOT</version>
|
14
14
|
</parent>
|
15
15
|
|
16
16
|
<build>
|
@@ -36,18 +36,40 @@
|
|
36
36
|
<targetPath>com/google/i18n/phonenumbers/timezones/testing_data</targetPath>
|
37
37
|
</testResource>
|
38
38
|
</testResources>
|
39
|
+
<plugins>
|
40
|
+
<plugin>
|
41
|
+
<groupId>org.codehaus.mojo</groupId>
|
42
|
+
<artifactId>animal-sniffer-maven-plugin</artifactId>
|
43
|
+
<version>1.15</version>
|
44
|
+
<executions>
|
45
|
+
<execution>
|
46
|
+
<phase>test</phase>
|
47
|
+
<goals>
|
48
|
+
<goal>check</goal>
|
49
|
+
</goals>
|
50
|
+
</execution>
|
51
|
+
</executions>
|
52
|
+
<configuration>
|
53
|
+
<signature>
|
54
|
+
<groupId>org.codehaus.mojo.signature</groupId>
|
55
|
+
<artifactId>java15</artifactId>
|
56
|
+
<version>1.0</version>
|
57
|
+
</signature>
|
58
|
+
</configuration>
|
59
|
+
</plugin>
|
60
|
+
</plugins>
|
39
61
|
</build>
|
40
62
|
|
41
63
|
<dependencies>
|
42
64
|
<dependency>
|
43
65
|
<groupId>com.googlecode.libphonenumber</groupId>
|
44
66
|
<artifactId>libphonenumber</artifactId>
|
45
|
-
<version>7.
|
67
|
+
<version>7.5.2-SNAPSHOT</version>
|
46
68
|
</dependency>
|
47
69
|
<dependency>
|
48
70
|
<groupId>com.googlecode.libphonenumber</groupId>
|
49
71
|
<artifactId>prefixmapper</artifactId>
|
50
|
-
<version>2.
|
72
|
+
<version>2.50-SNAPSHOT</version>
|
51
73
|
</dependency>
|
52
74
|
</dependencies>
|
53
75
|
|
data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1747_en
ADDED
Binary file
|
data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/1934_en
ADDED
Binary file
|
data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/371_en
CHANGED
Binary file
|
data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/44_en
CHANGED
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/91_en
CHANGED
Binary file
|
Binary file
|
Binary file
|
data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/98_en
CHANGED
Binary file
|
data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/98_fa
CHANGED
Binary file
|
Binary file
|
Binary file
|
data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/config
CHANGED
Binary file
|
@@ -3,14 +3,14 @@
|
|
3
3
|
<modelVersion>4.0.0</modelVersion>
|
4
4
|
<groupId>com.googlecode.libphonenumber</groupId>
|
5
5
|
<artifactId>prefixmapper</artifactId>
|
6
|
-
<version>2.
|
6
|
+
<version>2.50-SNAPSHOT</version>
|
7
7
|
<packaging>jar</packaging>
|
8
8
|
<url>https://github.com/googlei18n/libphonenumber/</url>
|
9
9
|
|
10
10
|
<parent>
|
11
11
|
<groupId>com.googlecode.libphonenumber</groupId>
|
12
12
|
<artifactId>libphonenumber-parent</artifactId>
|
13
|
-
<version>7.
|
13
|
+
<version>7.5.2-SNAPSHOT</version>
|
14
14
|
<relativePath>../../pom.xml</relativePath>
|
15
15
|
</parent>
|
16
16
|
|
@@ -23,13 +23,35 @@
|
|
23
23
|
<targetPath>com/google/i18n/phonenumbers/geocoding/testing_data</targetPath>
|
24
24
|
</testResource>
|
25
25
|
</testResources>
|
26
|
+
<plugins>
|
27
|
+
<plugin>
|
28
|
+
<groupId>org.codehaus.mojo</groupId>
|
29
|
+
<artifactId>animal-sniffer-maven-plugin</artifactId>
|
30
|
+
<version>1.15</version>
|
31
|
+
<executions>
|
32
|
+
<execution>
|
33
|
+
<phase>test</phase>
|
34
|
+
<goals>
|
35
|
+
<goal>check</goal>
|
36
|
+
</goals>
|
37
|
+
</execution>
|
38
|
+
</executions>
|
39
|
+
<configuration>
|
40
|
+
<signature>
|
41
|
+
<groupId>org.codehaus.mojo.signature</groupId>
|
42
|
+
<artifactId>java15</artifactId>
|
43
|
+
<version>1.0</version>
|
44
|
+
</signature>
|
45
|
+
</configuration>
|
46
|
+
</plugin>
|
47
|
+
</plugins>
|
26
48
|
</build>
|
27
49
|
|
28
50
|
<dependencies>
|
29
51
|
<dependency>
|
30
52
|
<groupId>com.googlecode.libphonenumber</groupId>
|
31
53
|
<artifactId>libphonenumber</artifactId>
|
32
|
-
<version>7.
|
54
|
+
<version>7.5.2-SNAPSHOT</version>
|
33
55
|
</dependency>
|
34
56
|
</dependencies>
|
35
57
|
|
@@ -3,14 +3,14 @@
|
|
3
3
|
<modelVersion>4.0.0</modelVersion>
|
4
4
|
<groupId>com.googlecode.libphonenumber</groupId>
|
5
5
|
<artifactId>libphonenumber</artifactId>
|
6
|
-
<version>7.
|
6
|
+
<version>7.5.2-SNAPSHOT</version>
|
7
7
|
<packaging>jar</packaging>
|
8
8
|
<url>https://github.com/googlei18n/libphonenumber/</url>
|
9
9
|
|
10
10
|
<parent>
|
11
11
|
<groupId>com.googlecode.libphonenumber</groupId>
|
12
12
|
<artifactId>libphonenumber-parent</artifactId>
|
13
|
-
<version>7.
|
13
|
+
<version>7.5.2-SNAPSHOT</version>
|
14
14
|
</parent>
|
15
15
|
|
16
16
|
<build>
|
@@ -31,6 +31,7 @@
|
|
31
31
|
<plugins>
|
32
32
|
<plugin>
|
33
33
|
<artifactId>maven-jar-plugin</artifactId>
|
34
|
+
<version>2.2</version>
|
34
35
|
<configuration>
|
35
36
|
<excludes>
|
36
37
|
<exclude>com/google/i18n/phonenumbers/SingleFileMetadataSourceImpl.class</exclude>
|
@@ -60,6 +61,26 @@
|
|
60
61
|
</execution>
|
61
62
|
</executions>
|
62
63
|
</plugin>
|
64
|
+
<plugin>
|
65
|
+
<groupId>org.codehaus.mojo</groupId>
|
66
|
+
<artifactId>animal-sniffer-maven-plugin</artifactId>
|
67
|
+
<version>1.15</version>
|
68
|
+
<executions>
|
69
|
+
<execution>
|
70
|
+
<phase>test</phase>
|
71
|
+
<goals>
|
72
|
+
<goal>check</goal>
|
73
|
+
</goals>
|
74
|
+
</execution>
|
75
|
+
</executions>
|
76
|
+
<configuration>
|
77
|
+
<signature>
|
78
|
+
<groupId>org.codehaus.mojo.signature</groupId>
|
79
|
+
<artifactId>java15</artifactId>
|
80
|
+
<version>1.0</version>
|
81
|
+
</signature>
|
82
|
+
</configuration>
|
83
|
+
</plugin>
|
63
84
|
</plugins>
|
64
85
|
</build>
|
65
86
|
|
data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/MetadataLoader.java
CHANGED
@@ -23,7 +23,8 @@ import java.io.InputStream;
|
|
23
23
|
*/
|
24
24
|
public interface MetadataLoader {
|
25
25
|
/**
|
26
|
-
* Returns an input stream corresponding to the metadata to load.
|
26
|
+
* Returns an input stream corresponding to the metadata to load. This method may be called
|
27
|
+
* concurrently so implementations must be thread-safe.
|
27
28
|
*
|
28
29
|
* @param metadataFileName File name (including path) of metadata to load. File path is an
|
29
30
|
* absolute class path like /com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto.
|
@@ -22,10 +22,8 @@ import com.google.i18n.phonenumbers.nano.Phonemetadata.PhoneMetadataCollection;
|
|
22
22
|
import java.io.IOException;
|
23
23
|
import java.io.InputStream;
|
24
24
|
import java.io.ObjectInputStream;
|
25
|
-
import java.util.
|
26
|
-
import java.util.HashMap;
|
25
|
+
import java.util.concurrent.ConcurrentHashMap;
|
27
26
|
import java.util.List;
|
28
|
-
import java.util.Map;
|
29
27
|
import java.util.logging.Level;
|
30
28
|
import java.util.logging.Logger;
|
31
29
|
|
@@ -41,18 +39,14 @@ final class MultiFileMetadataSourceImpl implements MetadataSource {
|
|
41
39
|
"/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto";
|
42
40
|
|
43
41
|
// A mapping from a region code to the PhoneMetadata for that region.
|
44
|
-
|
45
|
-
|
46
|
-
private final Map<String, PhoneMetadata> regionToMetadataMap =
|
47
|
-
Collections.synchronizedMap(new HashMap<String, PhoneMetadata>());
|
42
|
+
private final ConcurrentHashMap<String, PhoneMetadata> geographicalRegions =
|
43
|
+
new ConcurrentHashMap<String, PhoneMetadata>();
|
48
44
|
|
49
45
|
// A mapping from a country calling code for a non-geographical entity to the PhoneMetadata for
|
50
46
|
// that country calling code. Examples of the country calling codes include 800 (International
|
51
47
|
// Toll Free Service) and 808 (International Shared Cost Service).
|
52
|
-
|
53
|
-
|
54
|
-
private final Map<Integer, PhoneMetadata> countryCodeToNonGeographicalMetadataMap =
|
55
|
-
Collections.synchronizedMap(new HashMap<Integer, PhoneMetadata>());
|
48
|
+
private final ConcurrentHashMap<Integer, PhoneMetadata> nonGeographicalRegions =
|
49
|
+
new ConcurrentHashMap<Integer, PhoneMetadata>();
|
56
50
|
|
57
51
|
// The prefix of the metadata files from which region data is loaded.
|
58
52
|
private final String filePrefix;
|
@@ -60,97 +54,97 @@ final class MultiFileMetadataSourceImpl implements MetadataSource {
|
|
60
54
|
// The metadata loader used to inject alternative metadata sources.
|
61
55
|
private final MetadataLoader metadataLoader;
|
62
56
|
|
63
|
-
// It is assumed that metadataLoader is not null.
|
64
|
-
|
57
|
+
// It is assumed that metadataLoader is not null. If needed, checks should happen before passing
|
58
|
+
// here.
|
59
|
+
// @VisibleForTesting
|
60
|
+
MultiFileMetadataSourceImpl(String filePrefix, MetadataLoader metadataLoader) {
|
65
61
|
this.filePrefix = filePrefix;
|
66
62
|
this.metadataLoader = metadataLoader;
|
67
63
|
}
|
68
64
|
|
69
|
-
// It is assumed that metadataLoader is not null.
|
65
|
+
// It is assumed that metadataLoader is not null. If needed, checks should happen before passing
|
66
|
+
// here.
|
70
67
|
public MultiFileMetadataSourceImpl(MetadataLoader metadataLoader) {
|
71
68
|
this(META_DATA_FILE_PREFIX, metadataLoader);
|
72
69
|
}
|
73
70
|
|
74
71
|
@Override
|
75
72
|
public PhoneMetadata getMetadataForRegion(String regionCode) {
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
// what to pass in for the country calling code.
|
80
|
-
loadMetadataFromFile(regionCode, 0);
|
81
|
-
}
|
82
|
-
}
|
83
|
-
return regionToMetadataMap.get(regionCode);
|
73
|
+
PhoneMetadata metadata = geographicalRegions.get(regionCode);
|
74
|
+
return (metadata != null) ? metadata : loadMetadataFromFile(
|
75
|
+
regionCode, geographicalRegions, filePrefix, metadataLoader);
|
84
76
|
}
|
85
77
|
|
86
78
|
@Override
|
87
79
|
public PhoneMetadata getMetadataForNonGeographicalRegion(int countryCallingCode) {
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
CountryCodeToRegionCodeMap.getCountryCodeToRegionCodeMap().get(countryCallingCode);
|
92
|
-
// We can assume that if the country calling code maps to the non-geo entity region code
|
93
|
-
// then that's the only region code it maps to.
|
94
|
-
if (regionCodes.size() == 1 &&
|
95
|
-
PhoneNumberUtil.REGION_CODE_FOR_NON_GEO_ENTITY.equals(regionCodes.get(0))) {
|
96
|
-
loadMetadataFromFile(PhoneNumberUtil.REGION_CODE_FOR_NON_GEO_ENTITY, countryCallingCode);
|
97
|
-
}
|
98
|
-
}
|
80
|
+
PhoneMetadata metadata = nonGeographicalRegions.get(countryCallingCode);
|
81
|
+
if (metadata != null) {
|
82
|
+
return metadata;
|
99
83
|
}
|
100
|
-
|
84
|
+
if (isNonGeographical(countryCallingCode)) {
|
85
|
+
return loadMetadataFromFile(
|
86
|
+
countryCallingCode, nonGeographicalRegions, filePrefix, metadataLoader);
|
87
|
+
}
|
88
|
+
// The given country calling code was for a geographical region.
|
89
|
+
return null;
|
90
|
+
}
|
91
|
+
|
92
|
+
// A country calling code is non-geographical if it only maps to the non-geographical region code,
|
93
|
+
// i.e. "001".
|
94
|
+
private boolean isNonGeographical(int countryCallingCode) {
|
95
|
+
List<String> regionCodes =
|
96
|
+
CountryCodeToRegionCodeMap.getCountryCodeToRegionCodeMap().get(countryCallingCode);
|
97
|
+
return (regionCodes.size() == 1
|
98
|
+
&& PhoneNumberUtil.REGION_CODE_FOR_NON_GEO_ENTITY.equals(regionCodes.get(0)));
|
101
99
|
}
|
102
100
|
|
101
|
+
/**
|
102
|
+
* @param key The geographical region code or the non-geographical region's country
|
103
|
+
* calling code.
|
104
|
+
* @param map The map to contain the mapping from {@code key} to the corresponding
|
105
|
+
* metadata.
|
106
|
+
* @param filePrefix The prefix of the metadata files from which region data is loaded.
|
107
|
+
* @param metadataLoader The metadata loader used to inject alternative metadata sources.
|
108
|
+
*/
|
103
109
|
// @VisibleForTesting
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
110
|
+
static <T> PhoneMetadata loadMetadataFromFile(
|
111
|
+
T key, ConcurrentHashMap<T, PhoneMetadata> map, String filePrefix,
|
112
|
+
MetadataLoader metadataLoader) {
|
113
|
+
// We assume key.toString() is well-defined.
|
114
|
+
String fileName = filePrefix + "_" + key;
|
108
115
|
InputStream source = metadataLoader.loadMetadata(fileName);
|
109
116
|
if (source == null) {
|
110
|
-
logger.log(Level.SEVERE, "missing metadata: " + fileName);
|
111
117
|
throw new IllegalStateException("missing metadata: " + fileName);
|
112
118
|
}
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
}
|
121
|
-
if (metadataList.length > 1) {
|
122
|
-
logger.log(Level.WARNING, "invalid metadata (too many entries): " + fileName);
|
123
|
-
}
|
124
|
-
PhoneMetadata metadata = metadataList[0];
|
125
|
-
if (isNonGeoRegion) {
|
126
|
-
countryCodeToNonGeographicalMetadataMap.put(countryCallingCode, metadata);
|
127
|
-
} else {
|
128
|
-
regionToMetadataMap.put(regionCode, metadata);
|
129
|
-
}
|
130
|
-
} catch (IOException e) {
|
131
|
-
logger.log(Level.SEVERE, "cannot load/parse metadata: " + fileName, e);
|
132
|
-
throw new RuntimeException("cannot load/parse metadata: " + fileName, e);
|
119
|
+
PhoneMetadataCollection metadataCollection = loadMetadataAndCloseInput(source);
|
120
|
+
PhoneMetadata[] metadataList = metadataCollection.metadata;
|
121
|
+
if (metadataList.length == 0) {
|
122
|
+
throw new IllegalStateException("empty metadata: " + fileName);
|
123
|
+
}
|
124
|
+
if (metadataList.length > 1) {
|
125
|
+
logger.log(Level.WARNING, "invalid metadata (too many entries): " + fileName);
|
133
126
|
}
|
127
|
+
PhoneMetadata metadata = metadataList[0];
|
128
|
+
PhoneMetadata oldValue = map.putIfAbsent(key, metadata);
|
129
|
+
return (oldValue != null) ? oldValue : metadata;
|
134
130
|
}
|
135
131
|
|
136
132
|
/**
|
137
|
-
* Loads the metadata protocol buffer from the given stream and closes the stream
|
138
|
-
* exceptions that occur while reading or closing the stream are ignored.
|
139
|
-
*
|
140
|
-
* @param source the non-null stream from which metadata is to be read.
|
141
|
-
* @return the loaded metadata protocol buffer.
|
133
|
+
* Loads and returns the metadata protocol buffer from the given stream and closes the stream.
|
142
134
|
*/
|
143
|
-
private static PhoneMetadataCollection loadMetadataAndCloseInput(
|
135
|
+
private static PhoneMetadataCollection loadMetadataAndCloseInput(InputStream source) {
|
144
136
|
// The size of the byte buffer used for deserializing the phone number metadata files for each
|
145
137
|
// region.
|
146
138
|
final int MULTI_FILE_BUFFER_SIZE = 16 * 1024;
|
147
139
|
|
148
|
-
PhoneMetadataCollection metadataCollection = new PhoneMetadataCollection();
|
149
140
|
try {
|
150
|
-
|
151
|
-
|
141
|
+
// Read in metadata for each region.
|
142
|
+
PhoneMetadataCollection metadataCollection = new PhoneMetadataCollection();
|
143
|
+
metadataCollection.mergeFrom(MetadataManager.convertStreamToByteBuffer(
|
144
|
+
new ObjectInputStream(source), MULTI_FILE_BUFFER_SIZE));
|
145
|
+
return metadataCollection;
|
152
146
|
} catch (IOException e) {
|
153
|
-
|
147
|
+
throw new RuntimeException("cannot load/parse metadata", e);
|
154
148
|
} finally {
|
155
149
|
try {
|
156
150
|
source.close();
|
@@ -158,6 +152,5 @@ final class MultiFileMetadataSourceImpl implements MetadataSource {
|
|
158
152
|
logger.log(Level.WARNING, "error closing input stream (ignored)", e);
|
159
153
|
}
|
160
154
|
}
|
161
|
-
return metadataCollection;
|
162
155
|
}
|
163
156
|
}
|