Embeds pz2 error XML, if any, in the app error XML
[mkjsf-moved-to-github.git] / src / main / java / com / indexdata / pz2utils4jsf / pazpar2 / data / Pazpar2ResponseParser.java
index a08fdbc..e69b397 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,18 +64,25 @@ public class Pazpar2ResponseParser extends DefaultHandler {
     xmlReader.setContentHandler(this);         \r
   }\r
   \r
-  public Pazpar2ResponseData getObject (String response) {\r
-    try {\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
       // TODO Auto-generated catch block\r
-      e.printStackTrace();\r
+      e.printStackTrace();      \r
     } catch (IOException e) {\r
       // TODO Auto-generated catch block\r
       e.printStackTrace();\r
     } catch (SAXException e) {\r
       // TODO Auto-generated catch block\r
-      e.printStackTrace();\r
+      e.printStackTrace();      \r
     }\r
     return result;\r
   }\r
@@ -109,6 +120,12 @@ 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 CommandError();\r
+    } else if (localName.equals("error") && dataElements.peek().getType().equals("applicationerror")) {\r
+      currentElement = new Pazpar2Error();     \r
     } else {\r
       currentElement = new Pazpar2ResponseData();\r
     }\r
@@ -136,6 +153,4 @@ public class Pazpar2ResponseParser extends DefaultHandler {
       dataElements.pop();\r
     }\r
   }\r
-\r
-\r
 }\r