blob: 73a568dd8ae9fb505bb2bbd534be30e687279bb3 [file] [log] [blame]
/*
* Copyright 1999-2004 The Apache Software Foundation.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#if !defined(URISUPPORT_HEADER_GUARD_1357924680)
#define URISUPPORT_HEADER_GUARD_1357924680
// Base include file. Must be first.
#include <xalanc/PlatformSupport/PlatformSupportDefinitions.hpp>
#include <xercesc/util/XMLURL.hpp>
#include <xalanc/XalanDOM/XalanDOMString.hpp>
#include <xalanc/Include/XalanAutoPtr.hpp>
#include <xalanc/PlatformSupport/XSLException.hpp>
XALAN_CPP_NAMESPACE_BEGIN
typedef XERCES_CPP_NAMESPACE_QUALIFIER XMLURL XMLURLType;
class XALAN_PLATFORMSUPPORT_EXPORT URISupport
{
public:
typedef XalanAutoPtr<XMLURLType> URLAutoPtrType;
/**
* Determine the fully qualified URI for a string.
*
* @param urlString string to qualify
* @return auto pointer to fully qualified URI
*/
static URLAutoPtrType
getURLFromString(const XalanDOMString& urlString)
{
return getURLFromString(urlString.c_str());
}
/**
* Determine the fully qualified URI for a string.
*
* @param urlString string to qualify
* @param url to update with the qualified string.
*/
static void
getURLFromString(
const XalanDOMString& urlString,
XMLURLType& url)
{
getURLFromString(urlString.c_str(), url);
}
/**
* Determine the fully qualified URI for a string.
*
* @param urlString string to qualify
* @return auto pointer to fully qualified URI
*/
static URLAutoPtrType
getURLFromString(const XalanDOMChar* urlString);
/**
* Determine the fully qualified URI for a string.
*
* @param urlString string to qualify
* @param url to update with the qualified string.
*/
static void
getURLFromString(
const XalanDOMChar* urlString,
XMLURLType& url)
{
url.setURL(getURLStringFromString(urlString).c_str());
}
/**
* Determine the fully qualified URI for a string.
*
* @param urlString string to qualify
* @param base base location for URI
* @return auto pointer to fully qualified URI
*/
static URLAutoPtrType
getURLFromString(
const XalanDOMString& urlString,
const XalanDOMString& base)
{
return getURLFromString(getURLStringFromString(urlString, base));
}
/**
* Determine the fully qualified URI for a string.
*
* @param urlString string to qualify
* @param base base location for URI
* @return auto pointer to fully qualified URI
*/
static URLAutoPtrType
getURLFromString(
const XalanDOMChar* urlString,
const XalanDOMChar* base);
/**
* Determine the fully qualified URI for a string.
*
* @param urlString string to qualify
* @return string to fully qualified URI
*/
static XalanDOMString
getURLStringFromString(const XalanDOMString& urlString)
{
XalanDOMString result;
getURLStringFromString(urlString.c_str(), urlString.length(), result);
return result;
}
/**
* Determine the fully qualified URI for a string.
*
* @param urlString string to qualify
* @return string to fully qualified URI
*/
static void
getURLStringFromString(
const XalanDOMString& urlString,
XalanDOMString& theNormalizedURI)
{
getURLStringFromString(urlString.c_str(), urlString.length(), theNormalizedURI);
}
/**
* Determine the fully qualified URI for a string.
*
* @param urlString string to qualify
* @return string to fully qualified URI
*/
static XalanDOMString
getURLStringFromString(const XalanDOMChar* urlString)
{
XalanDOMString theNormalizedURI;
getURLStringFromString(urlString, theNormalizedURI);
return theNormalizedURI;
}
/**
* Determine the fully qualified URI for a string.
*
* @param urlString string to qualify
* @param theNormalizedURI fully qualified URI
*/
static void
getURLStringFromString(
const XalanDOMChar* urlString,
XalanDOMString& theNormalizedURI)
{
assert(urlString != 0);
getURLStringFromString(
urlString,
XalanDOMString::length(urlString),
theNormalizedURI);
}
/**
* Determine the fully qualified URI for a string.
*
* @param urlString string to qualify
* @param len the length of urlString
* @param theNormalizedURI fully qualified URI
*/
static void
getURLStringFromString(
const XalanDOMChar* urlString,
XalanDOMString::size_type len,
XalanDOMString& theNormalizedURI);
/**
* Determine the fully qualified URI for a string.
*
* @param urlString string to qualify
* @param base base location for URI
* @return string to fully qualified URI
*/
static XalanDOMString
getURLStringFromString(
const XalanDOMString& urlString,
const XalanDOMString& base)
{
XalanDOMString theNormalizedURI;
getURLStringFromString(
urlString.c_str(),
urlString.length(),
base.c_str(),
base.length(),
theNormalizedURI);
return theNormalizedURI;
}
/**
* Determine the fully qualified URI for a string.
*
* @param urlString string to qualify
* @param base base location for URI
* @param theNormalizedURI fully qualified URI
*/
static void
getURLStringFromString(
const XalanDOMString& urlString,
const XalanDOMString& base,
XalanDOMString& theNormalizedURI)
{
getURLStringFromString(urlString.c_str(), base.c_str(), theNormalizedURI);
}
/**
* Determine the fully qualified URI for a string.
*
* @param urlString string to qualify
* @param base base location for URI
* @return string to fully qualified URI
*/
static XalanDOMString
getURLStringFromString(
const XalanDOMChar* urlString,
const XalanDOMChar* base)
{
XalanDOMString theNormalizedURI;
getURLStringFromString(urlString, base, theNormalizedURI);
return theNormalizedURI;
}
/**
* Determine the fully qualified URI for a string.
*
* @param urlString string to qualify
* @param base base location for URI
* @param theNormalizedURI fully qualified URI
*/
static void
getURLStringFromString(
const XalanDOMChar* urlString,
const XalanDOMChar* base,
XalanDOMString& theNormalizedURI)
{
assert(urlString != 0 && base != 0);
getURLStringFromString(
urlString,
XalanDOMString::length(urlString),
base,
XalanDOMString::length(base),
theNormalizedURI);
}
/**
* Determine the fully qualified URI for a string.
*
* @param urlString string to qualify
* @param base base location for URI
* @param theNormalizedURI fully qualified URI
*/
static void
getURLStringFromString(
const XalanDOMChar* urlString,
XalanDOMString::size_type urlStringLen,
const XalanDOMChar* base,
XalanDOMString::size_type baseLen,
XalanDOMString& theNormalizedURI);
/**
* Normalizes the string passed in, replacing
* \ with /.
*
* @param urlString string to normalize
* @return a reference to the passed parameter
*/
static XalanDOMString&
NormalizeURIText(XalanDOMString& uriString);
/**
* Normalizes the string passed in, replacing
* \ with /.
*
* @param urlString string to normalize
* @return a copy of the normalized URI
*/
static const XalanDOMString
NormalizeURIText(const XalanDOMString& uriString);
class InvalidURIException : public XSLException
{
public:
/**
* Construct an InvalidURIException.
*
* @param theMessage the error message
*/
InvalidURIException(const XalanDOMString& theMessage);
virtual
~InvalidURIException();
virtual const XalanDOMChar*
getType() const
{
return m_type;
}
private:
static const XalanDOMChar m_type[];
};
static const XalanDOMChar s_fileProtocolString1[];
static const XalanDOMChar s_fileProtocolString2[];
};
XALAN_CPP_NAMESPACE_END
#endif // URISUPPORT_HEADER_GUARD_1357924680