X-Git-Url: http://lists.indexdata.dk/cgi-bin?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fcom%2Findexdata%2Fmkjsf%2Fpazpar2%2Fdata%2FResponseParser.java;h=179424d8f41635671e96c21e16247be31386fb42;hb=11ff48b9d37193a89a4b74da75db8c58415c46a6;hp=29a5fb724a487484a2c2def958a93af3b263bd5b;hpb=bcb39bd9bde8071ac3a6741ce5d51ed9e763ba9c;p=mkjsf-moved-to-github.git diff --git a/src/main/java/com/indexdata/mkjsf/pazpar2/data/ResponseParser.java b/src/main/java/com/indexdata/mkjsf/pazpar2/data/ResponseParser.java index 29a5fb7..179424d 100644 --- a/src/main/java/com/indexdata/mkjsf/pazpar2/data/ResponseParser.java +++ b/src/main/java/com/indexdata/mkjsf/pazpar2/data/ResponseParser.java @@ -18,6 +18,11 @@ import org.xml.sax.SAXException; import org.xml.sax.XMLReader; import org.xml.sax.helpers.DefaultHandler; +import com.indexdata.mkjsf.pazpar2.ClientCommandResponse; +import com.indexdata.mkjsf.pazpar2.data.sp.AuthResponse; +import com.indexdata.mkjsf.pazpar2.data.sp.CategoriesResponse; +import com.indexdata.mkjsf.pazpar2.data.sp.TargetCategory; + public class ResponseParser extends DefaultHandler { private XMLReader xmlReader = null; @@ -28,7 +33,7 @@ public class ResponseParser extends DefaultHandler { private static Logger logger = Logger.getLogger(ResponseParser.class); public static List docTypes = Arrays.asList( "bytarget","termlist","show","stat","record","search","init", - /* SP extras */ "response" ); + /* SP extras */ "auth", "categories" ); public ResponseParser() { try { @@ -61,10 +66,10 @@ public class ResponseParser extends DefaultHandler { * @param response XML response string from Pazpar2 * @return Response data object */ - public ResponseDataObject getDataObject (String response) { - this.xml = response; + public ResponseDataObject getDataObject (ClientCommandResponse response) { + this.xml = response.getResponseString(); try { - xmlReader.parse(new InputSource(new ByteArrayInputStream(response.getBytes("UTF-8")))); + xmlReader.parse(new InputSource(new ByteArrayInputStream(response.getResponseToParse()))); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } catch (IOException e) { @@ -115,9 +120,15 @@ public class ResponseParser extends DefaultHandler { } else if (localName.equals("applicationerror")) { currentElement = new CommandError(); } else if (localName.equals("error") && dataElements.peek().getType().equals("applicationerror")) { - currentElement = new Pazpar2Error(); - } else if (localName.equals("response")) { // Note, document element not named 'auth' + currentElement = new ServiceError(); + // Service Proxy extras + } else if (localName.equals("auth")) { currentElement = new AuthResponse(); + } else if (localName.equals("categories")) { + currentElement = new CategoriesResponse(); + } else if (localName.equals("category") && dataElements.peek().getType().equals("categories")) { + currentElement = new TargetCategory(); + // Catch all } else { currentElement = new ResponseDataObject(); }