diff options
Diffstat (limited to 'TAO/orbsvcs/orbsvcs/PortableGroup/PG_PropertyManager.cpp')
-rw-r--r-- | TAO/orbsvcs/orbsvcs/PortableGroup/PG_PropertyManager.cpp | 76 |
1 files changed, 32 insertions, 44 deletions
diff --git a/TAO/orbsvcs/orbsvcs/PortableGroup/PG_PropertyManager.cpp b/TAO/orbsvcs/orbsvcs/PortableGroup/PG_PropertyManager.cpp index 942490421c6..ff191f50869 100644 --- a/TAO/orbsvcs/orbsvcs/PortableGroup/PG_PropertyManager.cpp +++ b/TAO/orbsvcs/orbsvcs/PortableGroup/PG_PropertyManager.cpp @@ -16,32 +16,12 @@ TAO_PG_PropertyManager::TAO_PG_PropertyManager ( default_properties_ (), type_properties_ (), lock_ (), - property_validator_ (0) + property_validator_ () { } void -TAO_PG_PropertyManager::init ( - TAO_PG_Default_Property_Validator * property_validator ) -{ - if (property_validator) - { - property_validator_ = property_validator; - } - else - { - ACE_NEW_THROW_EX ( - property_validator_, - TAO_PG_Default_Property_Validator, - CORBA::NO_MEMORY () - ); - ACE_CHECK; - } -} - - -void TAO_PG_PropertyManager::set_default_properties ( const PortableGroup::Properties & props ACE_ENV_ARG_DECL) @@ -66,7 +46,7 @@ TAO_PG_PropertyManager::set_default_properties ( property.val)); } - this->property_validator_->validate_property (props + this->property_validator_.validate_property (props ACE_ENV_ARG_PARAMETER); ACE_CHECK; @@ -126,7 +106,7 @@ TAO_PG_PropertyManager::set_type_properties ( PortableGroup::InvalidProperty, PortableGroup::UnsupportedProperty)) { - this->property_validator_->validate_property (overrides + this->property_validator_.validate_property (overrides ACE_ENV_ARG_PARAMETER); ACE_CHECK; @@ -138,16 +118,11 @@ TAO_PG_PropertyManager::set_type_properties ( ACE_GUARD (TAO_SYNCH_MUTEX, guard, this->lock_); Type_Prop_Table::ENTRY * entry; - if (this->type_properties_.find (type_id, entry) == 0) - { - PortableGroup::Properties & props = entry->int_id_; - props = overrides; - } - else - { - if (this->type_properties_.bind (type_id, overrides) != 0) - ACE_THROW (CORBA::UNKNOWN ()); - } + if (this->type_properties_.find (type_id, entry) != 0) + ACE_THROW (CORBA::BAD_PARAM ()); + + PortableGroup::Properties & props = entry->int_id_; + props = overrides; } @@ -228,28 +203,41 @@ TAO_PG_PropertyManager::remove_type_properties ( void TAO_PG_PropertyManager::set_properties_dynamically ( - PortableGroup::ObjectGroup_ptr object_group, - const PortableGroup::Properties & overrides + PortableGroup::ObjectGroup_ptr /* object_group */, + const PortableGroup::Properties & /* overrides */ ACE_ENV_ARG_DECL) ACE_THROW_SPEC ((CORBA::SystemException, PortableGroup::ObjectGroupNotFound, PortableGroup::InvalidProperty, PortableGroup::UnsupportedProperty)) { +#if 0 + // First verify that the "InitialNumberMembers" property is not in + // the Properties sequence. According to the spec, it is not + // allowed to be set as part of the default properties. + PortableGroup::Name factories; + factories.length (1); + factories[0].id = + CORBA::string_dup ("org.omg.PortableGroup.InitialNumberMembers"); - this->property_validator_->validate_property (overrides + CORBA::ULong len = props.length (); + for (CORBA::ULong i = 0; i < len; ++i) + { + PortableGroup::Property property = props[i]; + + if (property.nam == factories) + ACE_THROW (PortableGroup::InvalidProperty (property.nam, + property.val)); + } + + this->property_validator_.validate_property (overrides ACE_ENV_ARG_PARAMETER); ACE_CHECK; - ACE_GUARD (TAO_SYNCH_MUTEX, property_map_guard, this->lock_); - - PortableGroup::Properties * dynamic_properties = - this->object_group_manager_.get_dynamic_properties (object_group - ACE_ENV_ARG_PARAMETER); - ACE_CHECK_RETURN (0); + // @todo Set the properties in the object group map entry. +#endif /* 0 */ - // Now override the dynamic (object group) properties with the new values - TAO_PG::override_properties (overrides, *dynamic_properties); + ACE_THROW (CORBA::NO_IMPLEMENT ()); } |