summaryrefslogtreecommitdiff
path: root/TAO/orbsvcs/orbsvcs/IFRService/ComponentContainer_i.cpp
diff options
context:
space:
mode:
authorparsons <parsons@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2003-08-05 22:35:04 +0000
committerparsons <parsons@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2003-08-05 22:35:04 +0000
commite3dd3e7196f55f271c301b9f84c2bb18d16f496b (patch)
treed2b475c6fbee21c720424e3366170330ee77df6a /TAO/orbsvcs/orbsvcs/IFRService/ComponentContainer_i.cpp
parent857d62bb71d3fdd5b6223996a8d5dbd09e39394d (diff)
downloadATCD-e3dd3e7196f55f271c301b9f84c2bb18d16f496b.tar.gz
ChangeLogTag: Tue Aug 5 17:31:17 2003 Jeff Parsons <j.parsons@vanderbilt.edu>
Diffstat (limited to 'TAO/orbsvcs/orbsvcs/IFRService/ComponentContainer_i.cpp')
-rw-r--r--TAO/orbsvcs/orbsvcs/IFRService/ComponentContainer_i.cpp30
1 files changed, 28 insertions, 2 deletions
diff --git a/TAO/orbsvcs/orbsvcs/IFRService/ComponentContainer_i.cpp b/TAO/orbsvcs/orbsvcs/IFRService/ComponentContainer_i.cpp
index 6491665a684..835135a0c88 100644
--- a/TAO/orbsvcs/orbsvcs/IFRService/ComponentContainer_i.cpp
+++ b/TAO/orbsvcs/orbsvcs/IFRService/ComponentContainer_i.cpp
@@ -5,6 +5,7 @@
#include "Repository_i.h"
#include "InterfaceDef_i.h"
#include "ComponentDef_i.h"
+#include "ValueDef_i.h"
#include "IFR_Service_Utils.h"
ACE_RCSID (IFRService,
@@ -361,11 +362,33 @@ TAO_ComponentContainer_i::create_event_i (
if (!CORBA::is_nil (base_value))
{
- char *base_value_path =
+ const char *base_path =
TAO_IFR_Service_Utils::reference_to_path (base_value);
+
+ // Get the servant's key into the temporary key holder, because
+ // the name clash checker for base valuetypes is static, and has
+ // no other way to know about a specific key.
+ this->repo_->config ()->expand_path (
+ this->repo_->root_key (),
+ base_path,
+ TAO_IFR_Service_Utils::tmp_key_,
+ 0
+ );
+ TAO_IFR_Service_Utils::name_exists (&TAO_ValueDef_i::name_clash,
+ new_key,
+ this->repo_,
+ CORBA::dk_Value
+ ACE_ENV_ARG_PARAMETER);
+ ACE_CHECK_RETURN (path);
+
+ ACE_TString base_value_id;
+ this->repo_->config ()->get_string_value (TAO_IFR_Service_Utils::tmp_key_,
+ "id",
+ base_value_id);
+
this->repo_->config ()->set_string_value (new_key,
"base_value",
- base_value_path);
+ base_value_id);
}
CORBA::ULong length = abstract_base_values.length ();
@@ -404,6 +427,9 @@ TAO_ComponentContainer_i::create_event_i (
1,
supported_key);
+ this->repo_->config ()->set_integer_value (supported_key,
+ "count",
+ length);
char *supported_path = 0;
for (i = 0; i < length; ++i)