public Request read(Reader reader, HttpServletRequest req) throws WfsTransactionException {
// translate string into a proper SAX input source
InputSource requestSource = new InputSource(reader);
// instantiante parsers and content handlers
TransactionHandler contentHandler = new TransactionHandler();
TransactionFilterHandler filterParser = new TransactionFilterHandler(contentHandler,
null);
TransactionFeatureHandler featureParser = new TransactionFeatureHandler(filterParser,
req);
GMLFilterGeometry geometryFilter = new GMLFilterGeometry(featureParser);
GMLFilterDocument documentFilter = new GMLFilterDocument(geometryFilter);
// read in XML file and parse to content handler
try {
SAXParserFactory factory = SAXParserFactory.newInstance();
SAXParser parser = factory.newSAXParser();
ParserAdapter adapter = new ParserAdapter(parser.getParser());
adapter.setContentHandler(documentFilter);
LOGGER.finest("about to start parsing");
adapter.parse(requestSource);
LOGGER.finer("just parsed: " + requestSource);
} catch (SAXException e) {
//e.getCause().printStackTrace(System.out);
//e.printStackTrace(System.out);
throw new WfsTransactionException(e,
"XML transaction request SAX parsing error",
getClass().getName());
} catch (IOException e) {
throw new WfsTransactionException(e,
"XML transaction request input error", getClass().getName());
} catch (ParserConfigurationException e) {
throw new WfsTransactionException(e,
"Some sort of issue creating parser", getClass().getName());
}
Request r = contentHandler.getRequest(req);
return r;
}