summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormarina <marina@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>1998-06-12 19:57:34 +0000
committermarina <marina@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>1998-06-12 19:57:34 +0000
commit73a795d587c9d573d2bd84932312f78583faba28 (patch)
treeec73c1842173b5e005eb7d56b92e9923e765058f
parentc28b978887319a6d70497a66f521c13c06e010b5 (diff)
downloadATCD-73a795d587c9d573d2bd84932312f78583faba28.tar.gz
*** empty log message ***
-rw-r--r--TAO/orbsvcs/orbsvcs/Naming/CosNaming_i.cpp36
-rw-r--r--TAO/orbsvcs/orbsvcs/Naming/CosNaming_i.h3
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