diff options
Diffstat (limited to 'java/src/IceGrid/TreeNode/Node.java')
-rwxr-xr-x | java/src/IceGrid/TreeNode/Node.java | 51 |
1 files changed, 48 insertions, 3 deletions
diff --git a/java/src/IceGrid/TreeNode/Node.java b/java/src/IceGrid/TreeNode/Node.java index b4f67e3fa37..e8ef087755d 100755 --- a/java/src/IceGrid/TreeNode/Node.java +++ b/java/src/IceGrid/TreeNode/Node.java @@ -552,9 +552,13 @@ class Node extends EditableParent server.setParent(this);
}
}
- //
- // Otherwise this template-instance will most likely be deleted
- //
+ else
+ {
+ //
+ // The child will be deleted through purgeChildren, and the descriptor
+ // will be deleted (later) through cascadeDeleteServerInstance
+ //
+ }
}
//
@@ -596,6 +600,47 @@ class Node extends EditableParent purgeChildren(serverIdSet);
}
+ void cascadeDeleteServerInstance(String templateId)
+ {
+ if(_descriptor == null)
+ {
+ //
+ // Nothing to do
+ //
+ return;
+ }
+
+ java.util.Iterator p = _descriptor.serverInstances.iterator();
+ while(p.hasNext())
+ {
+ ServerInstanceDescriptor instanceDescriptor =
+ (ServerInstanceDescriptor)p.next();
+
+ if(instanceDescriptor.template.equals(templateId))
+ {
+ p.remove();
+ }
+ }
+ }
+
+ void cascadeDeleteServiceInstance(String templateId)
+ {
+ if(_descriptor == null)
+ {
+ //
+ // Nothing to do
+ //
+ return;
+ }
+
+ java.util.Iterator p = _children.iterator();
+ while(p.hasNext())
+ {
+ Server server = (Server)p.next();
+ server.cascadeDeleteServiceInstance(templateId);
+ }
+ }
+
private NodeDescriptor _descriptor;
private Utils.Resolver _resolver;
|