phonelib 0.5.2 → 0.5.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.rdoc +8 -0
- data/data/extended_data.dat +0 -0
- data/data/libphonenumber/README.md +1 -1
- data/data/libphonenumber/cpp/src/phonenumbers/lite_metadata.cc +9888 -9854
- data/data/libphonenumber/cpp/src/phonenumbers/metadata.cc +9798 -9762
- data/data/libphonenumber/cpp/src/phonenumbers/phonenumberutil.cc +6 -6
- data/data/libphonenumber/cpp/src/phonenumbers/short_metadata.cc +2495 -2494
- data/data/libphonenumber/debian/control +9 -7
- data/data/libphonenumber/debian/{libphonenumber6-dev.install → libphonenumber7-dev.install} +0 -0
- data/data/libphonenumber/debian/{libphonenumber6-java.jlibs → libphonenumber7-java.jlibs} +0 -0
- data/data/libphonenumber/debian/{libphonenumber6-java.poms → libphonenumber7-java.poms} +0 -0
- data/data/libphonenumber/debian/{libphonenumber6.install → libphonenumber7.install} +0 -0
- data/data/libphonenumber/debian/rules +2 -2
- data/data/libphonenumber/java/carrier/pom.xml +4 -4
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/1246_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/245_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/252_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/373_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/62_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/678_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/880_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/968_en +0 -0
- data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/98_en +0 -0
- data/data/libphonenumber/java/demo/pom.xml +5 -5
- data/data/libphonenumber/java/geocoder/pom.xml +4 -4
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/245_en +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/245_pt +0 -0
- data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/968_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 +3 -3
- data/data/libphonenumber/java/libphonenumber/pom.xml +4 -2
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/MetadataSource.java +1 -1
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/MultiFileMetadataSourceImpl.java +7 -10
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/PhoneNumberUtil.java +6 -4
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/SingleFileMetadataSourceImpl.java +82 -30
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_AT +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BB +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BR +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BS +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_GW +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_HT +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_ID +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_IR +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_MC +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_MD +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_OM +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_PA +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_SO +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_TT +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_VU +0 -0
- data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_BB +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/SingleFilePhoneNumberMetadataProto +0 -0
- data/data/libphonenumber/java/libphonenumber/test/com/google/i18n/phonenumbers/MultiFileMetadataSourceImplTest.java +10 -14
- data/data/libphonenumber/java/libphonenumber/test/com/google/i18n/phonenumbers/SingleFileMetadataSourceImplTest.java +40 -0
- data/data/libphonenumber/java/libphonenumber/test/com/google/i18n/phonenumbers/TestMetadataTestCase.java +1 -1
- data/data/libphonenumber/java/pom.xml +1 -1
- data/data/libphonenumber/java/release_notes.txt +19 -0
- data/data/libphonenumber/javascript/i18n/phonenumbers/demo-compiled.js +108 -106
- data/data/libphonenumber/javascript/i18n/phonenumbers/metadata.js +37 -34
- data/data/libphonenumber/javascript/i18n/phonenumbers/metadatalite.js +37 -34
- data/data/libphonenumber/resources/PhoneNumberMetadata.xml +199 -91
- data/data/libphonenumber/resources/ShortNumberMetadata.xml +20 -9
- data/data/libphonenumber/resources/carrier/en/1.txt +8 -0
- data/data/libphonenumber/resources/carrier/en/245.txt +4 -2
- data/data/libphonenumber/resources/carrier/en/252.txt +8 -0
- data/data/libphonenumber/resources/carrier/en/373.txt +1 -0
- data/data/libphonenumber/resources/carrier/en/62.txt +1 -0
- data/data/libphonenumber/resources/carrier/en/678.txt +4 -0
- data/data/libphonenumber/resources/carrier/en/968.txt +10 -4
- data/data/libphonenumber/resources/carrier/en/98.txt +1 -0
- data/data/libphonenumber/resources/geocoding/en/245.txt +22 -20
- data/data/libphonenumber/resources/geocoding/en/968.txt +18 -0
- data/data/libphonenumber/tools/java/cpp-build/target/cpp-build-1.0-SNAPSHOT-jar-with-dependencies.jar +0 -0
- data/data/libphonenumber/tools/java/java-build/target/java-build-1.0-SNAPSHOT-jar-with-dependencies.jar +0 -0
- data/data/phone_data.dat +0 -0
- data/lib/phonelib/core.rb +26 -0
- data/lib/phonelib/phone.rb +20 -2
- data/lib/phonelib/phone_analyzer_helper.rb +1 -0
- data/lib/phonelib/version.rb +1 -1
- data/lib/validators/phone_validator.rb +5 -1
- metadata +23 -6
@@ -28,15 +28,17 @@ Build-Depends: cdbs,
|
|
28
28
|
libprotobuf-java,
|
29
29
|
libservlet2.5-java,
|
30
30
|
libservlet2.5-java-doc
|
31
|
-
Standards-Version: 3.9.
|
31
|
+
Standards-Version: 3.9.6
|
32
32
|
Section: libs
|
33
33
|
Homepage: https://github.com/googlei18n/libphonenumber/
|
34
|
-
Vcs-Browser: https://
|
35
|
-
Vcs-Git:
|
34
|
+
Vcs-Browser: https://anonscm.debian.org/cgit/collab-maint/libphonenumber.git/
|
35
|
+
Vcs-Git: git://anonscm.debian.org/collab-maint/libphonenumber.git
|
36
36
|
|
37
|
-
Package:
|
37
|
+
Package: libphonenumber7-java
|
38
38
|
Section: java
|
39
39
|
Architecture: all
|
40
|
+
Conflicts: libphonenumber6-java
|
41
|
+
Replaces: libphonenumber6-java
|
40
42
|
Depends: ${misc:Depends}, ${maven:Depends}
|
41
43
|
Recommends: ${maven:OptionalDepends}
|
42
44
|
Description: parsing/formatting/validating phone numbers - java
|
@@ -45,13 +47,13 @@ Description: parsing/formatting/validating phone numbers - java
|
|
45
47
|
.
|
46
48
|
This package contains the runtime library JARs for Java users.
|
47
49
|
|
48
|
-
Package:
|
50
|
+
Package: libphonenumber7-dev
|
49
51
|
Section: libdevel
|
50
52
|
Architecture: any
|
51
53
|
Provides: libphonenumber-dev
|
52
54
|
Conflicts: libphonenumber-dev
|
53
55
|
Replaces: libphonenumber-dev
|
54
|
-
Depends:
|
56
|
+
Depends: libphonenumber7 (=${binary:Version}), ${misc:Depends},
|
55
57
|
libboost-dev (>= 1.40),
|
56
58
|
libboost-system-dev (>= 1.40),
|
57
59
|
libboost-thread-dev (>= 1.40),
|
@@ -62,7 +64,7 @@ Description: parsing/formatting/validating phone numbers - development files
|
|
62
64
|
.
|
63
65
|
This package contains the static libraries and include files.
|
64
66
|
|
65
|
-
Package:
|
67
|
+
Package: libphonenumber7
|
66
68
|
Architecture: any
|
67
69
|
Pre-Depends: ${misc:Pre-Depends}
|
68
70
|
Depends: ${shlibs:Depends}, ${misc:Depends}
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
@@ -53,7 +53,7 @@ endif
|
|
53
53
|
# dh $@ --with javahelper
|
54
54
|
|
55
55
|
#override_dh_auto_configure:
|
56
|
-
configure/
|
56
|
+
configure/libphonenumber7::
|
57
57
|
mkdir -p $(CPP_BUILD) && cd $(CPP_BUILD) && $(CMAKE) $(CMAKE_FLAGS) ..
|
58
58
|
|
59
59
|
#override_dh_auto_build:
|
@@ -61,7 +61,7 @@ configure/libphonenumber6::
|
|
61
61
|
# mkdir java/lib
|
62
62
|
# ln -s /usr/share/java/junit4.jar java/lib/junit-4.8.1.jar
|
63
63
|
# $(ANT) -f $(JAVA_BUILD).xml jar
|
64
|
-
build/
|
64
|
+
build/libphonenumber7::
|
65
65
|
ln -sf cpp-build-1.0-SNAPSHOT.jar tools/java/cpp-build/target/cpp-build-1.0-SNAPSHOT-jar-with-dependencies.jar
|
66
66
|
ln -sf /usr/share/java/protobuf.jar tools/java/cpp-build/target/protobuf-java-debian.jar
|
67
67
|
$(MAKE) -C $(CPP_BUILD) phonenumber phonenumber-shared
|
@@ -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.20-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.1.2-SNAPSHOT</version>
|
14
14
|
</parent>
|
15
15
|
|
16
16
|
<build>
|
@@ -34,12 +34,12 @@
|
|
34
34
|
<dependency>
|
35
35
|
<groupId>com.googlecode.libphonenumber</groupId>
|
36
36
|
<artifactId>libphonenumber</artifactId>
|
37
|
-
<version>7.
|
37
|
+
<version>7.1.2-SNAPSHOT</version>
|
38
38
|
</dependency>
|
39
39
|
<dependency>
|
40
40
|
<groupId>com.googlecode.libphonenumber</groupId>
|
41
41
|
<artifactId>prefixmapper</artifactId>
|
42
|
-
<version>2.
|
42
|
+
<version>2.30-SNAPSHOT</version>
|
43
43
|
</dependency>
|
44
44
|
</dependencies>
|
45
45
|
|
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.1.2-SNAPSHOT</version>
|
8
8
|
</parent>
|
9
9
|
<groupId>com.googlecode.libphonenumber</groupId>
|
10
10
|
<artifactId>demo</artifactId>
|
11
|
-
<version>7.
|
11
|
+
<version>7.1.2-SNAPSHOT</version>
|
12
12
|
|
13
13
|
<properties>
|
14
14
|
<gae.version>1.5.4</gae.version>
|
@@ -43,17 +43,17 @@
|
|
43
43
|
<dependency>
|
44
44
|
<groupId>com.googlecode.libphonenumber</groupId>
|
45
45
|
<artifactId>libphonenumber</artifactId>
|
46
|
-
<version>7.
|
46
|
+
<version>7.1.2-SNAPSHOT</version>
|
47
47
|
</dependency>
|
48
48
|
<dependency>
|
49
49
|
<groupId>com.googlecode.libphonenumber</groupId>
|
50
50
|
<artifactId>geocoder</artifactId>
|
51
|
-
<version>2.
|
51
|
+
<version>2.30-SNAPSHOT</version>
|
52
52
|
</dependency>
|
53
53
|
<dependency>
|
54
54
|
<groupId>com.googlecode.libphonenumber</groupId>
|
55
55
|
<artifactId>carrier</artifactId>
|
56
|
-
<version>1.
|
56
|
+
<version>1.20-SNAPSHOT</version>
|
57
57
|
</dependency>
|
58
58
|
</dependencies>
|
59
59
|
|
@@ -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.30-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.1.2-SNAPSHOT</version>
|
14
14
|
</parent>
|
15
15
|
|
16
16
|
<build>
|
@@ -42,12 +42,12 @@
|
|
42
42
|
<dependency>
|
43
43
|
<groupId>com.googlecode.libphonenumber</groupId>
|
44
44
|
<artifactId>libphonenumber</artifactId>
|
45
|
-
<version>7.
|
45
|
+
<version>7.1.2-SNAPSHOT</version>
|
46
46
|
</dependency>
|
47
47
|
<dependency>
|
48
48
|
<groupId>com.googlecode.libphonenumber</groupId>
|
49
49
|
<artifactId>prefixmapper</artifactId>
|
50
|
-
<version>2.
|
50
|
+
<version>2.30-SNAPSHOT</version>
|
51
51
|
</dependency>
|
52
52
|
</dependencies>
|
53
53
|
|
data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/245_en
CHANGED
Binary file
|
data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/245_pt
CHANGED
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.30-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.1.2-SNAPSHOT</version>
|
14
14
|
<relativePath>../../pom.xml</relativePath>
|
15
15
|
</parent>
|
16
16
|
|
@@ -29,7 +29,7 @@
|
|
29
29
|
<dependency>
|
30
30
|
<groupId>com.googlecode.libphonenumber</groupId>
|
31
31
|
<artifactId>libphonenumber</artifactId>
|
32
|
-
<version>7.
|
32
|
+
<version>7.1.2-SNAPSHOT</version>
|
33
33
|
</dependency>
|
34
34
|
</dependencies>
|
35
35
|
|
@@ -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.1.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.1.2-SNAPSHOT</version>
|
14
14
|
</parent>
|
15
15
|
|
16
16
|
<build>
|
@@ -36,6 +36,8 @@
|
|
36
36
|
<excludes>
|
37
37
|
<exclude>**/SingleFileMetadataSourceImpl.class</exclude>
|
38
38
|
<exclude>**/SingleFileMetadataSourceImpl.java</exclude>
|
39
|
+
<exclude>**/SingleFileMetadataSourceImplTest.class</exclude>
|
40
|
+
<exclude>**/SingleFileMetadataSourceImplTest.java</exclude>
|
39
41
|
<exclude>**/SingleFilePhoneNumberMetadataProto</exclude>
|
40
42
|
<exclude>**/SingleFilePhoneNumberMetadataProtoForTesting</exclude>
|
41
43
|
</excludes>
|
@@ -55,14 +55,14 @@ final class MultiFileMetadataSourceImpl implements MetadataSource {
|
|
55
55
|
Collections.synchronizedMap(new HashMap<Integer, PhoneMetadata>());
|
56
56
|
|
57
57
|
// The prefix of the metadata files from which region data is loaded.
|
58
|
-
private final String
|
58
|
+
private final String filePrefix;
|
59
59
|
|
60
60
|
// The metadata loader used to inject alternative metadata sources.
|
61
61
|
private final MetadataLoader metadataLoader;
|
62
62
|
|
63
63
|
// It is assumed that metadataLoader is not null.
|
64
|
-
public MultiFileMetadataSourceImpl(String
|
65
|
-
this.
|
64
|
+
public MultiFileMetadataSourceImpl(String filePrefix, MetadataLoader metadataLoader) {
|
65
|
+
this.filePrefix = filePrefix;
|
66
66
|
this.metadataLoader = metadataLoader;
|
67
67
|
}
|
68
68
|
|
@@ -77,7 +77,7 @@ final class MultiFileMetadataSourceImpl implements MetadataSource {
|
|
77
77
|
if (!regionToMetadataMap.containsKey(regionCode)) {
|
78
78
|
// The regionCode here will be valid and won't be '001', so we don't need to worry about
|
79
79
|
// what to pass in for the country calling code.
|
80
|
-
loadMetadataFromFile(
|
80
|
+
loadMetadataFromFile(regionCode, 0);
|
81
81
|
}
|
82
82
|
}
|
83
83
|
return regionToMetadataMap.get(regionCode);
|
@@ -87,16 +87,14 @@ final class MultiFileMetadataSourceImpl implements MetadataSource {
|
|
87
87
|
public PhoneMetadata getMetadataForNonGeographicalRegion(int countryCallingCode) {
|
88
88
|
synchronized (countryCodeToNonGeographicalMetadataMap) {
|
89
89
|
if (!countryCodeToNonGeographicalMetadataMap.containsKey(countryCallingCode)) {
|
90
|
-
loadMetadataFromFile(
|
91
|
-
countryCallingCode, metadataLoader);
|
90
|
+
loadMetadataFromFile(PhoneNumberUtil.REGION_CODE_FOR_NON_GEO_ENTITY, countryCallingCode);
|
92
91
|
}
|
93
92
|
}
|
94
93
|
return countryCodeToNonGeographicalMetadataMap.get(countryCallingCode);
|
95
94
|
}
|
96
95
|
|
97
96
|
// @VisibleForTesting
|
98
|
-
void loadMetadataFromFile(String
|
99
|
-
MetadataLoader metadataLoader) {
|
97
|
+
void loadMetadataFromFile(String regionCode, int countryCallingCode) {
|
100
98
|
boolean isNonGeoRegion = PhoneNumberUtil.REGION_CODE_FOR_NON_GEO_ENTITY.equals(regionCode);
|
101
99
|
String fileName = filePrefix + "_" +
|
102
100
|
(isNonGeoRegion ? String.valueOf(countryCallingCode) : regionCode);
|
@@ -131,8 +129,7 @@ final class MultiFileMetadataSourceImpl implements MetadataSource {
|
|
131
129
|
|
132
130
|
/**
|
133
131
|
* Loads the metadata protocol buffer from the given stream and closes the stream afterwards. Any
|
134
|
-
* exceptions that occur while reading the stream are
|
135
|
-
* when the stream is closed will be ignored).
|
132
|
+
* exceptions that occur while reading or closing the stream are ignored.
|
136
133
|
*
|
137
134
|
* @param source the non-null stream from which metadata is to be read.
|
138
135
|
* @return the loaded metadata protocol buffer.
|
data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/PhoneNumberUtil.java
CHANGED
@@ -1639,10 +1639,12 @@ public class PhoneNumberUtil {
|
|
1639
1639
|
} else {
|
1640
1640
|
// Invalid region entered as country-calling-from (so no metadata was found for it) or the
|
1641
1641
|
// region chosen has multiple international dialling prefixes.
|
1642
|
-
|
1643
|
-
|
1644
|
-
|
1645
|
-
|
1642
|
+
if (!isValidRegionCode(regionCallingFrom)) {
|
1643
|
+
logger.log(Level.WARNING,
|
1644
|
+
"Trying to format number from invalid region "
|
1645
|
+
+ regionCallingFrom
|
1646
|
+
+ ". International formatting applied.");
|
1647
|
+
}
|
1646
1648
|
prefixNumberWithCountryCallingCode(countryCode,
|
1647
1649
|
PhoneNumberFormat.INTERNATIONAL,
|
1648
1650
|
formattedNumber);
|
@@ -1,3 +1,19 @@
|
|
1
|
+
/*
|
2
|
+
* Copyright (C) 2015 The Libphonenumber Authors
|
3
|
+
*
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
+
* you may not use this file except in compliance with the License.
|
6
|
+
* You may obtain a copy of the License at
|
7
|
+
*
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
*
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
+
* See the License for the specific language governing permissions and
|
14
|
+
* limitations under the License.
|
15
|
+
*/
|
16
|
+
|
1
17
|
package com.google.i18n.phonenumbers;
|
2
18
|
|
3
19
|
import com.google.i18n.phonenumbers.Phonemetadata.PhoneMetadata;
|
@@ -7,23 +23,21 @@ import java.io.IOException;
|
|
7
23
|
import java.io.InputStream;
|
8
24
|
import java.io.ObjectInputStream;
|
9
25
|
import java.util.Collections;
|
10
|
-
import java.util.EnumMap;
|
11
26
|
import java.util.HashMap;
|
12
|
-
import java.util.
|
27
|
+
import java.util.List;
|
13
28
|
import java.util.Map;
|
14
29
|
import java.util.logging.Level;
|
15
30
|
import java.util.logging.Logger;
|
16
31
|
|
17
32
|
/**
|
18
|
-
* Implementation of {@link MetadataSource} that reads from a resource file
|
19
|
-
* during initialization.
|
33
|
+
* Implementation of {@link MetadataSource} that reads from a single resource file.
|
20
34
|
*/
|
21
|
-
|
35
|
+
final class SingleFileMetadataSourceImpl implements MetadataSource {
|
22
36
|
|
23
37
|
private static final Logger logger =
|
24
38
|
Logger.getLogger(SingleFileMetadataSourceImpl.class.getName());
|
25
39
|
|
26
|
-
private static final String
|
40
|
+
private static final String META_DATA_FILE_NAME =
|
27
41
|
"/com/google/i18n/phonenumbers/data/SingleFilePhoneNumberMetadataProto";
|
28
42
|
|
29
43
|
// A mapping from a region code to the PhoneMetadata for that region.
|
@@ -40,57 +54,95 @@ public final class SingleFileMetadataSourceImpl implements MetadataSource {
|
|
40
54
|
private final Map<Integer, PhoneMetadata> countryCodeToNonGeographicalMetadataMap =
|
41
55
|
Collections.synchronizedMap(new HashMap<Integer, PhoneMetadata>());
|
42
56
|
|
57
|
+
// The metadata file from which region data is loaded.
|
58
|
+
private final String fileName;
|
59
|
+
|
60
|
+
// The metadata loader used to inject alternative metadata sources.
|
61
|
+
private final MetadataLoader metadataLoader;
|
62
|
+
|
63
|
+
// It is assumed that metadataLoader is not null.
|
64
|
+
public SingleFileMetadataSourceImpl(String fileName, MetadataLoader metadataLoader) {
|
65
|
+
this.fileName = fileName;
|
66
|
+
this.metadataLoader = metadataLoader;
|
67
|
+
}
|
68
|
+
|
43
69
|
// It is assumed that metadataLoader is not null.
|
44
70
|
public SingleFileMetadataSourceImpl(MetadataLoader metadataLoader) {
|
45
|
-
|
46
|
-
if (input == null) {
|
47
|
-
throw new IllegalStateException(
|
48
|
-
"no metadata available for PhoneNumberUtil: " + META_DATA_FILE);
|
49
|
-
}
|
50
|
-
PhoneMetadataCollection metadataCollection = loadMetadataAndCloseInput(input);
|
51
|
-
for (PhoneMetadata metadata : metadataCollection.getMetadataList()) {
|
52
|
-
String regionCode = metadata.getId();
|
53
|
-
int countryCallingCode = metadata.getCountryCode();
|
54
|
-
if (PhoneNumberUtil.REGION_CODE_FOR_NON_GEO_ENTITY.equals(regionCode)) {
|
55
|
-
countryCodeToNonGeographicalMetadataMap.put(countryCallingCode, metadata);
|
56
|
-
} else {
|
57
|
-
regionToMetadataMap.put(regionCode, metadata);
|
58
|
-
}
|
59
|
-
}
|
71
|
+
this(META_DATA_FILE_NAME, metadataLoader);
|
60
72
|
}
|
61
73
|
|
62
74
|
@Override
|
63
75
|
public PhoneMetadata getMetadataForRegion(String regionCode) {
|
76
|
+
synchronized (regionToMetadataMap) {
|
77
|
+
if (!regionToMetadataMap.containsKey(regionCode)) {
|
78
|
+
// The regionCode here will be valid and won't be '001', so we don't need to worry about
|
79
|
+
// what to pass in for the country calling code.
|
80
|
+
loadMetadataFromFile();
|
81
|
+
}
|
82
|
+
}
|
64
83
|
return regionToMetadataMap.get(regionCode);
|
65
84
|
}
|
66
85
|
|
67
86
|
@Override
|
68
87
|
public PhoneMetadata getMetadataForNonGeographicalRegion(int countryCallingCode) {
|
88
|
+
synchronized (countryCodeToNonGeographicalMetadataMap) {
|
89
|
+
if (!countryCodeToNonGeographicalMetadataMap.containsKey(countryCallingCode)) {
|
90
|
+
loadMetadataFromFile();
|
91
|
+
}
|
92
|
+
}
|
69
93
|
return countryCodeToNonGeographicalMetadataMap.get(countryCallingCode);
|
70
94
|
}
|
71
95
|
|
96
|
+
// @VisibleForTesting
|
97
|
+
void loadMetadataFromFile() {
|
98
|
+
InputStream source = metadataLoader.loadMetadata(fileName);
|
99
|
+
if (source == null) {
|
100
|
+
logger.log(Level.SEVERE, "missing metadata: " + fileName);
|
101
|
+
throw new IllegalStateException("missing metadata: " + fileName);
|
102
|
+
}
|
103
|
+
ObjectInputStream in = null;
|
104
|
+
try {
|
105
|
+
in = new ObjectInputStream(source);
|
106
|
+
PhoneMetadataCollection metadataCollection = loadMetadataAndCloseInput(in);
|
107
|
+
List<PhoneMetadata> metadataList = metadataCollection.getMetadataList();
|
108
|
+
if (metadataList.isEmpty()) {
|
109
|
+
logger.log(Level.SEVERE, "empty metadata: " + fileName);
|
110
|
+
throw new IllegalStateException("empty metadata: " + fileName);
|
111
|
+
}
|
112
|
+
for (PhoneMetadata metadata : metadataList) {
|
113
|
+
String regionCode = metadata.getId();
|
114
|
+
int countryCallingCode = metadata.getCountryCode();
|
115
|
+
boolean isNonGeoRegion = PhoneNumberUtil.REGION_CODE_FOR_NON_GEO_ENTITY.equals(regionCode);
|
116
|
+
if (isNonGeoRegion) {
|
117
|
+
countryCodeToNonGeographicalMetadataMap.put(countryCallingCode, metadata);
|
118
|
+
} else {
|
119
|
+
regionToMetadataMap.put(regionCode, metadata);
|
120
|
+
}
|
121
|
+
}
|
122
|
+
} catch (IOException e) {
|
123
|
+
logger.log(Level.SEVERE, "cannot load/parse metadata: " + fileName, e);
|
124
|
+
throw new RuntimeException("cannot load/parse metadata: " + fileName, e);
|
125
|
+
}
|
126
|
+
}
|
127
|
+
|
72
128
|
/**
|
73
129
|
* Loads the metadata protocol buffer from the given stream and closes the stream afterwards. Any
|
74
|
-
* exceptions that occur while reading the stream are
|
75
|
-
* when the stream is closed will be ignored).
|
130
|
+
* exceptions that occur while reading or closing the stream are ignored.
|
76
131
|
*
|
77
132
|
* @param source the non-null stream from which metadata is to be read.
|
78
133
|
* @return the loaded metadata protocol buffer.
|
79
134
|
*/
|
80
|
-
private static PhoneMetadataCollection loadMetadataAndCloseInput(
|
135
|
+
private static PhoneMetadataCollection loadMetadataAndCloseInput(ObjectInputStream source) {
|
81
136
|
PhoneMetadataCollection metadataCollection = new PhoneMetadataCollection();
|
82
137
|
try {
|
83
|
-
|
84
|
-
ObjectInputStream in = new ObjectInputStream(source);
|
85
|
-
metadataCollection.readExternal(in);
|
86
|
-
return metadataCollection;
|
138
|
+
metadataCollection.readExternal(source);
|
87
139
|
} catch (IOException e) {
|
88
|
-
logger.log(Level.WARNING,
|
140
|
+
logger.log(Level.WARNING, "error reading input (ignored)", e);
|
89
141
|
} finally {
|
90
142
|
try {
|
91
143
|
source.close();
|
92
144
|
} catch (IOException e) {
|
93
|
-
logger.log(Level.WARNING,
|
145
|
+
logger.log(Level.WARNING, "error closing input stream (ignored)", e);
|
94
146
|
}
|
95
147
|
}
|
96
148
|
return metadataCollection;
|