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);
                }
        }
   
  
  
  

Reply via email to