summaryrefslogtreecommitdiff
path: root/java/src/IceGrid/TreeNode/Node.java
diff options
context:
space:
mode:
Diffstat (limited to 'java/src/IceGrid/TreeNode/Node.java')
-rwxr-xr-xjava/src/IceGrid/TreeNode/Node.java51
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;