diff --git a/enabler/src/de/schildbach/pte/AbstractEfaProvider.java b/enabler/src/de/schildbach/pte/AbstractEfaProvider.java index de8b2049..4e660a21 100644 --- a/enabler/src/de/schildbach/pte/AbstractEfaProvider.java +++ b/enabler/src/de/schildbach/pte/AbstractEfaProvider.java @@ -3073,20 +3073,25 @@ public abstract class AbstractEfaProvider extends AbstractNetworkProvider { XmlPullUtil.enter(pp, "efa"); - final String now = XmlPullUtil.valueTag(pp, "now"); - final Calendar serverTime = new GregorianCalendar(timeZone); - ParserUtils.parseIsoDate(serverTime, now.substring(0, 10)); - ParserUtils.parseEuropeanTime(serverTime, now.substring(11)); + if (XmlPullUtil.test(pp, "error")) { + final String message = XmlPullUtil.valueTag(pp, "error"); + throw new RuntimeException(message); + } else { + final String now = XmlPullUtil.valueTag(pp, "now"); + final Calendar serverTime = new GregorianCalendar(timeZone); + ParserUtils.parseIsoDate(serverTime, now.substring(0, 10)); + ParserUtils.parseEuropeanTime(serverTime, now.substring(11)); - final Map params = processPas(pp); - final String requestId = params.get("requestID"); - final String sessionId = params.get("sessionID"); - final String serverId = params.get("serverID"); + final Map params = processPas(pp); + final String requestId = params.get("requestID"); + final String sessionId = params.get("sessionID"); + final String serverId = params.get("serverID"); - final ResultHeader header = new ResultHeader(network, SERVER_PRODUCT, null, serverId, - serverTime.getTimeInMillis(), new String[] { sessionId, requestId }); + final ResultHeader header = new ResultHeader(network, SERVER_PRODUCT, null, serverId, + serverTime.getTimeInMillis(), new String[] { sessionId, requestId }); - return header; + return header; + } } private Map processPas(final XmlPullParser pp) throws XmlPullParserException, IOException {