in src/cas/xmideserializer.cpp [95:195]
void XmiDeserializer::deserialize(InputSource const & crInputSource, CAS & cas, bool lenient) {
// Create a SAX2 parser object.
SAX2XMLReader* parser = XMLReaderFactory::createXMLReader();
//register content handler
XmiDeserializerHandler * contentHandler = new XmiDeserializerHandler(cas, NULL, lenient);
parser->setContentHandler(contentHandler);
//register error handler
XMLErrorHandler* errorHandler = new XMLErrorHandler();
parser->setErrorHandler(errorHandler);
// Parse the XML document.
// Document content sent to registered ContentHandler instance.
try {
parser->parse(crInputSource);
} catch (const XMLException& e) {
char* message = XMLString::transcode(e.getMessage());
cerr << "XMLException message is: \n"
<< message << "\n";
delete message;
ErrorInfo errInfo;
errInfo.setErrorId((TyErrorId)UIMA_ERR_RESOURCE_CORRUPTED);
ErrorMessage msg(UIMA_MSG_ID_EXC_XML_SAXPARSE_FATALERROR);
assertWithMsg(sizeof(XMLCh) == sizeof(UChar), "Port required");
msg.addParam((UChar const *) e.getMessage() );
msg.addParam( 0 );
msg.addParam( 0 );
errInfo.setMessage(msg);
errInfo.setSeverity(ErrorInfo::unrecoverable);
ExcIllFormedInputError exc(errInfo);
delete contentHandler;
delete errorHandler;
delete parser;
throw exc;
}
catch (const SAXParseException& e) {
char* message = XMLString::transcode(e.getMessage());
cerr << "SaxParseException message is: \n"
<< message << "\n";
delete message;
ErrorInfo errInfo;
errInfo.setErrorId((TyErrorId)UIMA_ERR_RESOURCE_CORRUPTED);
ErrorMessage msg(UIMA_MSG_ID_EXC_XML_SAXPARSE_FATALERROR);
assertWithMsg(sizeof(XMLCh) == sizeof(UChar), "Port required");
msg.addParam((UChar const *) e.getMessage() );
msg.addParam( 0 );
msg.addParam( 0 );
errInfo.setMessage(msg);
errInfo.setSeverity(ErrorInfo::unrecoverable);
ExcIllFormedInputError exc(errInfo);
delete contentHandler;
delete errorHandler;
delete parser;
throw exc;
} catch (Exception e) {
ErrorInfo errInfo;
errInfo.setErrorId((TyErrorId)UIMA_ERR_RESOURCE_CORRUPTED);
ErrorMessage msg(UIMA_MSG_ID_EXC_XML_SAXPARSE_FATALERROR);
assertWithMsg(sizeof(XMLCh) == sizeof(UChar), "Port required");
msg.addParam( e.asString() );
msg.addParam( 0 );
msg.addParam( 0 );
errInfo.setMessage(msg);
errInfo.setSeverity(ErrorInfo::unrecoverable);
ExcIllFormedInputError exc(errInfo);
delete contentHandler;
delete errorHandler;
delete parser;
throw exc;
} catch (...) {
ErrorInfo errInfo;
errInfo.setErrorId((TyErrorId)UIMA_ERR_RESOURCE_CORRUPTED);
ErrorMessage msg(UIMA_MSG_ID_EXC_XML_SAXPARSE_FATALERROR);
assertWithMsg(sizeof(XMLCh) == sizeof(UChar), "Port required");
msg.addParam("Unknown Exception when parsing XMI document." );
msg.addParam( 0 );
msg.addParam( 0 );
errInfo.setMessage(msg);
errInfo.setSeverity(ErrorInfo::unrecoverable);
ExcIllFormedInputError exc(errInfo);
if (contentHandler != NULL) {
delete contentHandler;
}
if (errorHandler !=NULL) {
delete errorHandler;
}
if (parser != NULL) {
delete parser;
}
throw exc;
}
// Delete the parser instance and handlers
delete contentHandler;
delete errorHandler;
delete parser;
}