summaryrefslogtreecommitdiff
path: root/cpp/src/IceGrid/DescriptorBuilder.cpp
diff options
context:
space:
mode:
authorBenoit Foucher <benoit@zeroc.com>2006-12-08 14:32:43 +0000
committerBenoit Foucher <benoit@zeroc.com>2006-12-08 14:32:43 +0000
commit0c918e113969fe9984a994e55c9a6d82265c2527 (patch)
treef801ea8ebe6f42288a7dbd9d0daea864f49e8866 /cpp/src/IceGrid/DescriptorBuilder.cpp
parentAdded server instance service property sets (diff)
downloadice-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.cpp31
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,