throws ServiceException {
// translate string into a proper SAX input source
InputSource requestSource = new InputSource(rawRequest);
// instantiante parsers and content handlers
FilterHandlerImpl contentHandler = new FilterHandlerImpl();
FilterFilter filterParser = new FilterFilter(contentHandler, null);
GMLFilterGeometry geometryFilter = new GMLFilterGeometry(filterParser);
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);
adapter.parse(requestSource);
LOGGER.fine("just parsed: " + requestSource);
} catch (SAXException e) {
//SAXException does not sets initCause(). Instead, it holds its own "exception" field.
if(e.getException() != null && e.getCause() == null){
e.initCause(e.getException());
}
throw new ServiceException(e, "XML getFeature request SAX parsing error",
XmlRequestReader.class.getName());
} catch (IOException e) {
throw new ServiceException(e, "XML get feature request input error",
XmlRequestReader.class.getName());
} catch (ParserConfigurationException e) {
throw new ServiceException(e, "Some sort of issue creating parser",
XmlRequestReader.class.getName());
}
LOGGER.fine("passing filter: " + contentHandler.getFilter());
return contentHandler.getFilter();
}