diff --git a/enabler/src/de/schildbach/pte/AbstractHafasProvider.java b/enabler/src/de/schildbach/pte/AbstractHafasProvider.java index a9ba98ff..8e9624c9 100644 --- a/enabler/src/de/schildbach/pte/AbstractHafasProvider.java +++ b/enabler/src/de/schildbach/pte/AbstractHafasProvider.java @@ -489,7 +489,7 @@ public abstract class AbstractHafasProvider extends AbstractNetworkProvider final String request = ""; final String wrappedRequest = wrap(request, xmlMlcResEncoding); - // ParserUtils.printXml(ParserUtils.scrape(apiUri, true, wrappedRequest, xmlMlcResEncoding, null)); + // ParserUtils.printXml(ParserUtils.scrape(apiUri, wrappedRequest, xmlMlcResEncoding, null)); Reader reader = null; @@ -535,16 +535,26 @@ public abstract class AbstractHafasProvider extends AbstractNetworkProvider } final String name = XmlPullUtil.attr(pp, "n"); + final String[] placeAndName = splitPlaceAndName(name); final String r = pp.getAttributeValue(null, "r"); final Matcher iMatcherLonLat = P_XML_MLC_REQ_LONLAT.matcher(i != null ? i : r); - if (!iMatcherLonLat.matches()) - throw new IllegalStateException("cannot parse lon/lat: '" + i + "' or '" + r + "'"); - final int lon = Integer.parseInt(iMatcherLonLat.group(1)); - final int lat = Integer.parseInt(iMatcherLonLat.group(2)); + final int lat; + final int lon; + if (iMatcherLonLat.matches()) + { + lon = Integer.parseInt(iMatcherLonLat.group(1)); + lat = Integer.parseInt(iMatcherLonLat.group(2)); + } + else + { + lat = 0; + lon = 0; + } - final String[] placeAndName = splitPlaceAndName(name); - results.add(new Location(type, id, lat, lon, placeAndName[0], placeAndName[1])); + final Location location = new Location(type, id, lat, lon, placeAndName[0], placeAndName[1]); + if (location.hasLocation()) + results.add(location); XmlPullUtil.next(pp); } diff --git a/enabler/test/de/schildbach/pte/live/ShProviderLiveTest.java b/enabler/test/de/schildbach/pte/live/ShProviderLiveTest.java index 4ce2e78b..89cc61f8 100644 --- a/enabler/test/de/schildbach/pte/live/ShProviderLiveTest.java +++ b/enabler/test/de/schildbach/pte/live/ShProviderLiveTest.java @@ -81,6 +81,14 @@ public class ShProviderLiveTest extends AbstractProviderLiveTest print(autocompletes); } + @Test + public void autocompleteWithoutCoordinatesInResult() throws Exception + { + final List autocompletes = provider.autocompleteStations("aachen"); + + print(autocompletes); + } + @Test public void shortConnection() throws Exception {