diff options
author | Bernard Normier <bernard@zeroc.com> | 2005-09-27 14:57:58 +0000 |
---|---|---|
committer | Bernard Normier <bernard@zeroc.com> | 2005-09-27 14:57:58 +0000 |
commit | 731b70f3de99ecc9be2137a383d087a0f51c8553 (patch) | |
tree | afa4de6f5748a2609297a65a205107869fbb72ca /java/src/IceGrid/TreeNode/Templates.java | |
parent | Fixed bug 495 - assertion on server side udp shutdown (diff) | |
download | ice-731b70f3de99ecc9be2137a383d087a0f51c8553.tar.bz2 ice-731b70f3de99ecc9be2137a383d087a0f51c8553.tar.xz ice-731b70f3de99ecc9be2137a383d087a0f51c8553.zip |
Service templates editing + refactoring
Diffstat (limited to 'java/src/IceGrid/TreeNode/Templates.java')
-rwxr-xr-x | java/src/IceGrid/TreeNode/Templates.java | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/java/src/IceGrid/TreeNode/Templates.java b/java/src/IceGrid/TreeNode/Templates.java new file mode 100755 index 00000000000..a27f017ebdb --- /dev/null +++ b/java/src/IceGrid/TreeNode/Templates.java @@ -0,0 +1,76 @@ +// **********************************************************************
+//
+// Copyright (c) 2003-2005 ZeroC, Inc. All rights reserved.
+//
+// This copy of Ice is licensed to you under the terms described in the
+// ICE_LICENSE file included in this distribution.
+//
+// **********************************************************************
+package IceGrid.TreeNode;
+
+import IceGrid.Model;
+import IceGrid.TemplateDescriptor;
+
+
+abstract class Templates extends EditableParent
+{
+ abstract boolean tryAdd(String newId, TemplateDescriptor descriptor);
+
+ abstract protected java.util.List findAllTemplateInstances(String templateId);
+
+ protected Templates(String id, Model model)
+ {
+ super(false, id, model, false);
+ }
+
+ protected Templates(Templates o)
+ {
+ super(o);
+ }
+
+ boolean tryUpdate(CommonBase child)
+ {
+ java.util.List instanceList = findAllTemplateInstances(child.getId());
+
+ java.util.List parentList = new java.util.Vector();
+ java.util.List backupList = new java.util.Vector();
+ java.util.List oldInstanceList = new java.util.Vector();
+
+ java.util.List editables = new java.util.LinkedList();
+
+ java.util.Iterator p = instanceList.iterator();
+ while(p.hasNext())
+ {
+ CommonBase instance = (CommonBase)p.next();
+ InstanceParent parent = (InstanceParent)instance.getParent();
+
+ try
+ {
+ backupList.add(parent.rebuild(instance, editables));
+ }
+ catch(UpdateFailedException e)
+ {
+ for(int i = backupList.size() - 1; i >= 0; --i)
+ {
+ parent = (InstanceParent)parentList.get(i);
+ parent.restore((CommonBase)instanceList.get(i), backupList.get(i));
+ }
+ return false;
+ }
+
+ oldInstanceList.add(instance);
+ parentList.add(parent);
+ }
+
+ p = editables.iterator();
+ while(p.hasNext())
+ {
+ Editable editable = (Editable)p.next();
+ editable.markModified();
+ }
+
+ ((CommonBaseI)child).fireNodeChangedEvent(this);
+
+ return true;
+ }
+}
|