diff --git a/src/de/schildbach/pte/AbstractEfaProvider.java b/src/de/schildbach/pte/AbstractEfaProvider.java index 4ebac77b..dc0c48af 100644 --- a/src/de/schildbach/pte/AbstractEfaProvider.java +++ b/src/de/schildbach/pte/AbstractEfaProvider.java @@ -80,6 +80,8 @@ public abstract class AbstractEfaProvider implements NetworkProvider final XmlPullParser pp = factory.newPullParser(); pp.setInput(is, DEFAULT_ENCODING); + assertItdRequest(pp); + // parse odv name elements if (!XmlPullUtil.jumpToStartTag(pp, null, "itdOdv") || !"origin".equals(pp.getAttributeValue(null, "usage"))) throw new IllegalStateException("cannot find "); @@ -223,6 +225,8 @@ public abstract class AbstractEfaProvider implements NetworkProvider final XmlPullParser pp = factory.newPullParser(); pp.setInput(is, DEFAULT_ENCODING); + assertItdRequest(pp); + if (!XmlPullUtil.jumpToStartTag(pp, null, "itdOdv") || !"dm".equals(pp.getAttributeValue(null, "usage"))) throw new IllegalStateException("cannot find "); if (!XmlPullUtil.nextStartTagInsideTree(pp, null, "itdOdvName")) @@ -649,6 +653,8 @@ public abstract class AbstractEfaProvider implements NetworkProvider final XmlPullParser pp = factory.newPullParser(); pp.setInput(is, DEFAULT_ENCODING); + assertItdRequest(pp); + if (!XmlPullUtil.jumpToStartTag(pp, null, "itdOdv") || !"dm".equals(pp.getAttributeValue(null, "usage"))) throw new IllegalStateException("cannot find "); if (!XmlPullUtil.nextStartTagInsideTree(pp, null, "itdOdvName")) @@ -819,8 +825,7 @@ public abstract class AbstractEfaProvider implements NetworkProvider final XmlPullParser pp = factory.newPullParser(); pp.setInput(is, DEFAULT_ENCODING); - if (!XmlPullUtil.jumpToStartTag(pp, null, "itdRequest")) - throw new IllegalStateException("cannot find "); + assertItdRequest(pp); final String sessionId = pp.getAttributeValue(null, "sessionID"); if (!XmlPullUtil.jumpToStartTag(pp, null, "itdTripRequest")) @@ -1136,4 +1141,10 @@ public abstract class AbstractEfaProvider implements NetworkProvider { return LINES.get(line.charAt(0)); } + + private void assertItdRequest(final XmlPullParser pp) throws XmlPullParserException, IOException + { + if (!XmlPullUtil.jumpToStartTag(pp, null, "itdRequest")) + throw new IOException("cannot find "); + } } diff --git a/src/de/schildbach/pte/AbstractHafasProvider.java b/src/de/schildbach/pte/AbstractHafasProvider.java index f932d489..9836e974 100644 --- a/src/de/schildbach/pte/AbstractHafasProvider.java +++ b/src/de/schildbach/pte/AbstractHafasProvider.java @@ -146,7 +146,7 @@ public abstract class AbstractHafasProvider implements NetworkProvider final XmlPullParser pp = factory.newPullParser(); pp.setInput(is, DEFAULT_ENCODING); - XmlPullUtil.jump(pp, "ResC"); + assertResC(pp); XmlPullUtil.enter(pp); XmlPullUtil.require(pp, "LocValRes"); @@ -245,7 +245,10 @@ public abstract class AbstractHafasProvider implements NetworkProvider final XmlPullParser pp = factory.newPullParser(); pp.setInput(is, DEFAULT_ENCODING); - XmlPullUtil.jump(pp, "ConRes"); + assertResC(pp); + XmlPullUtil.enter(pp); + + XmlPullUtil.require(pp, "ConRes"); XmlPullUtil.enter(pp); if (pp.getName().equals("Err")) { @@ -876,4 +879,10 @@ public abstract class AbstractHafasProvider implements NetworkProvider { return LINES.get(line.charAt(0)); } + + private void assertResC(final XmlPullParser pp) throws XmlPullParserException, IOException + { + if (!XmlPullUtil.jumpToStartTag(pp, null, "ResC")) + throw new IOException("cannot find "); + } } diff --git a/src/de/schildbach/pte/BahnProvider.java b/src/de/schildbach/pte/BahnProvider.java index 0310f05f..673eb235 100644 --- a/src/de/schildbach/pte/BahnProvider.java +++ b/src/de/schildbach/pte/BahnProvider.java @@ -218,7 +218,7 @@ public final class BahnProvider implements NetworkProvider else if (type.equals("REQ0JourneyStops1.0K")) viaAddresses = addresses; else - throw new IOException(type); + throw new IllegalStateException(type); } if (fromAddresses != null || viaAddresses != null || toAddresses != null) diff --git a/src/de/schildbach/pte/OebbProvider.java b/src/de/schildbach/pte/OebbProvider.java index 558312de..c01f60cc 100644 --- a/src/de/schildbach/pte/OebbProvider.java +++ b/src/de/schildbach/pte/OebbProvider.java @@ -285,7 +285,7 @@ public class OebbProvider extends AbstractHafasProvider else if (type.equals("REQ0JourneyStops1.0K")) viaAddresses = addresses; else - throw new IOException(type); + throw new IllegalStateException(type); } if (fromAddresses != null || viaAddresses != null || toAddresses != null) diff --git a/src/de/schildbach/pte/RmvProvider.java b/src/de/schildbach/pte/RmvProvider.java index 35fcc399..29d710ab 100644 --- a/src/de/schildbach/pte/RmvProvider.java +++ b/src/de/schildbach/pte/RmvProvider.java @@ -227,7 +227,7 @@ public class RmvProvider extends AbstractHafasProvider else if (type.equals("Zielort")) toAddresses = addresses; else - throw new IOException(type); + throw new IllegalStateException(type); } if (fromAddresses != null || viaAddresses != null || toAddresses != null) diff --git a/src/de/schildbach/pte/util/ParserUtils.java b/src/de/schildbach/pte/util/ParserUtils.java index 1ffa06e1..49ba9e9b 100644 --- a/src/de/schildbach/pte/util/ParserUtils.java +++ b/src/de/schildbach/pte/util/ParserUtils.java @@ -137,7 +137,7 @@ public final class ParserUtils if (tries-- > 0) System.out.println("got empty page, retrying..."); else - throw new IOException("got empty page: " + url); + throw new RuntimeException("got empty page: " + url); } } catch (final SocketTimeoutException x) @@ -145,7 +145,7 @@ public final class ParserUtils if (tries-- > 0) System.out.println("socket timed out, retrying..."); else - throw x; + throw new RuntimeException(x); } } }