You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xalan.apache.org by db...@apache.org on 2001/11/07 05:04:28 UTC

cvs commit: xml-xalan/c/src/XalanTransformer XalanCompiledStylesheetDefault.cpp XalanCompiledStylesheetDefault.hpp XalanDefaultParsedSource.cpp XalanDefaultParsedSource.hpp XalanTransformer.cpp XalanTransformer.hpp XercesDOMParsedSource.cpp XercesDOMParsedSource.hpp

dbertoni    01/11/06 20:04:28

  Modified:    c/src/XalanTransformer XalanCompiledStylesheetDefault.cpp
                        XalanCompiledStylesheetDefault.hpp
                        XalanDefaultParsedSource.cpp
                        XalanDefaultParsedSource.hpp XalanTransformer.cpp
                        XalanTransformer.hpp XercesDOMParsedSource.cpp
                        XercesDOMParsedSource.hpp
  Log:
  Enable the use of EntityResolvers and ErrorHandlers.
  
  Revision  Changes    Path
  1.2       +66 -4     xml-xalan/c/src/XalanTransformer/XalanCompiledStylesheetDefault.cpp
  
  Index: XalanCompiledStylesheetDefault.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XalanTransformer/XalanCompiledStylesheetDefault.cpp,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- XalanCompiledStylesheetDefault.cpp	2001/06/07 19:10:03	1.1
  +++ XalanCompiledStylesheetDefault.cpp	2001/11/07 04:04:27	1.2
  @@ -58,20 +58,82 @@
   
   
   
  +#include <XMLSupport/XMLParserLiaison.hpp>
  +
  +
  +
  +class SetAndRestoreHandlers
  +{
  +public:
  +
  +	SetAndRestoreHandlers(
  +			XMLParserLiaison&	theParserLiaison,
  +			ErrorHandler*		theErrorHandler,
  +			EntityResolver*		theEntityResolver) :
  +		m_parserLiaison(theParserLiaison),
  +		m_errorHandler(theParserLiaison.getErrorHandler()),
  +		m_entityResolver(theParserLiaison.getEntityResolver())
  +	{
  +		theParserLiaison.setErrorHandler(theErrorHandler);
  +
  +		theParserLiaison.setEntityResolver(theEntityResolver);
  +	}
  +
  +	~SetAndRestoreHandlers()
  +	{
  +		m_parserLiaison.setEntityResolver(m_entityResolver);
  +
  +		m_parserLiaison.setErrorHandler(m_errorHandler);
  +	}
  +
  +private:
  +
  +	XMLParserLiaison&		m_parserLiaison;
  +
  +	ErrorHandler* const		m_errorHandler;
  +
  +	EntityResolver*	const	m_entityResolver;
  +};
  +
  +
  +
  +
  +inline const StylesheetRoot*
  +compileStylesheet(
  +			const XSLTInputSource&					theStylesheetSource,
  +			XSLTEngineImpl&							theProcessor,
  +			StylesheetConstructionContextDefault&	theConstructionContext,
  +			ErrorHandler*							theErrorHandler,
  +			EntityResolver*							theEntityResolver)
  +{
  +	const SetAndRestoreHandlers		theSetAndRestore(
  +			theProcessor.getXMLParserLiaison(),
  +			theErrorHandler,
  +			theEntityResolver);
  +
  +	return theProcessor.processStylesheet(theStylesheetSource, theConstructionContext);
  +}
  +
  +
  +
   XalanCompiledStylesheetDefault::XalanCompiledStylesheetDefault(
   			const XSLTInputSource&				theStylesheetSource,
   			XSLTProcessorEnvSupportDefault&		theXSLTProcessorEnvSupport,
  -			XSLTEngineImpl&						theProcessor):
  +			XSLTEngineImpl&						theProcessor,
  +			ErrorHandler*						theErrorHandler,
  +			EntityResolver*						theEntityResolver):
   	XalanCompiledStylesheet(),
   	m_stylesheetXPathFactory(),
   	m_stylesheetConstructionContext(
   				theProcessor,
   				theXSLTProcessorEnvSupport,
   				m_stylesheetXPathFactory),
  -	m_stylesheetRoot(
  -				theProcessor.processStylesheet(
  +	m_stylesheetRoot(compileStylesheet(
   				theStylesheetSource,
  -				m_stylesheetConstructionContext))
  +				theProcessor,
  +				m_stylesheetConstructionContext,
  +				theErrorHandler,
  +				theEntityResolver))
   {
   }
   
  
  
  
  1.2       +9 -2      xml-xalan/c/src/XalanTransformer/XalanCompiledStylesheetDefault.hpp
  
  Index: XalanCompiledStylesheetDefault.hpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XalanTransformer/XalanCompiledStylesheetDefault.hpp,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- XalanCompiledStylesheetDefault.hpp	2001/06/07 19:10:03	1.1
  +++ XalanCompiledStylesheetDefault.hpp	2001/11/07 04:04:27	1.2
  @@ -81,6 +81,11 @@
   
   
   
  +class EntityResolver;
  +class ErrorHandler;
  +
  +
  +
   class XALAN_TRANSFORMER_EXPORT XalanCompiledStylesheetDefault : public XalanCompiledStylesheet
   {
   public:
  @@ -88,7 +93,9 @@
   	XalanCompiledStylesheetDefault(
   			const XSLTInputSource&				theStylesheetSource,
   			XSLTProcessorEnvSupportDefault&		theXSLTProcessorEnvSupport,
  -			XSLTEngineImpl&						theProcessor);
  +			XSLTEngineImpl&						theProcessor,
  +			ErrorHandler*						theErrorHandler = 0,
  +			EntityResolver*						theEntityResolver = 0);
   
   	virtual
   	~XalanCompiledStylesheetDefault();
  @@ -102,7 +109,7 @@
   
   	StylesheetConstructionContextDefault	m_stylesheetConstructionContext;
   
  -	const StylesheetRoot*					m_stylesheetRoot;
  +	const StylesheetRoot* const				m_stylesheetRoot;
   };
   
   
  
  
  
  1.6       +5 -1      xml-xalan/c/src/XalanTransformer/XalanDefaultParsedSource.cpp
  
  Index: XalanDefaultParsedSource.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XalanTransformer/XalanDefaultParsedSource.cpp,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- XalanDefaultParsedSource.cpp	2001/09/06 18:41:11	1.5
  +++ XalanDefaultParsedSource.cpp	2001/11/07 04:04:27	1.6
  @@ -167,13 +167,17 @@
   
   XalanDefaultParsedSource::XalanDefaultParsedSource(
   			const XSLTInputSource&	theInputSource,
  -			bool					fValidate) :
  +			bool					fValidate,
  +			ErrorHandler*			theErrorHandler,
  +			EntityResolver*			theEntityResolver) :
   	XalanParsedSource(),
   	m_domSupport(),
   	m_parserLiaison(m_domSupport),
   	m_parsedSource(0)
   {
   	m_parserLiaison.setUseValidation(fValidate);
  +	m_parserLiaison.setEntityResolver(theEntityResolver);
  +	m_parserLiaison.setErrorHandler(theErrorHandler);
   
   	m_parsedSource = m_parserLiaison.mapDocument(m_parserLiaison.parseXMLStream(theInputSource));
   	assert(m_parsedSource != 0);
  
  
  
  1.6       +5 -1      xml-xalan/c/src/XalanTransformer/XalanDefaultParsedSource.hpp
  
  Index: XalanDefaultParsedSource.hpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XalanTransformer/XalanDefaultParsedSource.hpp,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- XalanDefaultParsedSource.hpp	2001/09/06 18:41:11	1.5
  +++ XalanDefaultParsedSource.hpp	2001/11/07 04:04:27	1.6
  @@ -77,6 +77,8 @@
   
   
   
  +class EntityResolver;
  +class ErrorHandler;
   class XalanSourceTreeDocument;
   
   
  @@ -148,7 +150,9 @@
   
   	XalanDefaultParsedSource(
   			const XSLTInputSource&	theInputSource,
  -			bool					fValidate = false);
  +			bool					fValidate = false,
  +			ErrorHandler*			theErrorHandler = 0,
  +			EntityResolver*			theEntityResolver = 0);
   
   	virtual
   	~XalanDefaultParsedSource();
  
  
  
  1.39      +14 -2     xml-xalan/c/src/XalanTransformer/XalanTransformer.cpp
  
  Index: XalanTransformer.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XalanTransformer/XalanTransformer.cpp,v
  retrieving revision 1.38
  retrieving revision 1.39
  diff -u -r1.38 -r1.39
  --- XalanTransformer.cpp	2001/10/30 04:01:36	1.38
  +++ XalanTransformer.cpp	2001/11/07 04:04:27	1.39
  @@ -132,6 +132,8 @@
   	m_functionPairs(),
   	m_errorMessage(1, '\0'),
   	m_useValidation(false),
  +	m_entityResolver(0),
  +	m_errorHandler(0),
   	m_stylesheetExecutionContext(new StylesheetExecutionContextDefault)
   {
   #if defined(XALAN_USE_ICU)
  @@ -935,11 +937,21 @@
   
   		if(useXercesDOM == true)
   		{
  -			theParsedSource = new XercesDOMParsedSource(theInputSource, m_useValidation);
  +			theParsedSource =
  +				new XercesDOMParsedSource(
  +						theInputSource,
  +						m_useValidation,
  +						m_errorHandler,
  +						m_entityResolver);
   		}
   		else
   		{
  -			theParsedSource = new XalanDefaultParsedSource(theInputSource, m_useValidation);
  +			theParsedSource =
  +				new XalanDefaultParsedSource(
  +						theInputSource,
  +						m_useValidation,
  +						m_errorHandler,
  +						m_entityResolver);
   		}
   
   		// Store it in a vector.
  
  
  
  1.35      +54 -0     xml-xalan/c/src/XalanTransformer/XalanTransformer.hpp
  
  Index: XalanTransformer.hpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XalanTransformer/XalanTransformer.hpp,v
  retrieving revision 1.34
  retrieving revision 1.35
  diff -u -r1.34 -r1.35
  --- XalanTransformer.hpp	2001/10/30 04:01:36	1.34
  +++ XalanTransformer.hpp	2001/11/07 04:04:27	1.35
  @@ -77,6 +77,8 @@
   
   
   
  +class EntityResolver;
  +class ErrorHandler;
   class Function;
   class StylesheetExecutionContextDefault;
   class XSLTInit;
  @@ -447,6 +449,54 @@
   	}
   
   	/**
  +	 * This method returns the installed entity resolver.
  +	 *
  +	 * @return The pointer to the installed entity resolver object.
  +	 */
  +	EntityResolver*
  +	getEntityResolver() const
  +	{
  +		return m_entityResolver;
  +	}
  +
  +	/**
  +	 * This method installs the user-specified entity resolver.
  +	 * It allows applications to trap and redirect calls to
  +	 * external entities.
  +	 *
  +	 * @param handler A pointer to the entity resolver to be called
  +	 * 			   when the parser comes across references to
  +	 * 			   entities in the XML file.
  +	 */
  +	void
  +	setEntityResolver(EntityResolver*	theResolver)
  +	{
  +		m_entityResolver = theResolver;
  +	}
  +
  +	/**
  +	 * This method returns the installed error handler.
  +	 *
  +	 * @return The pointer to the installed error handler object.
  +	 */
  +	ErrorHandler*
  +	getErrorHandler() const
  +	{
  +		return m_errorHandler;
  +	}
  +
  +	/**
  +	 * This method installs the user-specified error handler.
  +	 *
  +	 * @param handler A pointer to the error handler to be called upon error.
  +	 */
  +	void
  +	setErrorHandler(ErrorHandler*	theErrorHandler)
  +	{
  +		m_errorHandler = theErrorHandler;
  +	}
  +
  +	/**
   	 * Returns the last error that occurred as a 
   	 * result of calling transform. 
   	 *
  @@ -591,6 +641,10 @@
   	CharVectorType							m_errorMessage;
   
   	bool									m_useValidation;
  +
  +	EntityResolver*							m_entityResolver;
  +
  +	ErrorHandler*							m_errorHandler;
   
   	// This should always be the latest data member!!!
   	StylesheetExecutionContextDefault*		m_stylesheetExecutionContext;
  
  
  
  1.6       +5 -1      xml-xalan/c/src/XalanTransformer/XercesDOMParsedSource.cpp
  
  Index: XercesDOMParsedSource.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XalanTransformer/XercesDOMParsedSource.cpp,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- XercesDOMParsedSource.cpp	2001/09/06 18:41:11	1.5
  +++ XercesDOMParsedSource.cpp	2001/11/07 04:04:27	1.6
  @@ -93,12 +93,16 @@
   
   XercesDOMParsedSource::XercesDOMParsedSource(
   			const XSLTInputSource&	theInputSource,
  -			bool					fValidate):
  +			bool					fValidate,
  +			ErrorHandler*			theErrorHandler,
  +			EntityResolver*			theEntityResolver):
   	XalanParsedSource(),
   	m_parserLiaison(),
   	m_parsedSource(0)
   {
   	m_parserLiaison.setUseValidation(fValidate);
  +	m_parserLiaison.setEntityResolver(theEntityResolver);
  +	m_parserLiaison.setErrorHandler(theErrorHandler);
   
   	m_parsedSource = m_parserLiaison.parseXMLStream(theInputSource);
   	assert(m_parsedSource != 0);
  
  
  
  1.6       +8 -1      xml-xalan/c/src/XalanTransformer/XercesDOMParsedSource.hpp
  
  Index: XercesDOMParsedSource.hpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XalanTransformer/XercesDOMParsedSource.hpp,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- XercesDOMParsedSource.hpp	2001/09/06 18:41:11	1.5
  +++ XercesDOMParsedSource.hpp	2001/11/07 04:04:27	1.6
  @@ -77,6 +77,11 @@
   
   
   
  +class EntityResolver;
  +class ErrorHandler;
  +
  +
  +
   /**
    * This is designed to allow a XalanTranfomer object to reuse a parsed
    * document. 
  @@ -87,7 +92,9 @@
   	
   	XercesDOMParsedSource(
   			const XSLTInputSource&	theInputSource,
  -			bool					fValidate = false);
  +			bool					fValidate = false,
  +			ErrorHandler*			theErrorHandler = 0,
  +			EntityResolver*			theEntityResolver = 0);
   
   	virtual
   	~XercesDOMParsedSource();
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: xalan-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: xalan-cvs-help@xml.apache.org