diff options
author | marina <marina@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 1998-06-12 19:57:34 +0000 |
---|---|---|
committer | marina <marina@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 1998-06-12 19:57:34 +0000 |
commit | 73a795d587c9d573d2bd84932312f78583faba28 (patch) | |
tree | ec73c1842173b5e005eb7d56b92e9923e765058f | |
parent | c28b978887319a6d70497a66f521c13c06e010b5 (diff) | |
download | ATCD-73a795d587c9d573d2bd84932312f78583faba28.tar.gz |
*** empty log message ***
-rw-r--r-- | TAO/orbsvcs/orbsvcs/Naming/CosNaming_i.cpp | 36 | ||||
-rw-r--r-- | TAO/orbsvcs/orbsvcs/Naming/CosNaming_i.h | 3 |
2 files changed, 29 insertions, 10 deletions
diff --git a/TAO/orbsvcs/orbsvcs/Naming/CosNaming_i.cpp b/TAO/orbsvcs/orbsvcs/Naming/CosNaming_i.cpp index efcbab1609b..c4ac5920127 100644 --- a/TAO/orbsvcs/orbsvcs/Naming/CosNaming_i.cpp +++ b/TAO/orbsvcs/orbsvcs/Naming/CosNaming_i.cpp @@ -41,10 +41,10 @@ NS_NamingContext::~NS_NamingContext (void) } CosNaming::NamingContext_ptr -NS_NamingContext::get_context (const CosNaming::Name &name) +NS_NamingContext::get_context (const CosNaming::Name &name, + CORBA::Environment &_env) { // Create compound name to be resolved (<name> - last component). - CORBA::Environment _env; CORBA::ULong len = name.length (); CosNaming::Name comp_name (name); comp_name.length (len - 1); @@ -57,7 +57,7 @@ NS_NamingContext::get_context (const CosNaming::Name &name) if (_env.exception () != 0) { _env.print_exception ("NS_NamingContext::get_context"); - return 0; + return CosNaming::NamingContext::_nil (); } // Reference to a context from <resolve> cannot be nil because @@ -69,7 +69,7 @@ NS_NamingContext::get_context (const CosNaming::Name &name) if (_env.exception () != 0) { _env.print_exception ("NS_NamingContext::get_context - _narrow"); - return 0; + return CosNaming::NamingContext::_nil (); } CosNaming::Name rest; @@ -83,6 +83,9 @@ NS_NamingContext::get_context (const CosNaming::Name &name) rest.length (2); rest[0] = name[len - 2]; rest[1] = name[len - 1]; + _env.clear (); + _env.exception (new CosNaming::NamingContext::NotFound (CosNaming::NamingContext::not_context, rest)); + return CosNaming::NamingContext::_nil (); } return c; } @@ -116,7 +119,10 @@ NS_NamingContext::bind (const CosNaming::Name& n, // target context. if (len > 1) { - CosNaming::NamingContext_var cont = get_context (n); + CosNaming::NamingContext_var cont = get_context (n, _env); + if (_env.exception () != 0) + return; + CosNaming::Name simple_name; simple_name.length (1); simple_name[0] = n[len - 1]; @@ -181,7 +187,10 @@ NS_NamingContext::rebind (const CosNaming::Name& n, // on target context. if (len > 1) { - CosNaming::NamingContext_var cont = get_context (n); + CosNaming::NamingContext_var cont = get_context (n, _env); + if (_env.exception () != 0) + return; + CosNaming::Name simple_name; simple_name.length (1); simple_name[0] = n[len - 1]; @@ -240,7 +249,10 @@ NS_NamingContext::bind_context (const CosNaming::Name &n, // target context. if (len > 1) { - CosNaming::NamingContext_var cont = get_context (n); + CosNaming::NamingContext_var cont = get_context (n, _env); + if (_env.exception () != 0) + return; + CosNaming::Name simple_name; simple_name.length (1); simple_name[0] = n[len - 1]; @@ -300,7 +312,10 @@ NS_NamingContext::rebind_context (const CosNaming::Name &n, // on target context. if (len > 1) { - CosNaming::NamingContext_var cont = get_context (n); + CosNaming::NamingContext_var cont = get_context (n, _env); + if (_env.exception () != 0) + return; + CosNaming::Name simple_name; simple_name.length (1); simple_name[0] = n[len - 1]; @@ -429,7 +444,10 @@ NS_NamingContext::unbind (const CosNaming::Name& n, // on target context. if (len > 1) { - CosNaming::NamingContext_var cont = get_context (n); + CosNaming::NamingContext_var cont = get_context (n, _env); + if (_env.exception () != 0) + return; + CosNaming::Name simple_name; simple_name.length (1); simple_name[0] = n[len - 1]; diff --git a/TAO/orbsvcs/orbsvcs/Naming/CosNaming_i.h b/TAO/orbsvcs/orbsvcs/Naming/CosNaming_i.h index 700a819d923..b8dbd08c0ce 100644 --- a/TAO/orbsvcs/orbsvcs/Naming/CosNaming_i.h +++ b/TAO/orbsvcs/orbsvcs/Naming/CosNaming_i.h @@ -125,7 +125,8 @@ public: protected: // = These are the helper methods used by other methods. - CosNaming::NamingContext_ptr get_context (const CosNaming::Name &name); + CosNaming::NamingContext_ptr get_context (const CosNaming::Name &name, + CORBA::Environment &_env); // This is used by methods that need to resolve a compound name to // get the reference to the target context before performing the // actual operation (e.g. bind, unbind, etc.) Takes a full name |