summaryrefslogtreecommitdiff
path: root/java/src/IceGrid/TreeNode/ServiceTemplate.java
diff options
context:
space:
mode:
authorBernard Normier <bernard@zeroc.com>2005-09-27 14:57:58 +0000
committerBernard Normier <bernard@zeroc.com>2005-09-27 14:57:58 +0000
commit731b70f3de99ecc9be2137a383d087a0f51c8553 (patch)
treeafa4de6f5748a2609297a65a205107869fbb72ca /java/src/IceGrid/TreeNode/ServiceTemplate.java
parentFixed bug 495 - assertion on server side udp shutdown (diff)
downloadice-731b70f3de99ecc9be2137a383d087a0f51c8553.tar.bz2
ice-731b70f3de99ecc9be2137a383d087a0f51c8553.tar.xz
ice-731b70f3de99ecc9be2137a383d087a0f51c8553.zip
Service templates editing + refactoring
Diffstat (limited to 'java/src/IceGrid/TreeNode/ServiceTemplate.java')
-rwxr-xr-xjava/src/IceGrid/TreeNode/ServiceTemplate.java133
1 files changed, 120 insertions, 13 deletions
diff --git a/java/src/IceGrid/TreeNode/ServiceTemplate.java b/java/src/IceGrid/TreeNode/ServiceTemplate.java
index 0f555515362..f1b9e0ed419 100755
--- a/java/src/IceGrid/TreeNode/ServiceTemplate.java
+++ b/java/src/IceGrid/TreeNode/ServiceTemplate.java
@@ -10,6 +10,7 @@ package IceGrid.TreeNode;
import com.jgoodies.uif_lite.panel.SimpleInternalFrame;
+import IceGrid.ServiceDescriptor;
import IceGrid.TemplateDescriptor;
import IceGrid.Model;
@@ -33,15 +34,32 @@ class ServiceTemplate extends EditableParent
ServiceTemplate(boolean brandNew, String name,
TemplateDescriptor descriptor, Model model)
- throws DuplicateIdException
+ throws UpdateFailedException
{
super(brandNew, name, model);
+ _ephemeral = false;
rebuild(descriptor);
}
+ ServiceTemplate(String name, TemplateDescriptor descriptor, Model model)
+ {
+ super(true, name, model);
+ _ephemeral = true;
+ try
+ {
+ rebuild(descriptor);
+ }
+ catch(UpdateFailedException e)
+ {
+ assert false;
+ }
+ }
+
ServiceTemplate(ServiceTemplate o)
{
super(o, true);
+ assert o._ephemeral == false;
+
_templateDescriptor = o._templateDescriptor;
_adapters = o._adapters;
_dbEnvs = o._dbEnvs;
@@ -50,26 +68,32 @@ class ServiceTemplate extends EditableParent
void rebuild(TemplateDescriptor descriptor)
- throws DuplicateIdException
+ throws UpdateFailedException
{
_templateDescriptor = descriptor;
_propertiesHolder = new PropertiesHolder(_templateDescriptor.descriptor);
- clearChildren();
//
// Fix-up parameters order
//
java.util.Collections.sort(_templateDescriptor.parameters);
- _adapters = new Adapters(_templateDescriptor.descriptor.adapters, true,
- false, null, null, _model);
- addChild(_adapters);
- _adapters.setParent(this);
-
- _dbEnvs = new DbEnvs(_templateDescriptor.descriptor.dbEnvs, true,
- null, _model);
- addChild(_dbEnvs);
- _dbEnvs.setParent(this);
+ clearChildren();
+ if(_ephemeral)
+ {
+ _adapters = null;
+ _dbEnvs = null;
+ }
+ else
+ {
+ _adapters = new Adapters(_templateDescriptor.descriptor.adapters, true,
+ false, null, _model);
+ addChild(_adapters);
+
+ _dbEnvs = new DbEnvs(_templateDescriptor.descriptor.dbEnvs, true,
+ null, _model);
+ addChild(_dbEnvs);
+ }
}
public PropertiesHolder getPropertiesHolder()
@@ -79,7 +103,14 @@ class ServiceTemplate extends EditableParent
public String toString()
{
- return templateLabel(_id, _templateDescriptor.parameters);
+ if(_ephemeral)
+ {
+ return "*" + _id;
+ }
+ else
+ {
+ return templateLabel(_id, _templateDescriptor.parameters);
+ }
}
public Object getDescriptor()
@@ -87,11 +118,87 @@ class ServiceTemplate extends EditableParent
return _templateDescriptor;
}
+ public boolean isEphemeral()
+ {
+ return _ephemeral;
+ }
+
+ public boolean destroy()
+ {
+ if(_parent != null && _model.canUpdate())
+ {
+ ServiceTemplates serviceTemplates = (ServiceTemplates)_parent;
+
+ if(_ephemeral)
+ {
+ serviceTemplates.removeChild(this, true);
+ }
+ else
+ {
+ serviceTemplates.removeDescriptor(_id);
+ getApplication().removeServiceInstances(_id);
+ serviceTemplates.removeElement(this, true);
+ }
+ return true;
+ }
+ else
+ {
+ return false;
+ }
+ }
+
+ public java.util.List findAllInstances(CommonBase child)
+ {
+ java.util.List result = super.findAllInstances(child);
+
+ java.util.List serviceInstances =
+ getApplication().findServiceInstances(_id);
+
+ java.util.Iterator p = serviceInstances.iterator();
+ while(p.hasNext())
+ {
+ Service service = (Service)p.next();
+ result.addAll(service.findChildrenWithType(child.getClass()));
+ }
+
+ return result;
+ }
+
+
+ public Object saveDescriptor()
+ {
+ //
+ // Shallow copy
+ //
+ TemplateDescriptor clone = (TemplateDescriptor)_templateDescriptor.clone();
+ clone.descriptor = (ServiceDescriptor)_templateDescriptor.descriptor.clone();
+ return clone;
+ }
+
+ public void restoreDescriptor(Object savedDescriptor)
+ {
+ TemplateDescriptor clone = (TemplateDescriptor)savedDescriptor;
+ //
+ // Keep the same object
+ //
+ _templateDescriptor.parameters = clone.parameters;
+
+ ServiceDescriptor sd = (ServiceDescriptor)_templateDescriptor.descriptor;
+ ServiceDescriptor csd = (ServiceDescriptor)clone.descriptor;
+
+ sd.properties = csd.properties;
+ sd.description = csd.description;
+ sd.name = csd.name;
+ sd.entry = csd.entry;
+ }
+
private TemplateDescriptor _templateDescriptor;
private Adapters _adapters;
private DbEnvs _dbEnvs;
private PropertiesHolder _propertiesHolder;
+ private boolean _ephemeral;
+
static private ServiceTemplateEditor _editor;
}