First off, thanks for the lib. It has made my life quite a bit easier. I just had one small problem.
If you attempt to geocode an address like "Phoenix, AZ" the library throws an NPE:
geo.google.GeoException: java.lang.NullPointerException
at geo.google.mapping.XmlToUsAddressFunctor.execute(XmlToUsAddressFunctor.java:31)
at geo.google.mapping.XmlToUsAddressFunctor.execute(XmlToUsAddressFunctor.java:15)
at geo.google.GeoAddressStandardizer.standardize(GeoAddressStandardizer.java:238)
at geo.google.GeoAddressStandardizer.standardizeToGeoUsAddresses(GeoAddressStandardizer.java:195)
<snip>
Caused by: java.lang.NullPointerException
at geo.google.mapping.AddressToUsAddressFunctor.execute(AddressToUsAddressFunctor.java:67)
at geo.google.mapping.XmlToUsAddressFunctor.execute(XmlToUsAddressFunctor.java:25)
... 22 more
Here are the changes I made locally. So far it seems to have fixed the problem.
Google-1.5.0-sources/geo/google/mapping/AddressToUsAddressFunctor.java
--- geoGoogle-1.5.0-sources.orig/geo/google/mapping/AddressToUsAddressFunctor.java 2008-06-02 15:02:44.000000000 -0700
+++ geoGoogle-1.5.0-sources/geo/google/mapping/AddressToUsAddressFunctor.java 2009-09-23 13:31:18.000000000 -0700
@@ -64,10 +64,12 @@
//postal code
PostalCode postalCode = locality.getPostalCode();
- List<PostalCodeNumber> numbers = postalCode.getPostalCodeNumber();
- if(CollectionUtils.isNotEmpty(numbers)){
- ret.setPostalCode(numbers.get(0).getContent());
- }
+ if(postalCode != null) {
+ List<PostalCodeNumber> numbers = postalCode.getPostalCodeNumber();
+ if(CollectionUtils.isNotEmpty(numbers)){
+ ret.setPostalCode(numbers.get(0).getContent());
+ }
+ }
if(locality.getThoroughfare() != null){
//addresslines
List<ThoroughfareNameType> thoroughfares =