import com.indexdata.mkjsf.pazpar2.data.sp.CategoriesResponse;\r
import com.indexdata.mkjsf.pazpar2.data.sp.TargetCategory;\r
\r
+/**\r
+ * Parses the XML stored in ClientCommandResponses and builds ResponseDataObjects from it.\r
+ * \r
+ * @author Niels Erik\r
+ *\r
+ */\r
public class ResponseParser extends DefaultHandler {\r
\r
private XMLReader xmlReader = null;\r
private String xml = null;\r
private static Logger logger = Logger.getLogger(ResponseParser.class);\r
\r
- public static List<String> docTypes = Arrays.asList( "bytarget","termlist","show","stat","record","search","init",\r
+ public static List<String> docTypes = Arrays.asList( "bytarget","termlist","show","stat","record","search","init","info",\r
/* SP extras */ "auth", "categories" ); \r
\r
public ResponseParser() {\r
} else if (localName.equals("record")) {\r
currentElement = new RecordResponse(); \r
} else if (localName.equals("bytarget")) {\r
- currentElement = new ByTarget(); \r
+ currentElement = new ByTargetResponse(); \r
} else if (localName.equals("target")) {\r
currentElement = new Target();\r
} else if (localName.equals("stat")) {\r
currentElement = new TermResponse();\r
}\r
((TermListResponse)dataElements.peek()).addTerm((TermResponse)currentElement);\r
+ } else if (localName.equals("info")) {\r
+ currentElement = new InfoResponse();\r
+ } else if (localName.equals("version") && dataElements.peek().getType().equals("info")) {\r
+ currentElement = new Pazpar2VersionResponse();\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 if (localName.equals("error") && (!dataElements.isEmpty() && dataElements.peek().getType().equals("applicationerror"))) {\r
+ currentElement = new ServiceError(); \r
// Service Proxy extras \r
} else if (localName.equals("auth")) { \r
currentElement = new AuthResponse();\r