summaryrefslogtreecommitdiff
path: root/java/src/IceGrid/TreeNode/ServiceInstances.java
diff options
context:
space:
mode:
Diffstat (limited to 'java/src/IceGrid/TreeNode/ServiceInstances.java')
-rwxr-xr-xjava/src/IceGrid/TreeNode/ServiceInstances.java114
1 files changed, 110 insertions, 4 deletions
diff --git a/java/src/IceGrid/TreeNode/ServiceInstances.java b/java/src/IceGrid/TreeNode/ServiceInstances.java
index 40c2934442d..0d6ebbddaea 100755
--- a/java/src/IceGrid/TreeNode/ServiceInstances.java
+++ b/java/src/IceGrid/TreeNode/ServiceInstances.java
@@ -8,14 +8,33 @@
// **********************************************************************
package IceGrid.TreeNode;
-import IceGrid.ServiceInstanceDescriptor;
import IceGrid.Model;
+import IceGrid.ServiceDescriptor;
+import IceGrid.ServiceInstanceDescriptor;
+import IceGrid.TemplateDescriptor;
+import IceGrid.Utils;
class ServiceInstances extends Parent
{
- ServiceInstances(java.util.List descriptors, Model model, Node node)
+ //
+ // In server template
+ //
+ ServiceInstances(java.util.List descriptors, Application application)
+ {
+ this(descriptors, true, application, null, null, null);
+ }
+
+ //
+ // In server instance
+ //
+ ServiceInstances(java.util.List descriptors,
+ boolean editable,
+ Application application,
+ java.util.Map nodeVariables,
+ java.util.Map parameters,
+ Node node)
{
- super("Service instances", model);
+ super("Service instances", application.getModel());
_descriptors = descriptors;
java.util.Iterator p = _descriptors.iterator();
@@ -23,7 +42,94 @@ class ServiceInstances extends Parent
{
ServiceInstanceDescriptor descriptor =
(ServiceInstanceDescriptor)p.next();
- addChild(new ServiceInstance(descriptor, _model, node));
+
+ ServiceDescriptor serviceDescriptor = null;
+ String serviceId = null;
+ String displayString = null;
+ java.util.Map substitutedParameters = null;
+
+ if(descriptor.template.length() > 0)
+ {
+ TemplateDescriptor templateDescriptor
+ = application.findServiceTemplateDescriptor(descriptor.template);
+
+ if(templateDescriptor != null)
+ {
+ serviceDescriptor = (ServiceDescriptor)templateDescriptor.descriptor;
+ }
+
+ if(node != null) // in server instance
+ {
+ //
+ // Substitute parameter values with variables + parameters,
+ // then use variables + these substituted parameter
+ // values on the serviceDescriptor
+ //
+
+ substitutedParameters =
+ Utils.substituteVariables(descriptor.parameterValues,
+ parameters,
+ nodeVariables,
+ application.getVariables());
+
+ if(serviceDescriptor != null)
+ {
+ serviceId = Utils.substituteVariables(serviceDescriptor.name,
+ substitutedParameters,
+ nodeVariables,
+ application.getVariables());
+
+ displayString = serviceId + ": " + templateLabel(descriptor.template,
+ substitutedParameters.values());
+ }
+ else
+ {
+ serviceId = "????: " + templateLabel(descriptor.template,
+ substitutedParameters.values());
+ }
+ }
+ else
+ {
+ //
+ // serviceId = TemplateName<unsubstituted param 1, ....>
+ //
+ serviceId = templateLabel(descriptor.template,
+ descriptor.parameterValues.values());
+ }
+ }
+ else
+ {
+ serviceDescriptor = descriptor.descriptor; // can't be null
+
+ if(node != null) // in server instance
+ {
+ //
+ // Use variables and parameters on this serviceDescriptor
+ //
+
+ serviceId = Utils.substituteVariables(serviceDescriptor.name,
+ parameters,
+ nodeVariables,
+ application.getVariables());
+
+ }
+ else
+ {
+ serviceId = serviceDescriptor.name;
+ }
+ }
+
+ addChild(new ServiceInstance(serviceId,
+ displayString,
+ descriptor,
+ serviceDescriptor,
+ editable,
+ parameters,
+ substitutedParameters,
+ nodeVariables,
+ application.getVariables(),
+ _model,
+ node));
}
}