summaryrefslogtreecommitdiff
path: root/cpp/src/IceGrid/DescriptorHelper.cpp
diff options
context:
space:
mode:
authorBenoit Foucher <benoit@zeroc.com>2005-06-21 12:40:26 +0000
committerBenoit Foucher <benoit@zeroc.com>2005-06-21 12:40:26 +0000
commit91b10476449de133a15743272be8c5fab8010c7f (patch)
tree5c721ee19d9d3a8aa228cc9466412a1edd978446 /cpp/src/IceGrid/DescriptorHelper.cpp
parentFix (diff)
downloadice-91b10476449de133a15743272be8c5fab8010c7f.tar.bz2
ice-91b10476449de133a15743272be8c5fab8010c7f.tar.xz
ice-91b10476449de133a15743272be8c5fab8010c7f.zip
Fixes
Diffstat (limited to 'cpp/src/IceGrid/DescriptorHelper.cpp')
-rw-r--r--cpp/src/IceGrid/DescriptorHelper.cpp23
1 files changed, 18 insertions, 5 deletions
diff --git a/cpp/src/IceGrid/DescriptorHelper.cpp b/cpp/src/IceGrid/DescriptorHelper.cpp
index 14525b4fcd2..d9ba7fd861e 100644
--- a/cpp/src/IceGrid/DescriptorHelper.cpp
+++ b/cpp/src/IceGrid/DescriptorHelper.cpp
@@ -757,14 +757,27 @@ ServerInstanceDescriptor
ApplicationDescriptorHelper::instantiate(const ServerInstanceDescriptor& inst)
{
ServerInstanceDescriptor instance = inst;
+ pushNodeVariables(inst.node);
if(instance._cpp_template.empty())
{
- assert(instance.descriptor);
- return instance;
+ //
+ // We can't re-instantiate here -- this would break escaped variables.
+ //
+// assert(instance.descriptor);
+// set<string> missing;
+// instance.descriptor = ServerDescriptorHelper(*this, instance.descriptor).instantiate(missing);
+// if(!missing.empty())
+// {
+// ostringstream os;
+// os << "server undefined variables: ";
+// copy(missing.begin(), missing.end(), ostream_iterator<string>(os, " "));
+// throw os.str();
+// }
+ }
+ else
+ {
+ instance.descriptor = _templates->instantiateServer(*this, instance._cpp_template, instance.parameterValues);
}
-
- pushNodeVariables(inst.node);
- instance.descriptor = _templates->instantiateServer(*this, instance._cpp_template, instance.parameterValues);
_variables->pop();
return instance;
}