diff --git a/src/de/schildbach/pte/AbstractEfaProvider.java b/src/de/schildbach/pte/AbstractEfaProvider.java index c55f1ce2..24d59f1c 100644 --- a/src/de/schildbach/pte/AbstractEfaProvider.java +++ b/src/de/schildbach/pte/AbstractEfaProvider.java @@ -75,11 +75,10 @@ public abstract class AbstractEfaProvider implements NetworkProvider pp.setInput(is, DEFAULT_ENCODING); // parse odv name elements - XmlPullUtil.jumpToStartTag(pp, null, "itdOdv"); - final String usage = pp.getAttributeValue(null, "usage"); - if (!"origin".equals(usage)) - throw new IllegalStateException(); - XmlPullUtil.nextStartTagInsideTree(pp, null, "itdOdvName"); + if (!XmlPullUtil.jumpToStartTag(pp, null, "itdOdv") || !"origin".equals(pp.getAttributeValue(null, "usage"))) + throw new IllegalStateException("cannot find "); + if (!XmlPullUtil.nextStartTagInsideTree(pp, null, "itdOdvName")) + throw new IllegalStateException("cannot find "); final String nameState = pp.getAttributeValue(null, "state"); if ("identified".equals(nameState) || "list".equals(nameState)) while (XmlPullUtil.nextStartTagInsideTree(pp, null, "odvNameElem")) @@ -218,9 +217,12 @@ public abstract class AbstractEfaProvider implements NetworkProvider final XmlPullParser pp = factory.newPullParser(); pp.setInput(is, DEFAULT_ENCODING); - XmlPullUtil.jumpToStartTag(pp, null, "itdOdvName"); + if (!XmlPullUtil.jumpToStartTag(pp, null, "itdOdv") || !"dm".equals(pp.getAttributeValue(null, "usage"))) + throw new IllegalStateException("cannot find "); + if (!XmlPullUtil.nextStartTagInsideTree(pp, null, "itdOdvName")) + throw new IllegalStateException("cannot find "); final String nameState = pp.getAttributeValue(null, "state"); - if (nameState.equals("identified")) + if ("identified".equals(nameState)) { final List stations = new ArrayList(); @@ -279,7 +281,7 @@ public abstract class AbstractEfaProvider implements NetworkProvider else return new NearbyStationsResult(uri, stations.subList(0, maxStations)); } - else if (nameState.equals("notidentified")) + else if ("notidentified".equals(nameState)) { return new NearbyStationsResult(uri, NearbyStationsResult.Status.INVALID_STATION); } @@ -591,7 +593,10 @@ public abstract class AbstractEfaProvider implements NetworkProvider final XmlPullParser pp = factory.newPullParser(); pp.setInput(is, DEFAULT_ENCODING); - XmlPullUtil.jumpToStartTag(pp, null, "itdOdvName"); + if (!XmlPullUtil.jumpToStartTag(pp, null, "itdOdv") || !"dm".equals(pp.getAttributeValue(null, "usage"))) + throw new IllegalStateException("cannot find "); + if (!XmlPullUtil.nextStartTagInsideTree(pp, null, "itdOdvName")) + throw new IllegalStateException("cannot find "); final String nameState = pp.getAttributeValue(null, "state"); if ("identified".equals(nameState)) {