From 80926808ad32b04e68d56dc5e02d76b2344caddb Mon Sep 17 00:00:00 2001 From: bala Date: Thu, 12 Aug 2004 16:21:36 +0000 Subject: ChangeLogTag:Thu Aug 12 16:20:19 2004 Balachandran Natarajan --- TAO/CIAO/ChangeLog | 8 + .../DAnCE/tests/Config_Handlers/Handler_Test.cpp | 198 ++++++++++++++++++++- .../DAnCE/tests/Config_Handlers/Handler_Test.h | 2 - .../DAnCE/tests/Config_Handlers/Handler_Test.i | 196 -------------------- 4 files changed, 205 insertions(+), 199 deletions(-) diff --git a/TAO/CIAO/ChangeLog b/TAO/CIAO/ChangeLog index 7447140fbeb..b47257929a6 100644 --- a/TAO/CIAO/ChangeLog +++ b/TAO/CIAO/ChangeLog @@ -1,3 +1,11 @@ +Thu Aug 12 16:20:19 2004 Balachandran Natarajan + + * DAnCE/tests/Config_Handlers/Handler_Test.cpp: + * DAnCE/tests/Config_Handlers/Handler_Test.h: + * DAnCE/tests/Config_Handlers/Handler_Test.i: + + Fixed fuzz errors. + Wed Aug 11 22:37:31 2004 Balachandran Natarajan * DAnCE/NodeManager/Node_Daemon.cpp: diff --git a/TAO/CIAO/DAnCE/tests/Config_Handlers/Handler_Test.cpp b/TAO/CIAO/DAnCE/tests/Config_Handlers/Handler_Test.cpp index a00a939f113..79b523297e9 100644 --- a/TAO/CIAO/DAnCE/tests/Config_Handlers/Handler_Test.cpp +++ b/TAO/CIAO/DAnCE/tests/Config_Handlers/Handler_Test.cpp @@ -2,6 +2,203 @@ #include "Handler_Test.h" +#include "ace/Get_Opt.h" +#include "ace/Auto_Ptr.h" +#include "ace/Log_Msg.h" +#include "ace/OS_main.h" +#include "ace/Auto_Ptr.h" +#include "tao/Exception.h" +#include "Config_Handlers/XercesString.h" +#include +#include "Config_Handlers/Config_Handler_export.h" +#include "Config_Handlers/DnC_Dump.h" +#include "Config_Handlers/Config_Error_Handler.h" + +using Config_Handler::XStr; +using xercesc::XMLUni; +using xercesc::XMLString; +using xercesc::XMLException; +using xercesc::DOMException; +using xercesc::DOMBuilder; +using xercesc::DOMImplementationRegistry; +using xercesc::DOMImplementationLS; +using xercesc::DOMImplementation; +using xercesc::DOMAttr; +using xercesc::DOMNamedNodeMap; +using xercesc::DOMLocator; +using xercesc::DOMError; +using xercesc::DOMNodeList; +using xercesc::DOMDocument; +using xercesc::DOMDocumentTraversal; +using xercesc::DOMNodeIterator; +using xercesc::DOMNode; +using xercesc::DOMNodeFilter; + +void +usage (const ACE_TCHAR* program) +{ + ACE_ERROR ((LM_ERROR, + ACE_TEXT ("Usage: %s -u \n") + ACE_TEXT (" : URI identifying the resource\n"), + program)); +} + +template +int run_test (int argc, ACE_TCHAR *argv[], void (HANDLER::*func) (DATA&)) +{ + ACE_TCHAR* url = 0; + + ACE_Get_Opt get_opt (argc, argv, ACE_TEXT ("u:")); + int c; + + while ((c = get_opt ()) != EOF) + { + switch (c) + { + case 'u': + url = get_opt.opt_arg(); + break; + default: + usage(argv[0]); + return -1; + } + } + + if (url == 0) { + usage(argv[0]); + return -1; + } + + // Initialize the ORB so that CORBA::Any will work + // + CORBA::ORB_var orb = CORBA::ORB_init (argc, argv, ""); + + // Initialize the Xerces run-time + try + { + xercesc::XMLPlatformUtils::Initialize(); + } + + catch (const XMLException& e) + { + char* message = XMLString::transcode (e.getMessage()); + ACE_Auto_Basic_Array_Ptr cleanup_message (message); + ACE_DEBUG ((LM_DEBUG, "Error during initialization : %s\n", message)); + return 1; + } + + try + { + + // Instantiate the DOM parser. + static const XMLCh gLS[] = { xercesc::chLatin_L, + xercesc::chLatin_S, + xercesc::chNull }; + + // Get an implementation of the Load-Store (LS) interface + DOMImplementation* impl + = DOMImplementationRegistry::getDOMImplementation(gLS); + + auto_ptr cleanup_impl (impl); + + // Create a DOMBuilder + DOMBuilder* parser = + ((DOMImplementationLS*)impl)->createDOMBuilder(DOMImplementationLS::MODE_SYNCHRONOUS, 0); + + auto_ptr cleanup_builder (parser); + + // Discard comment nodes in the document + parser->setFeature (XMLUni::fgDOMComments, false); + + // Disable datatype normalization. The XML 1.0 attribute value + // normalization always occurs though. + parser->setFeature (XMLUni::fgDOMDatatypeNormalization, true); + + // Do not create EntityReference nodes in the DOM tree. No + // EntityReference nodes will be created, only the nodes + // corresponding to their fully expanded sustitution text will be + // created. + parser->setFeature (XMLUni::fgDOMEntities, false); + + // Perform Namespace processing. + parser->setFeature (XMLUni::fgDOMNamespaces, true); + + // Perform Validation + parser->setFeature (XMLUni::fgDOMValidation, true); + + // Do not include ignorable whitespace in the DOM tree. + parser->setFeature (XMLUni::fgDOMWhitespaceInElementContent, false); + + // Enable the parser schema support. + parser->setFeature (XMLUni::fgXercesSchema, true); + + // Enable full schema constraint checking, including checking which + // may be time-consuming or memory intensive. Currently, particle + // unique attribution constraint checking and particle derivation + // restriction checking are controlled by this option. + parser->setFeature (XMLUni::fgXercesSchemaFullChecking, true); + + // The parser will treat validation error as fatal and will exit. + parser->setFeature (XMLUni::fgXercesValidationErrorAsFatal, true); + + CIAO::Config_Handler::Config_Error_Handler handler; + parser->setErrorHandler(&handler); + + DOMDocument* doc = parser->parseURI(url); + auto_ptr cleanup_doc (doc); + + if (handler.getErrors()) + { + return 1; + } + HANDLER obj (doc, DOMNodeFilter::SHOW_ELEMENT | + DOMNodeFilter::SHOW_TEXT); + + DATA data; + (obj.*func)(data); + Deployment::DnC_Dump::dump (data); + //domain_handler.dump(domain); + + // parser->release (); + } + catch (const DOMException& e) + { + const unsigned int maxChars = 2047; + XMLCh errText[maxChars + 1]; + + ACE_ERROR ((LM_ERROR, "\nException occured while parsing %s: \n", url)); + ACE_ERROR ((LM_ERROR, "DOMException code: %d\n ", e.code)); + if (DOMImplementation::loadDOMExceptionMsg(e.code, errText, maxChars)) + { + char* message = XMLString::transcode (errText); + ACE_Auto_Basic_Array_Ptr cleanup_message (message); + ACE_ERROR ((LM_ERROR, "Message is: %s\n", message)); + } + return 1; + } + catch (const XMLException& e) + { + char* message = XMLString::transcode (e.getMessage()); + ACE_Auto_Basic_Array_Ptr cleanup_message (message); + ACE_ERROR ((LM_ERROR, "\nException occured: %s\n ", message)); + return 1; + } + catch (CORBA::Exception& ex) + { + ACE_PRINT_EXCEPTION (ex, "Caught CORBA Exception: "); + return 1; + } + catch (...) + { + ACE_ERROR ((LM_ERROR, "Caught unknown exception\n")); + return 1; + } + + xercesc::XMLPlatformUtils::Terminate(); + return 0; +} + + #ifdef ACE_HAS_BROKEN_NESTED_TEMPLATES int @@ -14,4 +211,3 @@ ACE_TMAIN (int argc, ACE_TCHAR *argv[]) } #endif // ACE_HAS_BROKEN_NESTED_TEMPLATES - diff --git a/TAO/CIAO/DAnCE/tests/Config_Handlers/Handler_Test.h b/TAO/CIAO/DAnCE/tests/Config_Handlers/Handler_Test.h index a5598e8a55c..f0acbd1fe77 100644 --- a/TAO/CIAO/DAnCE/tests/Config_Handlers/Handler_Test.h +++ b/TAO/CIAO/DAnCE/tests/Config_Handlers/Handler_Test.h @@ -42,9 +42,7 @@ using xercesc::DOMNodeFilter; template int run_test (int argc, ACE_TCHAR *argv[], void (HANDLER::*func) (DATA&)); -#include "Handler_Test.i" #endif // ACE_HAS_BROKEN_NESTED_TEMPLATES #endif // HANDLER_TEST_H - diff --git a/TAO/CIAO/DAnCE/tests/Config_Handlers/Handler_Test.i b/TAO/CIAO/DAnCE/tests/Config_Handlers/Handler_Test.i index eb6041b83d0..cfa1da318d3 100644 --- a/TAO/CIAO/DAnCE/tests/Config_Handlers/Handler_Test.i +++ b/TAO/CIAO/DAnCE/tests/Config_Handlers/Handler_Test.i @@ -1,197 +1 @@ // $Id$ - -#include "ace/Get_Opt.h" -#include "ace/Auto_Ptr.h" -#include "ace/Log_Msg.h" -#include "ace/OS_main.h" -#include "ace/Auto_Ptr.h" -#include "tao/Exception.h" -#include "Config_Handlers/XercesString.h" -#include -#include "Config_Handlers/Config_Handler_export.h" -#include "Config_Handlers/DnC_Dump.h" -#include "Config_Handlers/Config_Error_Handler.h" - -using Config_Handler::XStr; -using xercesc::XMLUni; -using xercesc::XMLString; -using xercesc::XMLException; -using xercesc::DOMException; -using xercesc::DOMBuilder; -using xercesc::DOMImplementationRegistry; -using xercesc::DOMImplementationLS; -using xercesc::DOMImplementation; -using xercesc::DOMAttr; -using xercesc::DOMNamedNodeMap; -using xercesc::DOMLocator; -using xercesc::DOMError; -using xercesc::DOMNodeList; -using xercesc::DOMDocument; -using xercesc::DOMDocumentTraversal; -using xercesc::DOMNodeIterator; -using xercesc::DOMNode; -using xercesc::DOMNodeFilter; - -inline void -usage (const ACE_TCHAR* program) -{ - ACE_ERROR ((LM_ERROR, - ACE_TEXT ("Usage: %s -u \n") - ACE_TEXT (" : URI identifying the resource\n"), - program)); -} - -template -int run_test (int argc, ACE_TCHAR *argv[], void (HANDLER::*func) (DATA&)) -{ - ACE_TCHAR* url = 0; - - ACE_Get_Opt get_opt (argc, argv, ACE_TEXT ("u:")); - int c; - - while ((c = get_opt ()) != EOF) - { - switch (c) - { - case 'u': - url = get_opt.opt_arg(); - break; - default: - usage(argv[0]); - return -1; - } - } - - if (url == 0) { - usage(argv[0]); - return -1; - } - - // Initialize the ORB so that CORBA::Any will work - // - CORBA::ORB_var orb = CORBA::ORB_init (argc, argv, ""); - - // Initialize the Xerces run-time - try - { - xercesc::XMLPlatformUtils::Initialize(); - } - - catch (const XMLException& e) - { - char* message = XMLString::transcode (e.getMessage()); - ACE_Auto_Basic_Array_Ptr cleanup_message (message); - ACE_DEBUG ((LM_DEBUG, "Error during initialization : %s\n", message)); - return 1; - } - - try - { - - // Instantiate the DOM parser. - static const XMLCh gLS[] = { xercesc::chLatin_L, - xercesc::chLatin_S, - xercesc::chNull }; - - // Get an implementation of the Load-Store (LS) interface - DOMImplementation* impl - = DOMImplementationRegistry::getDOMImplementation(gLS); - - auto_ptr cleanup_impl (impl); - - // Create a DOMBuilder - DOMBuilder* parser = - ((DOMImplementationLS*)impl)->createDOMBuilder(DOMImplementationLS::MODE_SYNCHRONOUS, 0); - - auto_ptr cleanup_builder (parser); - - // Discard comment nodes in the document - parser->setFeature (XMLUni::fgDOMComments, false); - - // Disable datatype normalization. The XML 1.0 attribute value - // normalization always occurs though. - parser->setFeature (XMLUni::fgDOMDatatypeNormalization, true); - - // Do not create EntityReference nodes in the DOM tree. No - // EntityReference nodes will be created, only the nodes - // corresponding to their fully expanded sustitution text will be - // created. - parser->setFeature (XMLUni::fgDOMEntities, false); - - // Perform Namespace processing. - parser->setFeature (XMLUni::fgDOMNamespaces, true); - - // Perform Validation - parser->setFeature (XMLUni::fgDOMValidation, true); - - // Do not include ignorable whitespace in the DOM tree. - parser->setFeature (XMLUni::fgDOMWhitespaceInElementContent, false); - - // Enable the parser schema support. - parser->setFeature (XMLUni::fgXercesSchema, true); - - // Enable full schema constraint checking, including checking which - // may be time-consuming or memory intensive. Currently, particle - // unique attribution constraint checking and particle derivation - // restriction checking are controlled by this option. - parser->setFeature (XMLUni::fgXercesSchemaFullChecking, true); - - // The parser will treat validation error as fatal and will exit. - parser->setFeature (XMLUni::fgXercesValidationErrorAsFatal, true); - - CIAO::Config_Handler::Config_Error_Handler handler; - parser->setErrorHandler(&handler); - - DOMDocument* doc = parser->parseURI(url); - auto_ptr cleanup_doc (doc); - - if (handler.getErrors()) - { - return 1; - } - HANDLER obj (doc, DOMNodeFilter::SHOW_ELEMENT | - DOMNodeFilter::SHOW_TEXT); - - DATA data; - (obj.*func)(data); - Deployment::DnC_Dump::dump (data); - //domain_handler.dump(domain); - - // parser->release (); - } - catch (const DOMException& e) - { - const unsigned int maxChars = 2047; - XMLCh errText[maxChars + 1]; - - ACE_ERROR ((LM_ERROR, "\nException occured while parsing %s: \n", url)); - ACE_ERROR ((LM_ERROR, "DOMException code: %d\n ", e.code)); - if (DOMImplementation::loadDOMExceptionMsg(e.code, errText, maxChars)) - { - char* message = XMLString::transcode (errText); - ACE_Auto_Basic_Array_Ptr cleanup_message (message); - ACE_ERROR ((LM_ERROR, "Message is: %s\n", message)); - } - return 1; - } - catch (const XMLException& e) - { - char* message = XMLString::transcode (e.getMessage()); - ACE_Auto_Basic_Array_Ptr cleanup_message (message); - ACE_ERROR ((LM_ERROR, "\nException occured: %s\n ", message)); - return 1; - } - catch (CORBA::Exception& ex) - { - ACE_PRINT_EXCEPTION (ex, "Caught CORBA Exception: "); - return 1; - } - catch (...) - { - ACE_ERROR ((LM_ERROR, "Caught unknown exception\n")); - return 1; - } - - xercesc::XMLPlatformUtils::Terminate(); - return 0; -} -- cgit v1.2.1