From 1e3fe842d81e853e9f2e290e6e72383bd8020648 Mon Sep 17 00:00:00 2001 From: "philip.liard@gmail.com" Date: Wed, 14 Sep 2011 15:07:06 +0000 Subject: [PATCH] JAVA: Fix NullPointerException in PhoneNumberOfflineGeocoder. git-svn-id: http://libphonenumber.googlecode.com/svn/trunk@353 ee073f10-1060-11df-b6a4-87a95322a99c --- .../geocoding/PhoneNumberOfflineGeocoder.java | 5 ++++- .../geocoding/PhoneNumberOfflineGeocoderTest.java | 9 +++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/java/src/com/google/i18n/phonenumbers/geocoding/PhoneNumberOfflineGeocoder.java b/java/src/com/google/i18n/phonenumbers/geocoding/PhoneNumberOfflineGeocoder.java index dd7cd594..2e4fa141 100644 --- a/java/src/com/google/i18n/phonenumbers/geocoding/PhoneNumberOfflineGeocoder.java +++ b/java/src/com/google/i18n/phonenumbers/geocoding/PhoneNumberOfflineGeocoder.java @@ -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; } } diff --git a/java/test/com/google/i18n/phonenumbers/geocoding/PhoneNumberOfflineGeocoderTest.java b/java/test/com/google/i18n/phonenumbers/geocoding/PhoneNumberOfflineGeocoderTest.java index 2721c8d1..a75b3270 100644 --- a/java/test/com/google/i18n/phonenumbers/geocoding/PhoneNumberOfflineGeocoderTest.java +++ b/java/test/com/google/i18n/phonenumbers/geocoding/PhoneNumberOfflineGeocoderTest.java @@ -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"))); -- 2.34.1