You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xalan.apache.org by au...@apache.org on 2001/02/03 01:06:59 UTC
cvs commit: xml-xalan/c/src/XercesParserLiaison XercesParserLiaison.hpp XercesParserLiaison.cpp
auriemma 01/02/02 16:06:59
Modified: c/src/XercesParserLiaison XercesParserLiaison.hpp
XercesParserLiaison.cpp
Log:
New error handling scheme.
Revision Changes Path
1.21 +11 -0 xml-xalan/c/src/XercesParserLiaison/XercesParserLiaison.hpp
Index: XercesParserLiaison.hpp
===================================================================
RCS file: /home/cvs/xml-xalan/c/src/XercesParserLiaison/XercesParserLiaison.hpp,v
retrieving revision 1.20
retrieving revision 1.21
diff -u -r1.20 -r1.21
--- XercesParserLiaison.hpp 2001/01/16 02:46:20 1.20
+++ XercesParserLiaison.hpp 2001/02/03 00:06:58 1.21
@@ -110,6 +110,12 @@
virtual void
reset();
+ virtual ExecutionContext*
+ getExecutionContext() const;
+
+ virtual void
+ setExecutionContext(ExecutionContext& theContext);
+
virtual bool
supportsSAX() const;
@@ -360,6 +366,9 @@
DOM_Document
mapXercesDocument(const XalanDocument* theDocument) const;
+ static void
+ formatErrorMessage(const SAXParseException& e, XalanDOMString& theMessage);
+
// Implementations for SAX ErrorHandler
virtual void
@@ -501,6 +510,8 @@
bool m_buildBridge;
bool m_threadSafe;
+
+ ExecutionContext* m_executionContext;
};
1.27 +82 -78 xml-xalan/c/src/XercesParserLiaison/XercesParserLiaison.cpp
Index: XercesParserLiaison.cpp
===================================================================
RCS file: /home/cvs/xml-xalan/c/src/XercesParserLiaison/XercesParserLiaison.cpp,v
retrieving revision 1.26
retrieving revision 1.27
diff -u -r1.26 -r1.27
--- XercesParserLiaison.cpp 2001/01/16 02:46:20 1.26
+++ XercesParserLiaison.cpp 2001/02/03 00:06:58 1.27
@@ -82,6 +82,7 @@
+#include <PlatformSupport/ExecutionContext.hpp>
#include <PlatformSupport/STLHelper.hpp>
#include <PlatformSupport/XalanUnicode.hpp>
@@ -123,7 +124,8 @@
m_errorHandler(this),
m_documentMap(),
m_buildBridge(true),
- m_threadSafe(false)
+ m_threadSafe(false),
+ m_executionContext(0)
{
}
@@ -151,6 +153,24 @@
m_documentMap.clear();
m_DOMSupport.reset();
+
+ m_executionContext = 0;
+}
+
+
+
+ExecutionContext*
+XercesParserLiaison::getExecutionContext() const
+{
+ return m_executionContext;
+}
+
+
+
+void
+XercesParserLiaison::setExecutionContext(ExecutionContext& theContext)
+{
+ m_executionContext = &theContext;
}
@@ -439,34 +459,25 @@
void
XercesParserLiaison::fatalError(const SAXParseException& e)
{
+ XalanDOMString theMessage("Fatal Error");
+
+ formatErrorMessage(e, theMessage);
+
+ if (m_executionContext != 0)
+ {
+ // We call warning() because we don't want the execution
+ // context to potentially throw an exception.
+ m_executionContext->warn(theMessage);
+ }
+ else
+ {
#if !defined(XALAN_NO_NAMESPACES)
- using std::cerr;
- using std::endl;
+ using std::cerr;
+ using std::endl;
#endif
-#if defined(XALAN_OSTREAM_HAS_WCHAR_T)
- cerr << endl
- << "Fatal Error at (file ";
- OutputString(cerr, e.getSystemId());
- cerr << ", line "
- << e.getLineNumber()
- << ", char"
- << e.getColumnNumber()
- << "): ";
- OutputString(cerr, e.getMessage());
- cerr << endl;
-#else
- cerr << endl
- << "Fatal Error at (file "
- << e.getSystemId()
- << ", line "
- << e.getLineNumber()
- << ", char"
- << e.getColumnNumber()
- << "): "
- << e.getMessage()
- << endl;
-#endif
+ cerr << endl << theMessage << endl;
+ }
throw e;
}
@@ -476,35 +487,25 @@
void
XercesParserLiaison::error(const SAXParseException& e)
{
-#if !defined(XALAN_NO_NAMESPACES)
- using std::cerr;
- using std::endl;
-#endif
+ XalanDOMString theMessage("Error ");
-#if defined(XALAN_OSTREAM_HAS_WCHAR_T)
- cerr << endl
- << "Error at (file ";
- OutputString(cerr, e.getSystemId());
- cerr << ", line "
- << e.getLineNumber()
- << ", char"
- << e.getColumnNumber()
- << "): ";
- OutputString(cerr, e.getMessage());
- cerr << endl;
-#else
- cerr << endl
- << "Error at (file "
- << e.getSystemId()
- << ", line "
- << e.getLineNumber()
- << ", char"
- << e.getColumnNumber()
- << "): "
- << e.getMessage()
- << endl;
+ formatErrorMessage(e, theMessage);
+
+ if (m_executionContext != 0)
+ {
+ // We call warn() because we don't want the execution
+ // context to potentially throw an exception.
+ m_executionContext->warn(theMessage);
+ }
+ else
+ {
+#if !defined(XALAN_NO_NAMESPACES)
+ using std::cerr;
+ using std::endl;
#endif
+ cerr << endl << theMessage << endl;
+ }
}
@@ -512,35 +513,38 @@
void
XercesParserLiaison::warning(const SAXParseException& e)
{
+ XalanDOMString theMessage("Warning ");
+
+ formatErrorMessage(e, theMessage);
+
+ if (m_executionContext != 0)
+ {
+ m_executionContext->warn(theMessage);
+ }
+ else
+ {
#if !defined(XALAN_NO_NAMESPACES)
- using std::cerr;
- using std::endl;
+ using std::cerr;
+ using std::endl;
#endif
-#if defined(XALAN_OSTREAM_HAS_WCHAR_T)
- cerr << endl
- << "Warning at (file ";
- OutputString(cerr, e.getSystemId());
- cerr << ", line "
- << e.getLineNumber()
- << ", char"
- << e.getColumnNumber()
- << "): ";
- OutputString(cerr, e.getMessage());
- cerr << endl;
-#else
- cerr << endl
- << "Warning at (file "
- << e.getSystemId()
- << ", line "
- << e.getLineNumber()
- << ", char"
- << e.getColumnNumber()
- << "): "
- << e.getMessage()
- << endl;
-#endif
-
+ cerr << endl << theMessage << endl;
+ }
+}
+
+
+
+void
+XercesParserLiaison::formatErrorMessage(const SAXParseException& e, XalanDOMString& theMessage)
+{
+ append(theMessage, " at (file ");
+ append(theMessage, e.getSystemId());
+ append(theMessage, ", line ");
+ append(theMessage, LongToDOMString(long(e.getLineNumber())));
+ append(theMessage, ", column ");
+ append(theMessage, LongToDOMString(long(e.getColumnNumber())));
+ append(theMessage, "): ");
+ append(theMessage, e.getMessage());
}