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/06/21 17:39:48 UTC

cvs commit: xml-xalan/c/src/XalanTransformer XalanTransformer.hpp XalanTransformer.cpp XalanCAPI.cpp

dbertoni    01/06/21 08:39:48

  Modified:    c/src/XalanTransformer XalanTransformer.hpp
                        XalanTransformer.cpp XalanCAPI.cpp
  Log:
  Changed interfaces to return error codes.
  
  Revision  Changes    Path
  1.25      +14 -9     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.24
  retrieving revision 1.25
  diff -u -r1.24 -r1.25
  --- XalanTransformer.hpp	2001/06/12 19:12:54	1.24
  +++ XalanTransformer.hpp	2001/06/21 15:39:44	1.25
  @@ -286,10 +286,13 @@
   	 * the instance yourself.
   	 *
   	 * @param theStylesheetSource input source
  -	 * @return a pointer to a XalanCompiledStylesheet or 0 for failure.
  +	 * @param theCompiledStylesheet a reference to a pointer to a XalanCompileStylesheet.
  +	 * @return 0 for success 
   	 */
  -	const XalanCompiledStylesheet*
  -	compileStylesheet(const XSLTInputSource&	theStylesheetSource);
  +	int
  +	compileStylesheet(
  +			const XSLTInputSource&				theStylesheetSource,
  +			const XalanCompiledStylesheet*&		theCompiledStylesheet);
   
   	/**
   	 * Destroy a XalanCompiledStylesheet instance created by a previous
  @@ -309,14 +312,16 @@
   	 * or you explicitly call destroyParsedSource().  You must not
   	 * delete the instance yourself.
   	 *
  -	 * @param theInputSource	input source
  -	 * @param useXercesDOM		input use default or xerces dom source tree
  -	 * @return	a pointer to a XalanParsedSource or 0 for failure.
  +	 * @param theInputSource input source
  +	 * @param theParsedSource a reference to a pointer to a XalanParsedSource.
  +	 * @param useXercesDOM input use default or xerces dom source tree
  +	 * @return 0 for success 
   	 */
  -	const XalanParsedSource*
  +	int
   	parseSource(
  -			const XSLTInputSource&	theInputSource, 
  -			bool					useXercesDOM = false);
  +			const XSLTInputSource&		theInputSource,
  +			const XalanParsedSource*&	theParsedSource,
  +			bool						useXercesDOM = false);
   
   	/**
   	 * Destroy a parsed source created by a previous call to parseSource().
  
  
  
  1.22      +80 -44    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.21
  retrieving revision 1.22
  diff -u -r1.21 -r1.22
  --- XalanTransformer.cpp	2001/06/12 19:12:53	1.21
  +++ XalanTransformer.cpp	2001/06/21 15:39:45	1.22
  @@ -494,18 +494,28 @@
   	const XSLTResultTarget&		theResultTarget)
   {
   	// Parse the source document.
  -	const XalanParsedSource* const	theParsedXML =
  -		parseSource(theInputSource);
  +	const XalanParsedSource*	theParsedSource = 0;
   
  -	// Make sure the parsed source is destroyed when
  -	// the transformation is finished...
  -	EnsureDestroyParsedSource	theGuard(*this, theParsedXML);
  +	const int	theResult = parseSource(theInputSource, theParsedSource);
   
  -	// Do the transformation...
  -	return transform(
  -					*theParsedXML, 
  -					theStylesheetSource,
  -					theResultTarget);
  +	if (theResult != 0)
  +	{
  +		return theResult;
  +	}
  +	else
  +	{
  +		assert(theParsedSource != 0);
  +
  +		// Make sure the parsed source is destroyed when
  +		// the transformation is finished...
  +		EnsureDestroyParsedSource	theGuard(*this, theParsedSource);
  +
  +		// Do the transformation...
  +		return transform(
  +						*theParsedSource,
  +						theStylesheetSource,
  +						theResultTarget);
  +	}
   }
   
   
  @@ -516,19 +526,28 @@
   			const XalanCompiledStylesheet*	theCompiledStylesheet,
   			const XSLTResultTarget&			theResultTarget)
   {
  -	// Parse the source document.
  -	const XalanParsedSource* const	theParsedXML =
  -		parseSource(theInputSource);
  -
  -	// Make sure the parsed source is destroyed when
  -	// the transformation is finished...
  -	EnsureDestroyParsedSource	theGuard(*this, theParsedXML);
  +	const XalanParsedSource*	theParsedSource = 0;
   
  -	// Do the transformation...
  -	return transform(
  -					*theParsedXML, 
  -					theCompiledStylesheet,
  -					theResultTarget);
  +	const int	theResult = parseSource(theInputSource, theParsedSource);
  +
  +	if (theResult != 0)
  +	{
  +		return theResult;
  +	}
  +	else
  +	{
  +		assert(theParsedSource != 0);
  +
  +		// Make sure the parsed source is destroyed when
  +		// the transformation is finished...
  +		EnsureDestroyParsedSource	theGuard(*this, theParsedSource);
  +
  +		// Do the transformation...
  +		return transform(
  +						*theParsedSource,
  +						theCompiledStylesheet,
  +						theResultTarget);
  +	}
   }
   
   
  @@ -618,8 +637,10 @@
   
   
   
  -const XalanCompiledStylesheet*
  -XalanTransformer::compileStylesheet(const XSLTInputSource&		theStylesheetSource)
  +int
  +XalanTransformer::compileStylesheet(
  +			const XSLTInputSource&				theStylesheetSource,
  +			const XalanCompiledStylesheet*&		theCompiledStylesheet)
   {
   	// Clear the error message.
   	m_errorMessage.resize(1, '\0');
  @@ -627,6 +648,8 @@
   	// Store error messages from problem listener.
   	XalanDOMString	theErrorMessage;
   
  +	int				theResult = 0;
  +
   	try
   	{
   		// Create some support objects that are necessary for running the processor...
  @@ -654,22 +677,20 @@
   
   		// Create a problem listener and send output to a XalanDOMString.
   		DOMStringPrintWriter	thePrintWriter(theErrorMessage);
  -		
  +
   		ProblemListenerDefault	theProblemListener(&thePrintWriter);
   
   		theProcessor.setProblemListener(&theProblemListener);
   
   		// Create a new XalanCompiledStylesheet.
  -		XalanCompiledStylesheet* const	theCompiledStylesheet =
  +		theCompiledStylesheet =
   			new XalanCompiledStylesheetDefault(
  -						theStylesheetSource, 
  +						theStylesheetSource,
   						theXSLTProcessorEnvSupport,
   						theProcessor);
   
   		// Store it in a vector.
   		m_compiledStylesheets.push_back(theCompiledStylesheet);
  -
  -		return theCompiledStylesheet;
   	}
   	catch (XSLException& e)
   	{
  @@ -681,6 +702,8 @@
   		{
   			TranscodeToLocalCodePage(e.getMessage(), m_errorMessage, true);
   		}
  +
  +		theResult = -1;
   	}
   	catch (SAXException& e)
   	{
  @@ -691,7 +714,9 @@
   		else
   		{
   			TranscodeToLocalCodePage(e.getMessage(), m_errorMessage, true);
  -		}		
  +		}
  +
  +		theResult = -2;
   	}
   	catch (XMLException& e)
   	{
  @@ -703,6 +728,8 @@
   		{
   			TranscodeToLocalCodePage(e.getMessage(), m_errorMessage, true);
   		}
  +
  +		theResult = -3;
   	}
   	catch(const XalanDOMException&	e)
   	{
  @@ -713,16 +740,18 @@
   		else
   		{
   			XalanDOMString theMessage("XalanDOMException caught.  The code is ");
  -			
  +
   			append(theMessage,  LongToDOMString(long(e.getExceptionCode())));
   
  -			append(theMessage,  XalanDOMString("."));						 
  +			append(theMessage,  XalanDOMString("."));
   
   			TranscodeToLocalCodePage(theMessage, m_errorMessage, true);
   		}
  +
  +		theResult = -4;
   	}
   
  -	return 0;
  +	return theResult;
   }
   
   
  @@ -750,44 +779,49 @@
   
   
   
  -const XalanParsedSource*
  +int
   XalanTransformer::parseSource(
  -			const XSLTInputSource&	theInputSource,
  -			bool					useXercesDOM)
  +			const XSLTInputSource&		theInputSource,
  +			const XalanParsedSource*&	theParsedSource,
  +			bool						useXercesDOM)
   {
   	// Clear the error message.
   	m_errorMessage.clear();
   	m_errorMessage.push_back(0);
   
  +	int	theResult = 0;
  +
   	try
   	{
  -		XalanParsedSource* theParsedDocument = 0;
  -
   		if(useXercesDOM == true)
   		{
  -			theParsedDocument = new XercesDOMParsedSource(theInputSource);
  +			theParsedSource = new XercesDOMParsedSource(theInputSource);
   		}
   		else
   		{
  -			theParsedDocument = new XalanDefaultParsedSource(theInputSource);
  +			theParsedSource = new XalanDefaultParsedSource(theInputSource);
   		}
   
   		// Store it in a vector.
  -		m_parsedSources.push_back(theParsedDocument);
  -
  -		return theParsedDocument;
  +		m_parsedSources.push_back(theParsedSource);
   	}
   	catch (XSLException& e)
   	{
   		TranscodeToLocalCodePage(e.getMessage(), m_errorMessage, true);
  +
  +		theResult = -1;
   	}
   	catch (SAXException& e)
   	{
   		TranscodeToLocalCodePage(e.getMessage(), m_errorMessage, true);
  +
  +		theResult = -2;
   	}
   	catch (XMLException& e)
   	{
   		TranscodeToLocalCodePage(e.getMessage(), m_errorMessage, true);
  +
  +		theResult = -3;
   	}
   	catch(const XalanDOMException&	e)
   	{
  @@ -798,9 +832,11 @@
   		append(theMessage,  XalanDOMString("."));						 
   
   		TranscodeToLocalCodePage(theMessage, m_errorMessage, true);
  +
  +		theResult = -3;
   	}
   
  -	return 0;
  +	return theResult;
   }
   
   
  
  
  
  1.19      +22 -3     xml-xalan/c/src/XalanTransformer/XalanCAPI.cpp
  
  Index: XalanCAPI.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XalanTransformer/XalanCAPI.cpp,v
  retrieving revision 1.18
  retrieving revision 1.19
  diff -u -r1.18 -r1.19
  --- XalanCAPI.cpp	2001/06/15 21:45:14	1.18
  +++ XalanCAPI.cpp	2001/06/21 15:39:46	1.19
  @@ -329,7 +329,13 @@
   			const char*		theXSLFileName,
   			XalanHandle		theXalanHandle)
   {
  -	return getTransformer(theXalanHandle)->compileStylesheet(theXSLFileName);
  +	const XalanCompiledStylesheet*	theCompiledStylesheet = 0;
  +
  +	getTransformer(theXalanHandle)->compileStylesheet(
  +		theXSLFileName,
  +		theCompiledStylesheet);
  +
  +	return theCompiledStylesheet;
   }
   
   
  @@ -339,7 +345,13 @@
   			const char*		theXMLFileName,
   			XalanHandle		theXalanHandle)
   {
  -	return getTransformer(theXalanHandle)->parseSource(theXMLFileName);
  +	const XalanParsedSource*	theParsedSource = 0;
  +
  +	getTransformer(theXalanHandle)->parseSource(
  +		theXMLFileName,
  +		theParsedSource);
  +
  +	return theParsedSource;
   }
   
   
  @@ -349,7 +361,14 @@
   			const char*		theXMLFileName,
   			XalanHandle		theXalanHandle)
   {
  -	return getTransformer(theXalanHandle)->parseSource(theXMLFileName, true);
  +	const XalanParsedSource*	theParsedSource = 0;
  +
  +	getTransformer(theXalanHandle)->parseSource(
  +		theXMLFileName,
  +		theParsedSource,
  +		true);
  +
  +	return theParsedSource;
   }
   
   
  
  
  

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