Work on error reporting. Adds troubleshooter.
[mkjsf-moved-to-github.git] / src / main / java / com / indexdata / pz2utils4jsf / pazpar2 / data / Pazpar2ResponseParser.java
index a08fdbc..40cf412 100644 (file)
@@ -38,7 +38,7 @@ public class Pazpar2ResponseParser extends DefaultHandler {
   private Pazpar2ResponseData result = null;\r
 \r
   private static final List<String> docTypes = \r
-      Arrays.asList("bytarget","termlist","show","stat","record");\r
+      Arrays.asList("bytarget","termlist","show","stat","record","search");\r
   \r
   public Pazpar2ResponseParser() {    \r
     try {\r
@@ -52,6 +52,10 @@ public class Pazpar2ResponseParser extends DefaultHandler {
     }\r
   }\r
   \r
+  public static Pazpar2ResponseParser getParser() {\r
+    return new Pazpar2ResponseParser();\r
+  }\r
+  \r
   private void initSax() throws ParserConfigurationException, SAXException {\r
     SAXParserFactory spf = SAXParserFactory.newInstance();\r
     spf.setNamespaceAware(true);\r
@@ -60,7 +64,14 @@ public class Pazpar2ResponseParser extends DefaultHandler {
     xmlReader.setContentHandler(this);         \r
   }\r
   \r
-  public Pazpar2ResponseData getObject (String response) {\r
+  /**\r
+   * Parses a Pazpar2 XML response -- or an error response as XML -- and produces a \r
+   * Pazpar2ResponseData object, i.e. a 'show' object\r
+   * \r
+   * @param response XML response string from Pazpar2\r
+   * @return Response data object\r
+   */\r
+  public Pazpar2ResponseData getDataObject (String response) {\r
     try {\r
       xmlReader.parse(new InputSource(new ByteArrayInputStream(response.getBytes("UTF-8"))));\r
     } catch (UnsupportedEncodingException e) {\r
@@ -109,6 +120,10 @@ public class Pazpar2ResponseParser extends DefaultHandler {
       ((TermListResponse)dataElements.peek()).addTerm((TermResponse)currentElement);\r
     } else if (localName.equals("record")) {\r
       currentElement = new RecordResponse();\r
+    } else if (localName.equals("search")) {\r
+      currentElement = new SearchResponse();\r
+    } else if (localName.equals("applicationerror")) {\r
+      currentElement = new ApplicationError();\r
     } else {\r
       currentElement = new Pazpar2ResponseData();\r
     }\r