dbertoni 00/05/26 12:20:43
Modified: c/src/XPath SimpleNodeLocator.cpp XPath.hpp
XPathEnvSupportDefault.cpp XPathFunctionTable.cpp
XPathFunctionTable.hpp
Log:
Make sure trying to run a undefined external function raises an error.
Revision Changes Path
1.12 +2 -2 xml-xalan/c/src/XPath/SimpleNodeLocator.cpp
Index: SimpleNodeLocator.cpp
===================================================================
RCS file: /home/cvs/xml-xalan/c/src/XPath/SimpleNodeLocator.cpp,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -r1.11 -r1.12
--- SimpleNodeLocator.cpp 2000/05/15 15:54:30 1.11
+++ SimpleNodeLocator.cpp 2000/05/26 19:20:39 1.12
@@ -1401,7 +1401,7 @@
const int testType = currentExpression.getOpCodeMapValue(opPos);
- const int nodeType = context->getNodeType();
+ const XalanNode::NodeType nodeType = context->getNodeType();
opPos++;
@@ -1697,7 +1697,7 @@
}
// Erase from the back to the front, to preserve the validity
- // of the indesing, and so that we don't end up moving entries
+ // of the indexing, and so that we don't end up moving entries
// that we would already be erasing...
FailedEntriesVectorType::reverse_iterator theIterator =
theFailedEntries.rbegin();
1.8 +2 -3 xml-xalan/c/src/XPath/XPath.hpp
Index: XPath.hpp
===================================================================
RCS file: /home/cvs/xml-xalan/c/src/XPath/XPath.hpp,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- XPath.hpp 2000/05/24 19:36:04 1.7
+++ XPath.hpp 2000/05/26 19:20:40 1.8
@@ -84,6 +84,7 @@
+#include <XPath/XPathException.hpp>
#include <XPath/MutableNodeRefList.hpp>
#include <XPath/XPathExpression.hpp>
#include <XPath/Function.hpp>
@@ -152,8 +153,6 @@
virtual void
shrink();
-public:
-
/**
* Execute the XPath from the provided context.
*
@@ -365,7 +364,7 @@
static void
installFunction(
const XalanDOMString& funcName,
- const Function& func);
+ const Function& func);
/**
* Whether the named function is installed in the function table.
1.12 +11 -1 xml-xalan/c/src/XPath/XPathEnvSupportDefault.cpp
Index: XPathEnvSupportDefault.cpp
===================================================================
RCS file: /home/cvs/xml-xalan/c/src/XPath/XPathEnvSupportDefault.cpp,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -r1.11 -r1.12
--- XPathEnvSupportDefault.cpp 2000/05/24 19:36:04 1.11
+++ XPathEnvSupportDefault.cpp 2000/05/26 19:20:41 1.12
@@ -440,7 +440,17 @@
if (theResult == 0)
{
- theResult = executionContext.getXObjectFactory().createNull();
+ XalanDOMString theFunctionName;
+
+ if(length(theNamespace) > 0)
+ {
+ theFunctionName += theNamespace;
+ theFunctionName += XALAN_STATIC_UCODE_STRING(":");
+ }
+
+ theFunctionName += functionName;
+
+ throw XPathExceptionFunctionNotAvailable(theFunctionName);
}
return theResult;
1.6 +6 -27 xml-xalan/c/src/XPath/XPathFunctionTable.cpp
Index: XPathFunctionTable.cpp
===================================================================
RCS file: /home/cvs/xml-xalan/c/src/XPath/XPathFunctionTable.cpp,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- XPathFunctionTable.cpp 2000/04/20 16:32:14 1.5
+++ XPathFunctionTable.cpp 2000/05/26 19:20:41 1.6
@@ -251,37 +251,16 @@
-XPathFunctionTableException::XPathFunctionTableException(const
XalanDOMString& theMessage) :
- XPathException(theMessage)
+XPathExceptionFunctionNotAvailable::XPathExceptionFunctionNotAvailable(
+ const XalanDOMString& theFunctionName,
+ const XalanNode* styleNode) :
+ XPathException(XALAN_STATIC_UCODE_STRING("The specified function is not
available: ") + theFunctionName,
+ styleNode)
{
}
-XPathFunctionTableException::~XPathFunctionTableException()
+XPathExceptionFunctionNotAvailable::~XPathExceptionFunctionNotAvailable()
{
-}
-
-
-
-XPathFunctionTableInvalidFunctionException::XPathFunctionTableInvalidFunctionException(const
XalanDOMString& theFunctionName) :
- XPathFunctionTableException(FormatMessage(theFunctionName))
-{
-}
-
-
-
-XPathFunctionTableInvalidFunctionException::~XPathFunctionTableInvalidFunctionException()
-{
-}
-
-
-
-XalanDOMString
-XPathFunctionTableInvalidFunctionException::FormatMessage(const
XalanDOMString& theFunctionName)
-{
- const char* theMessage =
- "Invalid function name detected: ";
-
- return XalanDOMString(theMessage) + theFunctionName;
}
1.5 +7 -38 xml-xalan/c/src/XPath/XPathFunctionTable.hpp
Index: XPathFunctionTable.hpp
===================================================================
RCS file: /home/cvs/xml-xalan/c/src/XPath/XPathFunctionTable.hpp,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- XPathFunctionTable.hpp 2000/05/11 19:05:43 1.4
+++ XPathFunctionTable.hpp 2000/05/26 19:20:41 1.5
@@ -83,48 +83,17 @@
/**
- * Exception class thrown when a function table problem is encountered
+ * Exception class thrown when an unknown function is encountered
*/
-class XALAN_XPATH_EXPORT XPathFunctionTableException : public XPathException
+class XALAN_XPATH_EXPORT XPathExceptionFunctionNotAvailable : public
XPathException
{
public:
- virtual
- ~XPathFunctionTableException();
+ XPathExceptionFunctionNotAvailable(
+ const XalanDOMString& theFunctionName,
+ const XalanNode* styleNode = 0);
-protected:
-
- /**
- * Construct an XPathFunctionTableException object
- *
- * @param theMessage string error message
- */
- XPathFunctionTableException(const XalanDOMString& theMessage);
-};
-
-
-
-/**
- * Exception class thrown when an invalid function is encountered
- */
-class XALAN_XPATH_EXPORT XPathFunctionTableInvalidFunctionException : public
XPathFunctionTableException
-{
-public:
-
- /**
- * Construct an XPathFunctionTableException object
- *
- * @param theMessage function name string
- */
- XPathFunctionTableInvalidFunctionException(const XalanDOMString&
theFunctionName);
-
- virtual
- ~XPathFunctionTableInvalidFunctionException();
-
-private:
-
- static XalanDOMString
- FormatMessage(const XalanDOMString& theFunctionName);
+ ~XPathExceptionFunctionNotAvailable();
};
@@ -166,7 +135,7 @@
}
else
{
- throw
XPathFunctionTableInvalidFunctionException(theFunctionName);
+ throw
XPathExceptionFunctionNotAvailable(theFunctionName);
}
}