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

Reply via email to