JAVA: Fix NullPointerException in PhoneNumberOfflineGeocoder.
authorphilip.liard@gmail.com <philip.liard@gmail.com@ee073f10-1060-11df-b6a4-87a95322a99c>
Wed, 14 Sep 2011 15:07:06 +0000 (15:07 +0000)
committerphilip.liard@gmail.com <philip.liard@gmail.com@ee073f10-1060-11df-b6a4-87a95322a99c>
Wed, 14 Sep 2011 15:07:06 +0000 (15:07 +0000)
git-svn-id: http://libphonenumber.googlecode.com/svn/trunk@353 ee073f10-1060-11df-b6a4-87a95322a99c

java/src/com/google/i18n/phonenumbers/geocoding/PhoneNumberOfflineGeocoder.java
java/test/com/google/i18n/phonenumbers/geocoding/PhoneNumberOfflineGeocoderTest.java

index dd7cd59..2e4fa14 100644 (file)
@@ -179,6 +179,9 @@ public class PhoneNumberOfflineGeocoder {
         countryCallingCode : (1000 + (int) (number.getNationalNumber() / 10000000));
     AreaCodeMap phonePrefixDescriptions =
         getPhonePrefixDescriptions(phonePrefix, lang, script, region);
-    return (phonePrefixDescriptions != null) ? phonePrefixDescriptions.lookup(number) : "";
+    String description = phonePrefixDescriptions != null
+        ? phonePrefixDescriptions.lookup(number)
+        : "";
+    return description == null ? "" : description;
   }
 }
index 2721c8d..a75b327 100644 (file)
@@ -47,6 +47,8 @@ public class PhoneNumberOfflineGeocoderTest extends TestCase {
       new PhoneNumber().setCountryCode(1).setNationalNumber(6509600000L);
   private static final PhoneNumber US_NUMBER3 =
       new PhoneNumber().setCountryCode(1).setNationalNumber(2128120000L);
+  private static final PhoneNumber US_NUMBER4 =
+      new PhoneNumber().setCountryCode(1).setNationalNumber(6174240000L);
   private static final PhoneNumber US_INVALID_NUMBER =
       new PhoneNumber().setCountryCode(1).setNationalNumber(123456789L);
   private static final PhoneNumber BS_NUMBER1 =
@@ -71,6 +73,13 @@ public class PhoneNumberOfflineGeocoderTest extends TestCase {
                                                       new Locale("en", "US")));
   }
 
+  public void testGetDescriptionForNumberWithMissingPrefix() {
+    // Test that the name of the country is returned when the number passed in is valid but not
+    // covered by the geocoding data file.
+    assertEquals("United States",
+        geocoder.getDescriptionForNumber(US_NUMBER4, new Locale("en", "US")));
+  }
+
   public void testGetDescriptionForNumber_en_US() {
     assertEquals("CA",
         geocoder.getDescriptionForNumber(US_NUMBER1, new Locale("en", "US")));