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);
}
}
}