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...@locus.apache.org on 2000/05/12 20:21:46 UTC

cvs commit: xml-xalan/c/src/XSLT Stylesheet.cpp StylesheetConstructionContext.hpp StylesheetConstructionContextDefault.cpp StylesheetConstructionContextDefault.hpp StylesheetHandler.cpp StylesheetRoot.cpp XSLTEngineImpl.cpp XSLTEngineImpl.hpp XSLTInputSource.cpp XSLTProcessorEnvSupportDefault.cpp

dbertoni    00/05/12 11:21:45

  Modified:    c/src/XSLT Stylesheet.cpp StylesheetConstructionContext.hpp
                        StylesheetConstructionContextDefault.cpp
                        StylesheetConstructionContextDefault.hpp
                        StylesheetHandler.cpp StylesheetRoot.cpp
                        XSLTEngineImpl.cpp XSLTEngineImpl.hpp
                        XSLTInputSource.cpp
                        XSLTProcessorEnvSupportDefault.cpp
  Log:
  Moved all URI/URL support code into PlatformSupport.
  
  Revision  Changes    Path
  1.17      +7 -3      xml-xalan/c/src/XSLT/Stylesheet.cpp
  
  Index: Stylesheet.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XSLT/Stylesheet.cpp,v
  retrieving revision 1.16
  retrieving revision 1.17
  diff -u -r1.16 -r1.17
  --- Stylesheet.cpp	2000/05/09 17:05:15	1.16
  +++ Stylesheet.cpp	2000/05/12 18:21:31	1.17
  @@ -147,11 +147,15 @@
   {
   	if (length(m_baseIdent) != 0)
   	{
  -		const XMLURL* const url = constructionContext.getURLFromString(m_baseIdent);
  +		typedef StylesheetConstructionContext::URLAutoPtrType	URLAutoPtrType;
   
  -		if (url != 0)
  +		URLAutoPtrType	url = constructionContext.getURLFromString(m_baseIdent);
  +
  +		if (url.get() != 0)
   		{
  -			m_includeStack.push_back(url);
  +			m_includeStack.push_back(url.get());
  +
  +			url.release();
   		}
   	}
   }
  
  
  
  1.6       +10 -5     xml-xalan/c/src/XSLT/StylesheetConstructionContext.hpp
  
  Index: StylesheetConstructionContext.hpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XSLT/StylesheetConstructionContext.hpp,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- StylesheetConstructionContext.hpp	2000/05/01 15:13:10	1.5
  +++ StylesheetConstructionContext.hpp	2000/05/12 18:21:32	1.6
  @@ -71,13 +71,16 @@
   
   
   
  +#include <PlatformSupport/URISupport.hpp>
  +
  +
  +
   #include <XalanDOM/XalanDOMString.hpp>
   
   
   
   class PrefixResolver;
   class StylesheetRoot;
  -class XMLURL;
   class XPath;
   class XSLTInputSource;
   
  @@ -91,6 +94,8 @@
   {
   public:
   
  +	typedef URISupport::URLAutoPtrType	URLAutoPtrType;
  +
   	explicit
   	StylesheetConstructionContext();
   
  @@ -152,9 +157,9 @@
   	 * Determine the fully qualified URI for a string.
   	 *
   	 * @param urlString string to qualify
  -	 * @return pointer to fully qualified URI
  +	 * @return auto pointer to fully qualified URI
   	 */
  -	virtual XMLURL*
  +	virtual URLAutoPtrType
   	getURLFromString(const XalanDOMString&	urlString) = 0;
   
   	/**
  @@ -162,9 +167,9 @@
   	 *
   	 * @param urlString string to qualify
   	 * @param base base location for URI
  -	 * @return pointer to fully qualified URI
  +	 * @return auto pointer to fully qualified URI
   	 */
  -	virtual XMLURL*
  +	virtual URLAutoPtrType
   	getURLFromString(
   			const XalanDOMString&	urlString,
   			const XalanDOMString&	base) = 0;
  
  
  
  1.5       +5 -4      xml-xalan/c/src/XSLT/StylesheetConstructionContextDefault.cpp
  
  Index: StylesheetConstructionContextDefault.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XSLT/StylesheetConstructionContextDefault.cpp,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- StylesheetConstructionContextDefault.cpp	2000/05/01 15:13:10	1.4
  +++ StylesheetConstructionContextDefault.cpp	2000/05/12 18:21:32	1.5
  @@ -66,6 +66,7 @@
   
   
   #include <PlatformSupport/STLHelper.hpp>
  +#include <PlatformSupport/URISupport.hpp>
   
   
   
  @@ -205,20 +206,20 @@
   
   
   
  -XMLURL*
  +StylesheetConstructionContextDefault::URLAutoPtrType
   StylesheetConstructionContextDefault::getURLFromString(const XalanDOMString&	urlString)
   {
  -	return m_processor.getURLFromString(urlString);
  +	return URISupport::getURLFromString(urlString);
   }
   
   
   
  -XMLURL*
  +StylesheetConstructionContextDefault::URLAutoPtrType
   StylesheetConstructionContextDefault::getURLFromString(
   			const XalanDOMString&	urlString,
   			const XalanDOMString&	base)
   {
  -	return m_processor.getURLFromString(urlString, base);
  +	return URISupport::getURLFromString(urlString, base);
   }
   
   
  
  
  
  1.6       +2 -2      xml-xalan/c/src/XSLT/StylesheetConstructionContextDefault.hpp
  
  Index: StylesheetConstructionContextDefault.hpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XSLT/StylesheetConstructionContextDefault.hpp,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- StylesheetConstructionContextDefault.hpp	2000/05/01 15:13:10	1.5
  +++ StylesheetConstructionContextDefault.hpp	2000/05/12 18:21:33	1.6
  @@ -140,10 +140,10 @@
   	virtual int
   	getAttrTok(const XalanDOMString&	name) const;
   
  -	virtual XMLURL*
  +	virtual URLAutoPtrType
   	getURLFromString(const XalanDOMString&	urlString);
   
  -	virtual XMLURL*
  +	virtual URLAutoPtrType
   	getURLFromString(
   			const XalanDOMString&	urlString,
   			const XalanDOMString&	base);
  
  
  
  1.25      +13 -7     xml-xalan/c/src/XSLT/StylesheetHandler.cpp
  
  Index: StylesheetHandler.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XSLT/StylesheetHandler.cpp,v
  retrieving revision 1.24
  retrieving revision 1.25
  diff -u -r1.24 -r1.25
  --- StylesheetHandler.cpp	2000/05/11 19:07:29	1.24
  +++ StylesheetHandler.cpp	2000/05/12 18:21:33	1.25
  @@ -1116,19 +1116,22 @@
   			Stylesheet::URLStackType& includeStack = m_stylesheet.getIncludeStack();
   			assert(includeStack.size() > 0);
   
  -			const XMLURL* const		hrefUrl = m_processor.getURLFromString(href, includeStack.back()->getURLText());
  -			assert(hrefUrl != 0);
  +			typedef StylesheetConstructionContext::URLAutoPtrType	URLAutoPtrType;
   
  +			URLAutoPtrType	hrefUrl = m_constructionContext.getURLFromString(href, includeStack.back()->getURLText());
  +			assert(hrefUrl.get() != 0);
  +
   			Stylesheet::URLStackType& importStack = m_stylesheet.getStylesheetRoot().getImportStack();
   
  -			if(stackContains(importStack, *hrefUrl))
  +			if(stackContains(importStack, *hrefUrl.get()))
   			{
   				XalanDOMString msg(XalanDOMString(hrefUrl->getURLText()) + " is directly or indirectly importing itself!");
   
   				throw SAXException(toCharArray(msg));
   			}
   
  -			importStack.push_back(hrefUrl);
  +			importStack.push_back(hrefUrl.get());
  +			hrefUrl.release();
   
   			const XalanDOMString	theImportURI(hrefUrl->getURLText());
   
  @@ -1187,17 +1190,20 @@
   
   			const XalanDOMString	href = atts.getValue(i);
   
  +			typedef StylesheetConstructionContext::URLAutoPtrType	URLAutoPtrType;
  +
   			assert(m_stylesheet.getIncludeStack().back() != 0);
  -			const XMLURL* const		hrefUrl = m_processor.getURLFromString(href, m_stylesheet.getIncludeStack().back()->getURLText());
  +			URLAutoPtrType	hrefUrl = m_constructionContext.getURLFromString(href, m_stylesheet.getIncludeStack().back()->getURLText());
   
  -			if(stackContains(m_stylesheet.getIncludeStack(), *hrefUrl))
  +			if(stackContains(m_stylesheet.getIncludeStack(), *hrefUrl.get()))
   			{
   				XalanDOMString msg(XalanDOMString(hrefUrl->getURLText()) + " is directly or indirectly including itself!");
   
   				throw SAXException(toCharArray(msg));
   			}
   
  -			m_stylesheet.getIncludeStack().push_back(hrefUrl);
  +			m_stylesheet.getIncludeStack().push_back(hrefUrl.get());
  +			hrefUrl.release();
   
   			m_processor.parseXML(*hrefUrl, this, &m_stylesheet);
   
  
  
  
  1.14      +4 -2      xml-xalan/c/src/XSLT/StylesheetRoot.cpp
  
  Index: StylesheetRoot.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XSLT/StylesheetRoot.cpp,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- StylesheetRoot.cpp	2000/05/11 19:08:35	1.13
  +++ StylesheetRoot.cpp	2000/05/12 18:21:33	1.14
  @@ -145,13 +145,15 @@
   
   	if (length(baseIdentifier) != 0)
   	{
  -		auto_ptr<XMLURL>	url(constructionContext.getURLFromString(m_baseIdent));
  +		typedef StylesheetConstructionContext::URLAutoPtrType	URLAutoPtrType;
   
  +		URLAutoPtrType	url(constructionContext.getURLFromString(m_baseIdent));
  +
   		if (url.get() != 0)
   		{
   			m_baseIdent = url->getURLText();
   
  -			auto_ptr<XMLURL>	url2(constructionContext.getURLFromString(m_baseIdent));
  +			URLAutoPtrType	url2(constructionContext.getURLFromString(m_baseIdent));
   
   			if (url2.get() != 0)
   			{
  
  
  
  1.36      +3 -169    xml-xalan/c/src/XSLT/XSLTEngineImpl.cpp
  
  Index: XSLTEngineImpl.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XSLT/XSLTEngineImpl.cpp,v
  retrieving revision 1.35
  retrieving revision 1.36
  diff -u -r1.35 -r1.36
  --- XSLTEngineImpl.cpp	2000/05/11 21:39:49	1.35
  +++ XSLTEngineImpl.cpp	2000/05/12 18:21:33	1.36
  @@ -517,17 +517,8 @@
   {
   	try
   	{
  -#if !defined(XALAN_NO_NAMESPACES)
  -		using std::auto_ptr;
  -#endif
  -#if 0
  -		auto_ptr<XMLURL> url(getURLFromString(xsldocURLString));
  -		assert(url.get() != 0);
  -
  -		XSLTInputSource		input(url->getURLText(), 0);
  -#else
   		XSLTInputSource		input(c_wstr(xsldocURLString));
  -#endif
  +
   		return processStylesheet(input, constructionContext);
   	}
   	catch(SAXException& se)
  @@ -878,11 +869,9 @@
   
   		StylesheetHandler stylesheetProcessor(*this, *stylesheet, constructionContext);
   
  -#if !defined(XALAN_NO_NAMESPACES)
  -		using std::auto_ptr;
  -#endif
  +		typedef StylesheetConstructionContext::URLAutoPtrType	URLAutoPtrType;
   
  -		auto_ptr<XMLURL>	xslURL(getURLFromString(localXSLURLString, xmlBaseIdent));
  +		URLAutoPtrType	xslURL(constructionContext.getURLFromString(localXSLURLString, xmlBaseIdent));
   
   		XSLTInputSource		inputSource(xslURL->getURLText());
   
  @@ -3571,161 +3560,6 @@
   
   	return theFoundElement;
   }
  -
  -
  -
  -#if !defined(WIN32)
  -inline constXalanDOMString&
  -NormalizeURI(const XalanDOMString&	uriString)
  -{
  -	return uriString;
  -}
  -#else
  -XalanDOMString
  -NormalizeURI(const XalanDOMString&	uriString)
  -{
  -	using std::vector;
  -
  -	XalanDOMString	theResult;
  -
  -	// OK, look for a quick, cheap exit...
  -	const unsigned int	len = length(uriString);
  -	const unsigned int	index = indexOf(uriString, '\\');
  -
  -	if (index == len)
  -	{
  -		// Nothing to normalize, so we're done...
  -		theResult = uriString;
  -	}
  -	else
  -	{
  -		vector<XalanDOMChar>	theBuffer(c_wstr(uriString), c_wstr(uriString) + len);
  -
  -		std::replace(theBuffer.begin(), theBuffer.end(), '\\', '/');
  -
  -		theResult = XalanDOMString(&theBuffer[0], theBuffer.size());
  -	}
  -
  -	return theResult;
  -}
  -#endif
  -
  -
  -
  -XMLURL*
  -XSLTEngineImpl::getURLFromString(const XalanDOMString&	urlString) const
  -{
  -#if !defined(XALAN_NO_NAMESPACES)
  -	using std::auto_ptr;
  -#endif
  -
  -	auto_ptr<XMLURL>	url(new XMLURL);
  -
  -	try 
  -	{
  -		XalanDOMString	theNormalizedURI;
  -
  -		// Let's see what sort of URI we have...
  -		const unsigned int	len = length(urlString);
  -		const unsigned int	index = indexOf(urlString, ':');
  -
  -#if !defined(WIN32)
  -		const bool			protocolPresent = index != len;
  -#else
  -		// This test will fail if someone uses the form v:/foo/foo.xsl,
  -		// so I hope they don't do that...
  -		const bool			protocolPresent = index != len &&
  -									!(index == 1 && charAt(urlString, index + 1) == '\\');
  -#endif
  -
  -		if (protocolPresent == true)
  -		{
  -			theNormalizedURI = NormalizeURI(urlString);
  -		}
  -		else
  -		{
  -			// Assume it's a file specification...
  -			array_auto_ptr<XMLCh>	theFullPath(XMLPlatformUtils::getFullPath(c_wstr(urlString)));
  -			assert(theFullPath.get() != 0);
  -
  -			theNormalizedURI =
  -#if defined(WIN32)
  -				XALAN_STATIC_UCODE_STRING("file:///")
  -#else
  -				XALAN_STATIC_UCODE_STRING("file://")
  -#endif
  -					+ NormalizeURI(theFullPath.get());
  -		}
  -
  -		url->setURL(c_wstr(theNormalizedURI));
  -	}
  -	catch (...)
  -	{
  -		diag("Error! Cannot create url for: " + urlString);
  -
  -		throw;
  -	}
  -
  -	return url.release();
  -}
  -
  -
  -
  -XMLURL* XSLTEngineImpl::getURLFromString(const XalanDOMString&	urlString, const XalanDOMString& base) const
  -{
  -	XalanDOMString	context(NormalizeURI(base));
  -
  -	if (isEmpty(context) == false)
  -	{
  -		const unsigned int	theLength = length(base);
  -
  -		const unsigned int	index = lastIndexOf(base,'/');
  -
  -		if (index < theLength)
  -		{
  -			context = substring(context, 0, index + 1);
  -		}
  -	}
  -
  -	// OK, now let's look at the urlString...
  -
  -	// Is there a colon, indicating some sort of drive spec, or protocol?
  -	const unsigned int	theLength = length(urlString);
  -	const unsigned int	theColonIndex = indexOf(urlString, ':');
  -
  -	if (theColonIndex == theLength)
  -	{
  -		// No colon, so just use the urlString as is...
  -		context += urlString;
  -	}
  -#if defined(WIN32)
  -	else if (theColonIndex == 1 && charAt(urlString, theColonIndex + 1) == '\\')
  -	{
  -		// Ahh, it's a drive letter, so ignore the context...
  -		// $$$ ToDo: This is not quite right. Perhaps a
  -		// protocol can be one character?
  -		context = urlString;
  -	}
  -#endif
  -	else
  -	{
  -		// Assume it's a protocol...
  -		const XalanDOMString	theProtocol(substring(urlString, 0, theColonIndex));
  -
  -		if (startsWith(context, theProtocol) == true)
  -		{
  -			// OK, everything looks good, so strip off the protocol and colon...
  -			context += substring(urlString, theColonIndex + 1, theLength);
  -		}
  -		else
  -		{
  -			// OK, not the same protocol, so what can we do???
  -			context = urlString;
  -		}
  -	}
  -
  -	return getURLFromString(context);
  -}	
   
   
   
  
  
  
  1.29      +1 -20     xml-xalan/c/src/XSLT/XSLTEngineImpl.hpp
  
  Index: XSLTEngineImpl.hpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XSLT/XSLTEngineImpl.hpp,v
  retrieving revision 1.28
  retrieving revision 1.29
  diff -u -r1.28 -r1.29
  --- XSLTEngineImpl.hpp	2000/05/01 15:13:11	1.28
  +++ XSLTEngineImpl.hpp	2000/05/12 18:21:34	1.29
  @@ -1329,26 +1329,7 @@
   			const XalanDOMString&	mimeType,
   			DispatcherFactory*		factory);
   
  -	/**
  -	 * Determine the fully qualified URI for a string.
  -	 *
  -	 * @param urlString string to qualify
  -	 * @return pointer to fully qualified URI
  -	 */
  -	XMLURL*
  -	getURLFromString(const XalanDOMString&	urlString) const;
  -
  -	/**
  -	 * Determine the fully qualified URI for a string.
  -	 *
  -	 * @param urlString string to qualify
  -	 * @param base base location for URI
  -	 * @return pointer to fully qualified URI
  -	 */
  -	XMLURL*
  -	getURLFromString(
  -			const XalanDOMString&	urlString,
  -			const XalanDOMString&	base) const;
  +public:
   
   	/**
   	 * Retrieve the XPath support object
  
  
  
  1.7       +7 -0      xml-xalan/c/src/XSLT/XSLTInputSource.cpp
  
  Index: XSLTInputSource.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XSLT/XSLTInputSource.cpp,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- XSLTInputSource.cpp	2000/05/08 17:29:36	1.6
  +++ XSLTInputSource.cpp	2000/05/12 18:21:34	1.7
  @@ -73,6 +73,7 @@
   
   #include <PlatformSupport/DOMStringHelper.hpp>
   #include <PlatformSupport/StdBinInputStream.hpp>
  +#include <PlatformSupport/URISupport.hpp>
   
   
   
  @@ -160,6 +161,11 @@
   	}
   	else if (m_node == 0)
   	{
  +#if 1
  +		URISupport::URLAutoPtrType	theURL = URISupport::getURLFromString(getSystemId());
  +
  +		theResult = theURL->makeNewStream();
  +#else
   		const XMLCh* const	theSystemID =
   			getSystemId();
   
  @@ -188,6 +194,7 @@
   				theResult = inputSource.makeStream();
   			}
   		}
  +#endif
   	}
   
   	return theResult;
  
  
  
  1.10      +6 -19     xml-xalan/c/src/XSLT/XSLTProcessorEnvSupportDefault.cpp
  
  Index: XSLTProcessorEnvSupportDefault.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XSLT/XSLTProcessorEnvSupportDefault.cpp,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- XSLTProcessorEnvSupportDefault.cpp	2000/05/11 21:15:28	1.9
  +++ XSLTProcessorEnvSupportDefault.cpp	2000/05/12 18:21:34	1.10
  @@ -70,6 +70,7 @@
   
   #include <PlatformSupport/DOMStringHelper.hpp>
   #include <PlatformSupport/STLHelper.hpp>
  +#include <PlatformSupport/URISupport.hpp>
   
   
   
  @@ -280,28 +281,14 @@
   		XMLParserLiaison&	parserLiaison =
   			m_processor->getXMLParserLiaison();
   
  +		typedef URISupport::URLAutoPtrType	URLAutoPtrType;
  +
   		// $$$ ToDo: we should re-work this code to only use
   		// XMLRUL when necessary.
  -		XMLURL	xslURL;
  -
  -		// This is a work-around for what I believe is a bug in the
  -		// Xerces URL code.  If a base identifier ends in a slash,
  -		// they chop of characters back to the _previous_ slash.
  -		// So, for instance, a base of "/foo/foo/foo/" and a
  -		// urlString of file.xml would become /foo/foo/file.xml,
  -		// instead of /foo/foo/foo/file.xml.
  -		const unsigned int	indexOfSlash = lastIndexOf(base, '/');
  -
  -		if (indexOfSlash == length(base) - 1)
  -		{
  -			xslURL.setURL(c_wstr(base + urlString));
  -		}
  -		else
  -		{
  -			xslURL.setURL(c_wstr(base), c_wstr(urlString));
  -		}
  +		URLAutoPtrType	xslURL =
  +			URISupport::getURLFromString(urlString, base);
   
  -		const XMLCh* const	urlText = xslURL.getURLText();
  +		const XMLCh* const	urlText = xslURL->getURLText();
   
   		XSLTInputSource		inputSource(urlText);