Identify bad responses coming back from the server, and throw a specific exception...
[frank.git] / prod / net / jaekl / qd / http / RequestBroker.java
index 1a4ba4cf76e42b107c1fc8fb90bafc0b7a40e325..d0630089eead3805ba77b73a2c6bcf64d873f637 100644 (file)
@@ -12,6 +12,7 @@ import java.util.ArrayList;
 
 import net.jaekl.qd.QDException;
 import net.jaekl.qd.util.ExceptionUtils;
+import net.jaekl.qd.xml.ParseErrorHandler;
 import net.jaekl.qd.xml.ParseHandler;
 import net.jaekl.qd.xml.ParseResult;
 
@@ -25,6 +26,7 @@ import org.apache.http.client.methods.HttpPost;
 import org.apache.http.impl.client.HttpClientBuilder;
 import org.xml.sax.InputSource;
 import org.xml.sax.SAXException;
+import org.xml.sax.SAXParseException;
 import org.xml.sax.XMLReader;
 import org.xml.sax.helpers.XMLReaderFactory;
 
@@ -130,9 +132,14 @@ public class RequestBroker
                        is = doSubmit(method, passedParams);
                        XMLReader reader = XMLReaderFactory.createXMLReader();
                        ParseHandler ph = new ParseHandler(result);
+                       ParseErrorHandler peh = new ParseErrorHandler();
                        reader.setContentHandler(ph);
+                       reader.setErrorHandler(peh);
                        reader.parse(new InputSource(is));
                } 
+               catch ( SAXParseException saxpe ) {
+                       throw new InvalidResponseException(m_gatewayUrl, method, saxpe);
+               }
                catch ( InstantiationException
                                | InvocationTargetException
                                | IllegalAccessException