diff options
Diffstat (limited to 'CIAO/DAnCE/Config_Handlers/XML_File_Intf.cpp')
-rw-r--r-- | CIAO/DAnCE/Config_Handlers/XML_File_Intf.cpp | 102 |
1 files changed, 93 insertions, 9 deletions
diff --git a/CIAO/DAnCE/Config_Handlers/XML_File_Intf.cpp b/CIAO/DAnCE/Config_Handlers/XML_File_Intf.cpp index db43e300fd3..1e16b5570a8 100644 --- a/CIAO/DAnCE/Config_Handlers/XML_File_Intf.cpp +++ b/CIAO/DAnCE/Config_Handlers/XML_File_Intf.cpp @@ -4,9 +4,11 @@ #include "XML_Typedefs.h" #include "Deployment.hpp" #include "DP_Handler.h" +#include "DD_Handler.h" #include "Common.h" #include "DAnCE/Deployment/Deployment_DataC.h" +#include "DAnCE/Deployment/Deployment_TargetDataC.h" #include "DAnCE/Logger/Log_Macros.h" namespace CIAO @@ -25,37 +27,37 @@ namespace CIAO } bool - XML_File_Intf::read_process_file (const ACE_TCHAR *file) + XML_File_Intf::read_process_plan (const ACE_TCHAR *file) { - DANCE_TRACE("XML_File_Intf::read_process_file"); + DANCE_TRACE("XML_File_Intf::read_process_plan"); try { if (!XML_Helper::XML_HELPER.is_initialized ()) return false; - DANCE_DEBUG (6, (LM_TRACE, DLINFO ACE_TEXT ("XML_File_Intf::read_process_file - ") + DANCE_DEBUG (6, (LM_TRACE, DLINFO ACE_TEXT ("XML_File_Intf::read_process_plan - ") ACE_TEXT ("Constructing DOM\n"))); XERCES_CPP_NAMESPACE::DOMDocument *dom = XML_Helper::XML_HELPER.create_dom ((file)); if (dom == 0) { - DANCE_ERROR (1, (LM_ERROR, DLINFO ACE_TEXT ("XML_File_Intf::read_process_file - ") + DANCE_ERROR (1, (LM_ERROR, DLINFO ACE_TEXT ("XML_File_Intf::read_process_plan - ") ACE_TEXT ("Failed to open file %s\n"), file)); return false; } XERCES_CPP_NAMESPACE::DOMElement *foo = dom->getDocumentElement (); - DANCE_DEBUG (6, (LM_TRACE, DLINFO ACE_TEXT ("XML_File_Intf::read_process_file - ") + DANCE_DEBUG (6, (LM_TRACE, DLINFO ACE_TEXT ("XML_File_Intf::read_process_plan - ") ACE_TEXT ("DOMElement pointer: %u\n"), foo)); - DANCE_DEBUG (6, (LM_TRACE, DLINFO ACE_TEXT ("XML_File_Intf::read_process_file - ") + DANCE_DEBUG (6, (LM_TRACE, DLINFO ACE_TEXT ("XML_File_Intf::read_process_plan - ") ACE_TEXT ("Parsing XML file with XSC\n"))); deploymentPlan dp = CIAO::Config_Handlers::reader::DeploymentPlan (dom); - DANCE_DEBUG (6, (LM_TRACE, DLINFO ACE_TEXT ("XML_File_Intf::read_process_file - ") + DANCE_DEBUG (6, (LM_TRACE, DLINFO ACE_TEXT ("XML_File_Intf::read_process_plan - ") ACE_TEXT ("Processing using config handlers\n"))); DP_Handler dp_handler (dp); @@ -87,11 +89,74 @@ namespace CIAO return false; } + bool + XML_File_Intf::read_process_domain (const ACE_TCHAR *file) + { + DANCE_TRACE("XML_File_Intf::read_process_domain"); + + try + { + if (!XML_Helper::XML_HELPER.is_initialized ()) + return false; + + DANCE_DEBUG (6, (LM_TRACE, DLINFO ACE_TEXT ("XML_File_Intf::read_process_domain - ") + ACE_TEXT ("Constructing DOM\n"))); + XERCES_CPP_NAMESPACE::DOMDocument *dom = + XML_Helper::XML_HELPER.create_dom ((file)); + + if (dom == 0) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO ACE_TEXT ("XML_File_Intf::read_process_domain - ") + ACE_TEXT ("Failed to open file %s\n"), file)); + return false; + } + + XERCES_CPP_NAMESPACE::DOMElement *foo = dom->getDocumentElement (); + DANCE_DEBUG (6, (LM_TRACE, DLINFO ACE_TEXT ("XML_File_Intf::read_process_domain - ") + ACE_TEXT ("DOMElement pointer: %u\n"), foo)); + + DANCE_DEBUG (6, (LM_TRACE, DLINFO ACE_TEXT ("XML_File_Intf::read_process_domain - ") + ACE_TEXT ("Parsing XML file with XSC\n"))); + Domain dp = + CIAO::Config_Handlers::reader::domain (dom); + + DANCE_DEBUG (6, (LM_TRACE, DLINFO ACE_TEXT ("XML_File_Intf::read_process_domain - ") + ACE_TEXT ("Processing using config handlers\n"))); + DD_Handler dp_handler (dp); + + this->idl_domain_.reset (dp_handler.domain_idl ()); + + if (this->idl_domain_.get ()) + return true; + } + catch (CORBA::Exception &ex) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO ACE_TEXT ("XML_File_Intf::caught - ") + ACE_TEXT ("CORBA Exception whilst parsing XML into IDL\n"), + ex._info ().c_str ())); + throw Config_Error (this->file_, + ex._info ().c_str ()); + } + catch (Config_Error &ex) + { + throw ex; + } + catch (...) + { + DANCE_ERROR (1, (LM_ERROR, DLINFO ACE_TEXT ("XML_File_Intf::caught - ") + ACE_TEXT ("Unexpected exception whilst parsing XML into IDL.\n"))); + throw Config_Error (this->file_, + ACE_TEXT ("Unexpected C++ exception whilst parsing XML")); + } + + return false; + } + ::Deployment::DeploymentPlan const * XML_File_Intf::get_plan (void) { DANCE_TRACE("get_plan"); - if (this->idl_dp_.get () == 0 && !this->read_process_file (this->file_.c_str ())) + if (this->idl_dp_.get () == 0 && !this->read_process_plan (this->file_.c_str ())) return 0; return this->idl_dp_.get (); @@ -101,11 +166,30 @@ namespace CIAO XML_File_Intf::release_plan (void) { DANCE_TRACE("XML_File_Intf::get_plan"); - if (this->idl_dp_.get () == 0 && !this->read_process_file (this->file_.c_str ())) + if (this->idl_dp_.get () == 0 && !this->read_process_plan (this->file_.c_str ())) return 0; return this->idl_dp_.release (); } + ::Deployment::Domain const * + XML_File_Intf::get_domain (void) + { + DANCE_TRACE("get_domain"); + if (this->idl_domain_.get () == 0 && !this->read_process_domain (this->file_.c_str ())) + return 0; + + return this->idl_domain_.get (); + } + + ::Deployment::Domain * + XML_File_Intf::release_domain (void) + { + DANCE_TRACE("XML_File_Intf::get_domain"); + if (this->idl_domain_.get () == 0 && !this->read_process_domain (this->file_.c_str ())) + return 0; + return this->idl_domain_.release (); + } + void XML_File_Intf::add_search_path (const ACE_TCHAR *environment, const ACE_TCHAR *relpath) |