diff options
author | Benoit Foucher <benoit@zeroc.com> | 2006-12-08 14:32:43 +0000 |
---|---|---|
committer | Benoit Foucher <benoit@zeroc.com> | 2006-12-08 14:32:43 +0000 |
commit | 0c918e113969fe9984a994e55c9a6d82265c2527 (patch) | |
tree | f801ea8ebe6f42288a7dbd9d0daea864f49e8866 /cpp/src/IceGrid/DescriptorBuilder.cpp | |
parent | Added server instance service property sets (diff) | |
download | ice-0c918e113969fe9984a994e55c9a6d82265c2527.tar.bz2 ice-0c918e113969fe9984a994e55c9a6d82265c2527.tar.xz ice-0c918e113969fe9984a994e55c9a6d82265c2527.zip |
Fix to allow re-opening properties elements
Diffstat (limited to 'cpp/src/IceGrid/DescriptorBuilder.cpp')
-rw-r--r-- | cpp/src/IceGrid/DescriptorBuilder.cpp | 31 |
1 files changed, 18 insertions, 13 deletions
diff --git a/cpp/src/IceGrid/DescriptorBuilder.cpp b/cpp/src/IceGrid/DescriptorBuilder.cpp index ddec59870e7..fd553c62d9e 100644 --- a/cpp/src/IceGrid/DescriptorBuilder.cpp +++ b/cpp/src/IceGrid/DescriptorBuilder.cpp @@ -449,17 +449,12 @@ ServerInstanceDescriptorBuilder::createPropertySet(const XmlAttributesHelper& at void ServerInstanceDescriptorBuilder::addPropertySet(const string& service, const PropertySetDescriptor& desc) { - if(service.empty()) - { - _descriptor.propertySet = desc; - } - else - { - if(!_descriptor.servicePropertySets.insert(make_pair(service, desc)).second) - { - throw "duplicate property set for service `" + service + "'"; - } - } + // + // Allow re-opening of unamed property sets. + // + PropertySetDescriptor& p = service.empty() ? _descriptor.propertySet : _descriptor.servicePropertySets[service]; + p.references.insert(p.references.end(), desc.references.begin(), desc.references.end()); + p.properties.insert(p.properties.end(), desc.properties.begin(), desc.properties.end()); } NodeDescriptorBuilder::NodeDescriptorBuilder(ApplicationDescriptorBuilder& app, @@ -646,7 +641,12 @@ CommunicatorDescriptorBuilder::createPropertySet() const void CommunicatorDescriptorBuilder::addPropertySet(const PropertySetDescriptor& desc) { - _descriptor->propertySet = desc; + // + // Allow re-opening of unamed property sets. + // + PropertySetDescriptor& p = _descriptor->propertySet; + p.references.insert(p.references.end(), desc.references.begin(), desc.references.end()); + p.properties.insert(p.properties.end(), desc.properties.begin(), desc.properties.end()); } void @@ -781,7 +781,12 @@ ServiceInstanceDescriptorBuilder::createPropertySet() const void ServiceInstanceDescriptorBuilder::addPropertySet(const PropertySetDescriptor& desc) { - _descriptor.propertySet = desc; + // + // Allow re-opening of unamed property sets. + // + PropertySetDescriptor& p = _descriptor.propertySet; + p.references.insert(p.references.end(), desc.references.begin(), desc.references.end()); + p.properties.insert(p.properties.end(), desc.properties.begin(), desc.properties.end()); } ServerDescriptorBuilder::ServerDescriptorBuilder(const Ice::CommunicatorPtr& communicator, |