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());
   }