List debugDocuments = WGACore.getDebugDocumentsList(session);
if (index == -1) {
index = debugDocuments.size() - 1;
}
if (index >= debugDocuments.size()) {
throw new HttpErrorException(HttpServletResponse.SC_BAD_REQUEST, "Index out of range: " + index + " where maximum index is " + (debugDocuments.size() - 1), null);
}
else {
Document doc = (Document) debugDocuments.get(index);
Element element = (Element) doc.selectSingleNode(request.getParameter("root"));
doc = DocumentFactory.getInstance().createDocument(element.createCopy());
doc.getRootElement().addAttribute("index", String.valueOf(index));
try {
DOMWriter domWriter = new DOMWriter();
org.w3c.dom.Document domDocument = domWriter.write(doc);
Transformer trans = getDebugTagsTransformer(request.getParameter("throwAway") != null);
trans.transform(new DOMSource(domDocument), new StreamResult(response.getOutputStream()));
}
catch (TransformerConfigurationException e) {
response.sendError(500, e.getMessageAndLocation());
e.printStackTrace();
}
catch (TransformerFactoryConfigurationError e) {
response.sendError(500, e.getMessage());
e.printStackTrace();
}
catch (TransformerException e) {
response.sendError(500, e.getMessageAndLocation());
e.printStackTrace();
}
catch (IOException e) {
response.sendError(500, e.getMessage());
e.printStackTrace();
}
catch (DocumentException e) {
response.sendError(500, e.getMessage());
e.printStackTrace();
}
}
}
else {
throw new HttpErrorException(HttpServletResponse.SC_BAD_REQUEST, "You must include either parameter index or url to address the debug document to show", null);
}
}