diff options
Diffstat (limited to 'java/src/IceGridGUI/Application/Node.java')
-rwxr-xr-x | java/src/IceGridGUI/Application/Node.java | 2064 |
1 files changed, 1032 insertions, 1032 deletions
diff --git a/java/src/IceGridGUI/Application/Node.java b/java/src/IceGridGUI/Application/Node.java index 6d82d32731a..1260456a360 100755 --- a/java/src/IceGridGUI/Application/Node.java +++ b/java/src/IceGridGUI/Application/Node.java @@ -30,437 +30,437 @@ class Node extends TreeNode implements PropertySetParent static public NodeDescriptor copyDescriptor(NodeDescriptor nd) { - NodeDescriptor copy = (NodeDescriptor)nd.clone(); - - copy.propertySets = PropertySets.copyDescriptors(copy.propertySets); - - - copy.serverInstances = new java.util.LinkedList(); - java.util.Iterator p = nd.serverInstances.iterator(); - while(p.hasNext()) - { - copy.serverInstances.add(ServerInstance.copyDescriptor( - (ServerInstanceDescriptor)p.next())); - } + NodeDescriptor copy = (NodeDescriptor)nd.clone(); + + copy.propertySets = PropertySets.copyDescriptors(copy.propertySets); + + + copy.serverInstances = new java.util.LinkedList(); + java.util.Iterator p = nd.serverInstances.iterator(); + while(p.hasNext()) + { + copy.serverInstances.add(ServerInstance.copyDescriptor( + (ServerInstanceDescriptor)p.next())); + } - copy.servers = new java.util.LinkedList(); - p = nd.servers.iterator(); - while(p.hasNext()) - { - copy.servers.add(PlainServer.copyDescriptor( - (ServerDescriptor)p.next())); - } - - return copy; + copy.servers = new java.util.LinkedList(); + p = nd.servers.iterator(); + while(p.hasNext()) + { + copy.servers.add(PlainServer.copyDescriptor( + (ServerDescriptor)p.next())); + } + + return copy; } public Enumeration children() { - return new Enumeration() - { - public boolean hasMoreElements() - { - if(!_p.hasNext()) - { - if(!_iteratingOverServers) - { - _p = _servers.iterator(); - _iteratingOverServers = true; - return _p.hasNext(); - } - return false; - } - return true; - } - - public Object nextElement() - { - return _p.next(); - } - - private java.util.Iterator _p = _propertySets.iterator(); - private boolean _iteratingOverServers = false; - }; + return new Enumeration() + { + public boolean hasMoreElements() + { + if(!_p.hasNext()) + { + if(!_iteratingOverServers) + { + _p = _servers.iterator(); + _iteratingOverServers = true; + return _p.hasNext(); + } + return false; + } + return true; + } + + public Object nextElement() + { + return _p.next(); + } + + private java.util.Iterator _p = _propertySets.iterator(); + private boolean _iteratingOverServers = false; + }; } public boolean getAllowsChildren() { - return true; + return true; } public javax.swing.tree.TreeNode getChildAt(int childIndex) { - if(childIndex < 0) - { - throw new ArrayIndexOutOfBoundsException(childIndex); - } - else if(childIndex < _propertySets.size()) - { - return (javax.swing.tree.TreeNode)_propertySets.get(childIndex); - } - else if(childIndex < (_propertySets.size() + _servers.size())) - { - return (javax.swing.tree.TreeNode)_servers.get( - childIndex - _propertySets.size()); - } - else - { - throw new ArrayIndexOutOfBoundsException(childIndex); - } + if(childIndex < 0) + { + throw new ArrayIndexOutOfBoundsException(childIndex); + } + else if(childIndex < _propertySets.size()) + { + return (javax.swing.tree.TreeNode)_propertySets.get(childIndex); + } + else if(childIndex < (_propertySets.size() + _servers.size())) + { + return (javax.swing.tree.TreeNode)_servers.get( + childIndex - _propertySets.size()); + } + else + { + throw new ArrayIndexOutOfBoundsException(childIndex); + } } public int getChildCount() { - return _propertySets.size() + _servers.size(); + return _propertySets.size() + _servers.size(); } public int getIndex(javax.swing.tree.TreeNode node) { - if(node instanceof PropertySet) - { - return _propertySets.indexOf(node); - } - else - { - int index = _servers.indexOf(node); - if(index != -1) - { - index += _propertySets.size(); - } - return index; - } + if(node instanceof PropertySet) + { + return _propertySets.indexOf(node); + } + else + { + int index = _servers.indexOf(node); + if(index != -1) + { + index += _propertySets.size(); + } + return index; + } } public boolean isLeaf() { - return _propertySets.isEmpty() && _servers.isEmpty(); + return _propertySets.isEmpty() && _servers.isEmpty(); } void removeServers(String[] childIds) { - removeSortedChildren(childIds, _servers, getRoot().getTreeModel()); + removeSortedChildren(childIds, _servers, getRoot().getTreeModel()); } void removePropertySets(String[] childIds) { - removeSortedChildren(childIds, _propertySets, getRoot().getTreeModel()); + removeSortedChildren(childIds, _propertySets, getRoot().getTreeModel()); } void childrenChanged(java.util.List children) { - childrenChanged(children, getRoot().getTreeModel()); + childrenChanged(children, getRoot().getTreeModel()); } Server findServer(String id) { - return (Server)find(id, _servers); + return (Server)find(id, _servers); } PropertySet findPropertySet(String id) { - return (PropertySet)find(id, _propertySets); + return (PropertySet)find(id, _propertySets); } void insertPropertySets(java.util.List newChildren, boolean fireEvent) - throws UpdateFailedException + throws UpdateFailedException { - DefaultTreeModel treeModel = fireEvent ? - getRoot().getTreeModel() : null; - - String badChildId = insertSortedChildren(newChildren, _propertySets, treeModel); - - if(badChildId != null) - { - throw new UpdateFailedException(this, badChildId); - } + DefaultTreeModel treeModel = fireEvent ? + getRoot().getTreeModel() : null; + + String badChildId = insertSortedChildren(newChildren, _propertySets, treeModel); + + if(badChildId != null) + { + throw new UpdateFailedException(this, badChildId); + } } void insertServer(TreeNode child, boolean fireEvent) - throws UpdateFailedException + throws UpdateFailedException { - DefaultTreeModel treeModel = fireEvent ? - getRoot().getTreeModel() : null; - - if(!insertSortedChild(child, _servers, treeModel)) - { - throw new UpdateFailedException(this, child.getId()); - } + DefaultTreeModel treeModel = fireEvent ? + getRoot().getTreeModel() : null; + + if(!insertSortedChild(child, _servers, treeModel)) + { + throw new UpdateFailedException(this, child.getId()); + } } void insertServers(java.util.List newChildren, boolean fireEvent) - throws UpdateFailedException + throws UpdateFailedException { - DefaultTreeModel treeModel = fireEvent ? - getRoot().getTreeModel() : null; - - String badChildId = insertSortedChildren(newChildren, _servers, treeModel); - - if(badChildId != null) - { - throw new UpdateFailedException(this, badChildId); - } + DefaultTreeModel treeModel = fireEvent ? + getRoot().getTreeModel() : null; + + String badChildId = insertSortedChildren(newChildren, _servers, treeModel); + + if(badChildId != null) + { + throw new UpdateFailedException(this, badChildId); + } } void removeServer(TreeNode child) { - int index = getIndex(child); - _servers.remove(child); - - getRoot().getTreeModel().nodesWereRemoved(this, - new int[]{index}, - new Object[]{child}); + int index = getIndex(child); + _servers.remove(child); + + getRoot().getTreeModel().nodesWereRemoved(this, + new int[]{index}, + new Object[]{child}); } public void insertPropertySet(PropertySet child, boolean fireEvent) - throws UpdateFailedException + throws UpdateFailedException { - DefaultTreeModel treeModel = fireEvent ? - getRoot().getTreeModel() : null; - - if(!insertSortedChild(child, _propertySets, treeModel)) - { - throw new UpdateFailedException(this, child.getId()); - } + DefaultTreeModel treeModel = fireEvent ? + getRoot().getTreeModel() : null; + + if(!insertSortedChild(child, _propertySets, treeModel)) + { + throw new UpdateFailedException(this, child.getId()); + } } public void removePropertySet(PropertySet child) { - int index = getIndex(child); - _propertySets.remove(child); - - getRoot().getTreeModel().nodesWereRemoved(this, - new int[]{index}, - new Object[]{child}); + int index = getIndex(child); + _propertySets.remove(child); + + getRoot().getTreeModel().nodesWereRemoved(this, + new int[]{index}, + new Object[]{child}); } public void removeDescriptor(String id) { - _descriptor.propertySets.remove(id); + _descriptor.propertySets.remove(id); } public Editable getEditable() { - return _editable; + return _editable; } public boolean[] getAvailableActions() { - boolean[] actions = new boolean[ACTION_COUNT]; - - actions[COPY] = !_ephemeral; - actions[DELETE] = true; - - Object descriptor = getCoordinator().getClipboard(); - if(descriptor != null) - { - actions[PASTE] = descriptor instanceof NodeDescriptor || - descriptor instanceof ServerInstanceDescriptor || - descriptor instanceof ServerDescriptor || - descriptor instanceof PropertySetDescriptor; - } - - if(!_ephemeral) - { - actions[SHOW_VARS] = true; - actions[SUBSTITUTE_VARS] = true; - actions[NEW_PROPERTY_SET] = true; - actions[NEW_SERVER] = true; - actions[NEW_SERVER_ICEBOX] = true; - actions[NEW_SERVER_FROM_TEMPLATE] = true; - } - return actions; + boolean[] actions = new boolean[ACTION_COUNT]; + + actions[COPY] = !_ephemeral; + actions[DELETE] = true; + + Object descriptor = getCoordinator().getClipboard(); + if(descriptor != null) + { + actions[PASTE] = descriptor instanceof NodeDescriptor || + descriptor instanceof ServerInstanceDescriptor || + descriptor instanceof ServerDescriptor || + descriptor instanceof PropertySetDescriptor; + } + + if(!_ephemeral) + { + actions[SHOW_VARS] = true; + actions[SUBSTITUTE_VARS] = true; + actions[NEW_PROPERTY_SET] = true; + actions[NEW_SERVER] = true; + actions[NEW_SERVER_ICEBOX] = true; + actions[NEW_SERVER_FROM_TEMPLATE] = true; + } + return actions; } public JPopupMenu getPopupMenu() { - ApplicationActions actions = getCoordinator().getActionsForPopup(); - if(_popup == null) - { - _popup = new JPopupMenu(); - _popup.add(actions.get(NEW_PROPERTY_SET)); - _popup.addSeparator(); - _popup.add(actions.get(NEW_SERVER)); - _popup.add(actions.get(NEW_SERVER_ICEBOX)); - _popup.add(actions.get(NEW_SERVER_FROM_TEMPLATE)); - } - actions.setTarget(this); - return _popup; + ApplicationActions actions = getCoordinator().getActionsForPopup(); + if(_popup == null) + { + _popup = new JPopupMenu(); + _popup.add(actions.get(NEW_PROPERTY_SET)); + _popup.addSeparator(); + _popup.add(actions.get(NEW_SERVER)); + _popup.add(actions.get(NEW_SERVER_ICEBOX)); + _popup.add(actions.get(NEW_SERVER_FROM_TEMPLATE)); + } + actions.setTarget(this); + return _popup; } public void copy() { - getCoordinator().setClipboard(copyDescriptor(_descriptor)); - getCoordinator().getActionsForMenu().get(PASTE).setEnabled(true); + getCoordinator().setClipboard(copyDescriptor(_descriptor)); + getCoordinator().getActionsForMenu().get(PASTE).setEnabled(true); } public void paste() { - Object descriptor = getCoordinator().getClipboard(); - if(descriptor instanceof NodeDescriptor) - { - ((TreeNode)_parent).paste(); - } - else if(descriptor instanceof PropertySetDescriptor) - { - newPropertySet(PropertySet.copyDescriptor((PropertySetDescriptor)descriptor)); - } - else if(descriptor instanceof ServerInstanceDescriptor) - { - newServer(ServerInstance.copyDescriptor((ServerInstanceDescriptor)descriptor)); - } - else - { - newServer(PlainServer.copyDescriptor(((ServerDescriptor)descriptor))); - } + Object descriptor = getCoordinator().getClipboard(); + if(descriptor instanceof NodeDescriptor) + { + ((TreeNode)_parent).paste(); + } + else if(descriptor instanceof PropertySetDescriptor) + { + newPropertySet(PropertySet.copyDescriptor((PropertySetDescriptor)descriptor)); + } + else if(descriptor instanceof ServerInstanceDescriptor) + { + newServer(ServerInstance.copyDescriptor((ServerInstanceDescriptor)descriptor)); + } + else + { + newServer(PlainServer.copyDescriptor(((ServerDescriptor)descriptor))); + } } public void newPropertySet() { - newPropertySet(new PropertySetDescriptor( - new String[0], new java.util.LinkedList())); + newPropertySet(new PropertySetDescriptor( + new String[0], new java.util.LinkedList())); } public void newServer() { - newServer(PlainServer.newServerDescriptor()); + newServer(PlainServer.newServerDescriptor()); } public void newServerIceBox() { - newServer(PlainServer.newIceBoxDescriptor()); + newServer(PlainServer.newIceBoxDescriptor()); } public void newServerFromTemplate() { - ServerInstanceDescriptor descriptor = - new ServerInstanceDescriptor("", - new java.util.HashMap(), - new PropertySetDescriptor(new String[0], new java.util.LinkedList()), - new java.util.HashMap()); + ServerInstanceDescriptor descriptor = + new ServerInstanceDescriptor("", + new java.util.HashMap(), + new PropertySetDescriptor(new String[0], new java.util.LinkedList()), + new java.util.HashMap()); - newServer(descriptor); + newServer(descriptor); } public void destroy() { - Nodes nodes = (Nodes)_parent; - if(_ephemeral) - { - nodes.removeChild(this); - } - else - { - nodes.removeChild(this); - nodes.removeDescriptor(_id); - nodes.getEditable().removeElement(_id, _editable, Node.class); - getRoot().updated(); - } + Nodes nodes = (Nodes)_parent; + if(_ephemeral) + { + nodes.removeChild(this); + } + else + { + nodes.removeChild(this); + nodes.removeDescriptor(_id); + nodes.getEditable().removeElement(_id, _editable, Node.class); + getRoot().updated(); + } } public Component getTreeCellRendererComponent( - JTree tree, - Object value, - boolean sel, - boolean expanded, - boolean leaf, - int row, - boolean hasFocus) + JTree tree, + Object value, + boolean sel, + boolean expanded, + boolean leaf, + int row, + boolean hasFocus) { - if(_cellRenderer == null) - { - // - // Initialization - // - _cellRenderer = new DefaultTreeCellRenderer(); - Icon nodeIcon = Utils.getIcon("/icons/16x16/node.png"); - _cellRenderer.setOpenIcon(nodeIcon); - _cellRenderer.setClosedIcon(nodeIcon); - } - - return _cellRenderer.getTreeCellRendererComponent( - tree, value, sel, expanded, leaf, row, hasFocus); + if(_cellRenderer == null) + { + // + // Initialization + // + _cellRenderer = new DefaultTreeCellRenderer(); + Icon nodeIcon = Utils.getIcon("/icons/16x16/node.png"); + _cellRenderer.setOpenIcon(nodeIcon); + _cellRenderer.setClosedIcon(nodeIcon); + } + + return _cellRenderer.getTreeCellRendererComponent( + tree, value, sel, expanded, leaf, row, hasFocus); } public Editor getEditor() { - if(_editor == null) - { - _editor = (NodeEditor)getRoot().getEditor(NodeEditor.class, this); - } - _editor.show(this); - return _editor; + if(_editor == null) + { + _editor = (NodeEditor)getRoot().getEditor(NodeEditor.class, this); + } + _editor.show(this); + return _editor; } protected Editor createEditor() { - return new NodeEditor(); + return new NodeEditor(); } public boolean isEphemeral() { - return _ephemeral; + return _ephemeral; } Object getDescriptor() { - return _descriptor; + return _descriptor; } NodeDescriptor saveDescriptor() { - return (NodeDescriptor)_descriptor.clone(); + return (NodeDescriptor)_descriptor.clone(); } void restoreDescriptor(NodeDescriptor copy) { - _descriptor.description = copy.description; - _descriptor.loadFactor = copy.loadFactor; - _descriptor.variables = copy.variables; + _descriptor.description = copy.description; + _descriptor.loadFactor = copy.loadFactor; + _descriptor.variables = copy.variables; } void write(XMLWriter writer) throws java.io.IOException { - if(!_ephemeral) - { - java.util.List attributes = new java.util.LinkedList(); - attributes.add(createAttribute("name", _id)); - if(_descriptor.loadFactor.length() > 0) - { - attributes.add(createAttribute("load-factor", - _descriptor.loadFactor)); - } - - writer.writeStartTag("node", attributes); - - if(_descriptor.description.length() > 0) - { - writer.writeElement("description", _descriptor.description); - } - writeVariables(writer, _descriptor.variables); - - - java.util.Iterator p = _propertySets.iterator(); - while(p.hasNext()) - { - PropertySet ps = (PropertySet)p.next(); - ps.write(writer); - } - - p = _servers.iterator(); - while(p.hasNext()) - { - TreeNode server = (TreeNode)p.next(); - server.write(writer); - } - writer.writeEndTag("node"); - } + if(!_ephemeral) + { + java.util.List attributes = new java.util.LinkedList(); + attributes.add(createAttribute("name", _id)); + if(_descriptor.loadFactor.length() > 0) + { + attributes.add(createAttribute("load-factor", + _descriptor.loadFactor)); + } + + writer.writeStartTag("node", attributes); + + if(_descriptor.description.length() > 0) + { + writer.writeElement("description", _descriptor.description); + } + writeVariables(writer, _descriptor.variables); + + + java.util.Iterator p = _propertySets.iterator(); + while(p.hasNext()) + { + PropertySet ps = (PropertySet)p.next(); + ps.write(writer); + } + + p = _servers.iterator(); + while(p.hasNext()) + { + TreeNode server = (TreeNode)p.next(); + server.write(writer); + } + writer.writeEndTag("node"); + } } static class Backup { - Utils.Resolver resolver; - java.util.List backupList; - java.util.List servers; + Utils.Resolver resolver; + java.util.List backupList; + java.util.List servers; } // @@ -471,854 +471,854 @@ class Node extends TreeNode implements PropertySetParent // Backup rebuild(java.util.List editables) - throws UpdateFailedException + throws UpdateFailedException { - Root root = getRoot(); - Backup backup = new Backup(); - backup.resolver = _resolver; - - _resolver = new Utils.Resolver(new java.util.Map[] - {_descriptor.variables, root.getVariables()}); - - _resolver.put("application", root.getId()); - _resolver.put("node", _id); - - backup.backupList = new java.util.Vector(); - backup.servers = (java.util.LinkedList)_servers.clone(); - - java.util.Iterator p = backup.servers.iterator(); - while(p.hasNext()) - { - Server server = (Server)p.next(); - try - { - backup.backupList.add(server.rebuild(editables)); - } - catch(UpdateFailedException e) - { - restore(backup); - throw e; - } - } - return backup; + Root root = getRoot(); + Backup backup = new Backup(); + backup.resolver = _resolver; + + _resolver = new Utils.Resolver(new java.util.Map[] + {_descriptor.variables, root.getVariables()}); + + _resolver.put("application", root.getId()); + _resolver.put("node", _id); + + backup.backupList = new java.util.Vector(); + backup.servers = (java.util.LinkedList)_servers.clone(); + + java.util.Iterator p = backup.servers.iterator(); + while(p.hasNext()) + { + Server server = (Server)p.next(); + try + { + backup.backupList.add(server.rebuild(editables)); + } + catch(UpdateFailedException e) + { + restore(backup); + throw e; + } + } + return backup; } void commit() { - _editable.commit(); - _origVariables = _descriptor.variables; - _origDescription = _descriptor.description; - _origLoadFactor = _descriptor.loadFactor; - - java.util.Iterator p = _propertySets.iterator(); - while(p.hasNext()) - { - PropertySet ps = (PropertySet)p.next(); - ps.commit(); - } - - p = _servers.iterator(); - while(p.hasNext()) - { - Server server = (Server)p.next(); - server.getEditable().commit(); - } + _editable.commit(); + _origVariables = _descriptor.variables; + _origDescription = _descriptor.description; + _origLoadFactor = _descriptor.loadFactor; + + java.util.Iterator p = _propertySets.iterator(); + while(p.hasNext()) + { + PropertySet ps = (PropertySet)p.next(); + ps.commit(); + } + + p = _servers.iterator(); + while(p.hasNext()) + { + Server server = (Server)p.next(); + server.getEditable().commit(); + } } void restore(Backup backup) - { - for(int i = backup.backupList.size() - 1; i >= 0; --i) - { - ((Server)backup.servers.get(i)).restore(backup.backupList.get(i)); - } - _resolver = backup.resolver; + { + for(int i = backup.backupList.size() - 1; i >= 0; --i) + { + ((Server)backup.servers.get(i)).restore(backup.backupList.get(i)); + } + _resolver = backup.resolver; } ServerInstance createServer(boolean brandNew, - ServerInstanceDescriptor instanceDescriptor) - throws UpdateFailedException + ServerInstanceDescriptor instanceDescriptor) + throws UpdateFailedException { - Root root = getRoot(); - - // - // Find template - // - TemplateDescriptor templateDescriptor = - root.findServerTemplateDescriptor(instanceDescriptor.template); - - assert templateDescriptor != null; - - ServerDescriptor serverDescriptor = - (ServerDescriptor)templateDescriptor.descriptor; - - assert serverDescriptor != null; - boolean isIceBox = serverDescriptor instanceof IceBoxDescriptor; - - // - // Build resolver - // - Utils.Resolver instanceResolver = - new Utils.Resolver(_resolver, - instanceDescriptor.parameterValues, - templateDescriptor.parameterDefaults); - - String serverId = instanceResolver.substitute(serverDescriptor.id); - instanceResolver.put("server", serverId); - - // - // Create server - // - return new ServerInstance(brandNew, this, serverId, - instanceResolver, instanceDescriptor, isIceBox); + Root root = getRoot(); + + // + // Find template + // + TemplateDescriptor templateDescriptor = + root.findServerTemplateDescriptor(instanceDescriptor.template); + + assert templateDescriptor != null; + + ServerDescriptor serverDescriptor = + (ServerDescriptor)templateDescriptor.descriptor; + + assert serverDescriptor != null; + boolean isIceBox = serverDescriptor instanceof IceBoxDescriptor; + + // + // Build resolver + // + Utils.Resolver instanceResolver = + new Utils.Resolver(_resolver, + instanceDescriptor.parameterValues, + templateDescriptor.parameterDefaults); + + String serverId = instanceResolver.substitute(serverDescriptor.id); + instanceResolver.put("server", serverId); + + // + // Create server + // + return new ServerInstance(brandNew, this, serverId, + instanceResolver, instanceDescriptor, isIceBox); } PlainServer createServer(boolean brandNew, ServerDescriptor serverDescriptor) - throws UpdateFailedException + throws UpdateFailedException { - // - // Build resolver - // - Utils.Resolver instanceResolver = new Utils.Resolver(_resolver); - String serverId = instanceResolver.substitute(serverDescriptor.id); - instanceResolver.put("server", serverId); - - // - // Create server - // - return new PlainServer(brandNew, this, serverId, - instanceResolver, serverDescriptor); + // + // Build resolver + // + Utils.Resolver instanceResolver = new Utils.Resolver(_resolver); + String serverId = instanceResolver.substitute(serverDescriptor.id); + instanceResolver.put("server", serverId); + + // + // Create server + // + return new PlainServer(brandNew, this, serverId, + instanceResolver, serverDescriptor); } NodeUpdateDescriptor getUpdate() { - NodeUpdateDescriptor update = new NodeUpdateDescriptor(); - update.name = _id; - - // - // First: property sets - // - if(_editable.isNew()) - { - update.removePropertySets = new String[0]; - update.propertySets = _descriptor.propertySets; - } - else - { - update.removePropertySets = _editable.removedElements(PropertySet.class); - update.propertySets = new java.util.HashMap(); - - java.util.Iterator p = _propertySets.iterator(); - while(p.hasNext()) - { - PropertySet ps = (PropertySet)p.next(); - if(ps.getEditable().isNew() || ps.getEditable().isModified()) - { - update.propertySets.put(ps.getId(), ps.getDescriptor()); - } - } - } - - // - // Then: servers - // - if(_editable.isNew()) - { - update.removeServers = new String[0]; - } - else - { - update.removeServers = _editable.removedElements(Server.class); - } - - update.serverInstances = new java.util.LinkedList(); - update.servers = new java.util.LinkedList(); - - java.util.Iterator p = _servers.iterator(); - while(p.hasNext()) - { - Server server = (Server)p.next(); - if(_editable.isNew() || server.getEditable().isModified() - || server.getEditable().isNew()) - { - if(server instanceof PlainServer) - { - update.servers.add(server.getDescriptor()); - } - else - { - update.serverInstances.add(server.getDescriptor()); - } - } - } - - // - // Anything in this update? - // - if(!_editable.isNew() && !_editable.isModified() - && update.removePropertySets.length == 0 - && update.propertySets.size() == 0 - && update.removeServers.length == 0 - && update.servers.size() == 0 - && update.serverInstances.size() == 0) - { - return null; - } - - if(_editable.isNew()) - { - update.variables = _descriptor.variables; - update.removeVariables = new String[0]; - update.loadFactor = new IceGrid.BoxedString(_descriptor.loadFactor); - } - else - { - if(!_descriptor.description.equals(_origDescription)) - { - update.description = new IceGrid.BoxedString(_descriptor.description); - } - - if(!_descriptor.loadFactor.equals(_origLoadFactor)) - { - update.loadFactor = new IceGrid.BoxedString(_descriptor.loadFactor); - } - - // - // Diff variables (TODO: avoid duplication with same code in Root) - // - update.variables = new java.util.TreeMap(_descriptor.variables); - java.util.List removeVariables = new java.util.LinkedList(); - - p = _origVariables.entrySet().iterator(); - while(p.hasNext()) - { - java.util.Map.Entry entry = (java.util.Map.Entry)p.next(); - Object key = entry.getKey(); - Object newValue = update.variables.get(key); - if(newValue == null) - { - removeVariables.add(key); - } - else - { - Object value = entry.getValue(); - if(newValue.equals(value)) - { - update.variables.remove(key); - } - } - } - update.removeVariables = (String[])removeVariables.toArray(new String[0]); - } - - return update; + NodeUpdateDescriptor update = new NodeUpdateDescriptor(); + update.name = _id; + + // + // First: property sets + // + if(_editable.isNew()) + { + update.removePropertySets = new String[0]; + update.propertySets = _descriptor.propertySets; + } + else + { + update.removePropertySets = _editable.removedElements(PropertySet.class); + update.propertySets = new java.util.HashMap(); + + java.util.Iterator p = _propertySets.iterator(); + while(p.hasNext()) + { + PropertySet ps = (PropertySet)p.next(); + if(ps.getEditable().isNew() || ps.getEditable().isModified()) + { + update.propertySets.put(ps.getId(), ps.getDescriptor()); + } + } + } + + // + // Then: servers + // + if(_editable.isNew()) + { + update.removeServers = new String[0]; + } + else + { + update.removeServers = _editable.removedElements(Server.class); + } + + update.serverInstances = new java.util.LinkedList(); + update.servers = new java.util.LinkedList(); + + java.util.Iterator p = _servers.iterator(); + while(p.hasNext()) + { + Server server = (Server)p.next(); + if(_editable.isNew() || server.getEditable().isModified() + || server.getEditable().isNew()) + { + if(server instanceof PlainServer) + { + update.servers.add(server.getDescriptor()); + } + else + { + update.serverInstances.add(server.getDescriptor()); + } + } + } + + // + // Anything in this update? + // + if(!_editable.isNew() && !_editable.isModified() + && update.removePropertySets.length == 0 + && update.propertySets.size() == 0 + && update.removeServers.length == 0 + && update.servers.size() == 0 + && update.serverInstances.size() == 0) + { + return null; + } + + if(_editable.isNew()) + { + update.variables = _descriptor.variables; + update.removeVariables = new String[0]; + update.loadFactor = new IceGrid.BoxedString(_descriptor.loadFactor); + } + else + { + if(!_descriptor.description.equals(_origDescription)) + { + update.description = new IceGrid.BoxedString(_descriptor.description); + } + + if(!_descriptor.loadFactor.equals(_origLoadFactor)) + { + update.loadFactor = new IceGrid.BoxedString(_descriptor.loadFactor); + } + + // + // Diff variables (TODO: avoid duplication with same code in Root) + // + update.variables = new java.util.TreeMap(_descriptor.variables); + java.util.List removeVariables = new java.util.LinkedList(); + + p = _origVariables.entrySet().iterator(); + while(p.hasNext()) + { + java.util.Map.Entry entry = (java.util.Map.Entry)p.next(); + Object key = entry.getKey(); + Object newValue = update.variables.get(key); + if(newValue == null) + { + removeVariables.add(key); + } + else + { + Object value = entry.getValue(); + if(newValue.equals(value)) + { + update.variables.remove(key); + } + } + } + update.removeVariables = (String[])removeVariables.toArray(new String[0]); + } + + return update; } void update(NodeUpdateDescriptor update, - java.util.Set serverTemplates, java.util.Set serviceTemplates) - throws UpdateFailedException + java.util.Set serverTemplates, java.util.Set serviceTemplates) + throws UpdateFailedException { - Root root = getRoot(); - - java.util.Vector newServers = new java.util.Vector(); - java.util.Vector updatedServers = new java.util.Vector(); - - if(update != null) - { - // - // Description - // - if(update.description != null) - { - _descriptor.description = update.description.value; - _origDescription = _descriptor.description; - } - - // - // Load factor - // - if(update.loadFactor != null) - { - _descriptor.loadFactor = update.loadFactor.value; - _origLoadFactor = _descriptor.loadFactor; - } - - // - // Variables - // - for(int i = 0; i < update.removeVariables.length; ++i) - { - _descriptor.variables.remove(update.removeVariables[i]); - } - _descriptor.variables.putAll(update.variables); - - - // - // Property Sets - // - removePropertySets(update.removePropertySets); - for(int i = 0; i < update.removePropertySets.length; ++i) - { - _descriptor.propertySets.remove(update.removePropertySets[i]); - } - - java.util.Vector newPropertySets = new java.util.Vector(); - java.util.Vector updatedPropertySets = new java.util.Vector(); - - java.util.Iterator p = update.propertySets.entrySet().iterator(); - while(p.hasNext()) - { - java.util.Map.Entry entry = (java.util.Map.Entry)p.next(); - - String id = (String)entry.getKey(); - PropertySetDescriptor psd = (PropertySetDescriptor)entry.getValue(); - - // - // Lookup named property set - // - PropertySet ps = findPropertySet(id); - if(ps != null) - { - ps.rebuild(psd); - updatedPropertySets.add(ps); - } - else - { - ps = new PropertySet(false, this, id, id, psd); - newPropertySets.add(ps); - _descriptor.propertySets.put(id, psd); - } - } - childrenChanged(updatedPropertySets); - insertPropertySets(newPropertySets, true); - - - // - // Update _descriptor - // - for(int i = 0; i < update.removeServers.length; ++i) - { - Server server = findServer(update.removeServers[i]); - removeDescriptor(server); - } - - // - // One big set of removes - // - removeServers(update.removeServers); - - // - // One big set of updates, followed by inserts - // - p = update.serverInstances.iterator(); - while(p.hasNext()) - { - ServerInstanceDescriptor instanceDescriptor = - (ServerInstanceDescriptor)p.next(); - - // - // Find template - // - TemplateDescriptor templateDescriptor = - root.findServerTemplateDescriptor(instanceDescriptor.template); - - assert templateDescriptor != null; - - ServerDescriptor serverDescriptor = - (ServerDescriptor)templateDescriptor.descriptor; - - assert serverDescriptor != null; - - // - // Build resolver - // - Utils.Resolver instanceResolver = - new Utils.Resolver(_resolver, - instanceDescriptor.parameterValues, - templateDescriptor.parameterDefaults); - - String serverId = instanceResolver.substitute(serverDescriptor.id); - instanceResolver.put("server", serverId); - - // - // Lookup servers - // - ServerInstance server = (ServerInstance)findServer(serverId); - if(server != null) - { - removeDescriptor(server); - server.rebuild(instanceResolver, instanceDescriptor, - serverDescriptor instanceof IceBoxDescriptor); - updatedServers.add(server); - _descriptor.serverInstances.add(instanceDescriptor); - } - else - { - server = new ServerInstance(false, this, serverId, instanceResolver, - instanceDescriptor, - serverDescriptor instanceof IceBoxDescriptor); - newServers.add(server); - _descriptor.serverInstances.add(instanceDescriptor); - } - } - - // - // Plain servers - // - p = update.servers.iterator(); - while(p.hasNext()) - { - ServerDescriptor serverDescriptor = (ServerDescriptor)p.next(); - - // - // Build resolver - // - Utils.Resolver instanceResolver = new Utils.Resolver(_resolver); - String serverId = instanceResolver.substitute(serverDescriptor.id); - instanceResolver.put("server", serverId); - - // - // Lookup server - // - PlainServer server = (PlainServer)findServer(serverId); - - if(server != null) - { - removeDescriptor(server); - server.rebuild(instanceResolver, serverDescriptor); - updatedServers.add(server); - _descriptor.servers.add(serverDescriptor); - } - else - { - server = new PlainServer(false, this, serverId, instanceResolver, - serverDescriptor); - newServers.add(server); - _descriptor.servers.add(serverDescriptor); - } - } - } - - // - // Find servers affected by template updates - // - java.util.Set serverSet = new java.util.HashSet(); - - java.util.Iterator p = serverTemplates.iterator(); - while(p.hasNext()) - { - String template = (String)p.next(); - java.util.List serverInstances = findServerInstances(template); - java.util.Iterator q = serverInstances.iterator(); - while(q.hasNext()) - { - ServerInstance server = (ServerInstance)q.next(); - if(!updatedServers.contains(server) && !newServers.contains(server)) - { - serverSet.add(server); - } - } - } - - // - // Servers affected by service-template updates - // - p = serviceTemplates.iterator(); - while(p.hasNext()) - { - java.util.List serviceInstances = - findServiceInstances((String)p.next()); - java.util.Iterator q = serviceInstances.iterator(); - while(q.hasNext()) - { - ServiceInstance service = (ServiceInstance)q.next(); - Server server = (Server)service.getParent().getParent(); - if(!updatedServers.contains(server) && !newServers.contains(server)) - { - serverSet.add(server); - } - } - } - - // - // Rebuild these servers - // - p = serverSet.iterator(); - while(p.hasNext()) - { - Server server = (Server)p.next(); - - if(server instanceof PlainServer) - { - PlainServer ps = (PlainServer)server; - ServerDescriptor serverDescriptor = (ServerDescriptor)ps.getDescriptor(); - Utils.Resolver instanceResolver = new Utils.Resolver(_resolver); - - String serverId = instanceResolver.substitute(serverDescriptor.id); - assert serverId.equals(ps.getId()); - - ps.rebuild(instanceResolver, serverDescriptor); - } - else - { - ServerInstance si = (ServerInstance)server; - ServerInstanceDescriptor instanceDescriptor = (ServerInstanceDescriptor)si.getDescriptor(); - - TemplateDescriptor templateDescriptor = - root.findServerTemplateDescriptor(instanceDescriptor.template); - assert templateDescriptor != null; - - ServerDescriptor serverDescriptor = (ServerDescriptor)templateDescriptor.descriptor; - assert serverDescriptor != null; - - Utils.Resolver instanceResolver = - new Utils.Resolver(_resolver, - instanceDescriptor.parameterValues, - templateDescriptor.parameterDefaults); - - String serverId = instanceResolver.substitute(serverDescriptor.id); - assert serverId.equals(si.getId()); - - si.rebuild(instanceResolver, instanceDescriptor, - serverDescriptor instanceof IceBoxDescriptor); - } - updatedServers.add(server); - } - - childrenChanged(updatedServers); - insertServers(newServers, true); + Root root = getRoot(); + + java.util.Vector newServers = new java.util.Vector(); + java.util.Vector updatedServers = new java.util.Vector(); + + if(update != null) + { + // + // Description + // + if(update.description != null) + { + _descriptor.description = update.description.value; + _origDescription = _descriptor.description; + } + + // + // Load factor + // + if(update.loadFactor != null) + { + _descriptor.loadFactor = update.loadFactor.value; + _origLoadFactor = _descriptor.loadFactor; + } + + // + // Variables + // + for(int i = 0; i < update.removeVariables.length; ++i) + { + _descriptor.variables.remove(update.removeVariables[i]); + } + _descriptor.variables.putAll(update.variables); + + + // + // Property Sets + // + removePropertySets(update.removePropertySets); + for(int i = 0; i < update.removePropertySets.length; ++i) + { + _descriptor.propertySets.remove(update.removePropertySets[i]); + } + + java.util.Vector newPropertySets = new java.util.Vector(); + java.util.Vector updatedPropertySets = new java.util.Vector(); + + java.util.Iterator p = update.propertySets.entrySet().iterator(); + while(p.hasNext()) + { + java.util.Map.Entry entry = (java.util.Map.Entry)p.next(); + + String id = (String)entry.getKey(); + PropertySetDescriptor psd = (PropertySetDescriptor)entry.getValue(); + + // + // Lookup named property set + // + PropertySet ps = findPropertySet(id); + if(ps != null) + { + ps.rebuild(psd); + updatedPropertySets.add(ps); + } + else + { + ps = new PropertySet(false, this, id, id, psd); + newPropertySets.add(ps); + _descriptor.propertySets.put(id, psd); + } + } + childrenChanged(updatedPropertySets); + insertPropertySets(newPropertySets, true); + + + // + // Update _descriptor + // + for(int i = 0; i < update.removeServers.length; ++i) + { + Server server = findServer(update.removeServers[i]); + removeDescriptor(server); + } + + // + // One big set of removes + // + removeServers(update.removeServers); + + // + // One big set of updates, followed by inserts + // + p = update.serverInstances.iterator(); + while(p.hasNext()) + { + ServerInstanceDescriptor instanceDescriptor = + (ServerInstanceDescriptor)p.next(); + + // + // Find template + // + TemplateDescriptor templateDescriptor = + root.findServerTemplateDescriptor(instanceDescriptor.template); + + assert templateDescriptor != null; + + ServerDescriptor serverDescriptor = + (ServerDescriptor)templateDescriptor.descriptor; + + assert serverDescriptor != null; + + // + // Build resolver + // + Utils.Resolver instanceResolver = + new Utils.Resolver(_resolver, + instanceDescriptor.parameterValues, + templateDescriptor.parameterDefaults); + + String serverId = instanceResolver.substitute(serverDescriptor.id); + instanceResolver.put("server", serverId); + + // + // Lookup servers + // + ServerInstance server = (ServerInstance)findServer(serverId); + if(server != null) + { + removeDescriptor(server); + server.rebuild(instanceResolver, instanceDescriptor, + serverDescriptor instanceof IceBoxDescriptor); + updatedServers.add(server); + _descriptor.serverInstances.add(instanceDescriptor); + } + else + { + server = new ServerInstance(false, this, serverId, instanceResolver, + instanceDescriptor, + serverDescriptor instanceof IceBoxDescriptor); + newServers.add(server); + _descriptor.serverInstances.add(instanceDescriptor); + } + } + + // + // Plain servers + // + p = update.servers.iterator(); + while(p.hasNext()) + { + ServerDescriptor serverDescriptor = (ServerDescriptor)p.next(); + + // + // Build resolver + // + Utils.Resolver instanceResolver = new Utils.Resolver(_resolver); + String serverId = instanceResolver.substitute(serverDescriptor.id); + instanceResolver.put("server", serverId); + + // + // Lookup server + // + PlainServer server = (PlainServer)findServer(serverId); + + if(server != null) + { + removeDescriptor(server); + server.rebuild(instanceResolver, serverDescriptor); + updatedServers.add(server); + _descriptor.servers.add(serverDescriptor); + } + else + { + server = new PlainServer(false, this, serverId, instanceResolver, + serverDescriptor); + newServers.add(server); + _descriptor.servers.add(serverDescriptor); + } + } + } + + // + // Find servers affected by template updates + // + java.util.Set serverSet = new java.util.HashSet(); + + java.util.Iterator p = serverTemplates.iterator(); + while(p.hasNext()) + { + String template = (String)p.next(); + java.util.List serverInstances = findServerInstances(template); + java.util.Iterator q = serverInstances.iterator(); + while(q.hasNext()) + { + ServerInstance server = (ServerInstance)q.next(); + if(!updatedServers.contains(server) && !newServers.contains(server)) + { + serverSet.add(server); + } + } + } + + // + // Servers affected by service-template updates + // + p = serviceTemplates.iterator(); + while(p.hasNext()) + { + java.util.List serviceInstances = + findServiceInstances((String)p.next()); + java.util.Iterator q = serviceInstances.iterator(); + while(q.hasNext()) + { + ServiceInstance service = (ServiceInstance)q.next(); + Server server = (Server)service.getParent().getParent(); + if(!updatedServers.contains(server) && !newServers.contains(server)) + { + serverSet.add(server); + } + } + } + + // + // Rebuild these servers + // + p = serverSet.iterator(); + while(p.hasNext()) + { + Server server = (Server)p.next(); + + if(server instanceof PlainServer) + { + PlainServer ps = (PlainServer)server; + ServerDescriptor serverDescriptor = (ServerDescriptor)ps.getDescriptor(); + Utils.Resolver instanceResolver = new Utils.Resolver(_resolver); + + String serverId = instanceResolver.substitute(serverDescriptor.id); + assert serverId.equals(ps.getId()); + + ps.rebuild(instanceResolver, serverDescriptor); + } + else + { + ServerInstance si = (ServerInstance)server; + ServerInstanceDescriptor instanceDescriptor = (ServerInstanceDescriptor)si.getDescriptor(); + + TemplateDescriptor templateDescriptor = + root.findServerTemplateDescriptor(instanceDescriptor.template); + assert templateDescriptor != null; + + ServerDescriptor serverDescriptor = (ServerDescriptor)templateDescriptor.descriptor; + assert serverDescriptor != null; + + Utils.Resolver instanceResolver = + new Utils.Resolver(_resolver, + instanceDescriptor.parameterValues, + templateDescriptor.parameterDefaults); + + String serverId = instanceResolver.substitute(serverDescriptor.id); + assert serverId.equals(si.getId()); + + si.rebuild(instanceResolver, instanceDescriptor, + serverDescriptor instanceof IceBoxDescriptor); + } + updatedServers.add(server); + } + + childrenChanged(updatedServers); + insertServers(newServers, true); } Node(boolean brandNew, TreeNode parent, String nodeName, NodeDescriptor descriptor) - throws UpdateFailedException + throws UpdateFailedException { - super(parent, nodeName); - _editable = new Editable(brandNew); - - _ephemeral = false; - _descriptor = descriptor; - - _origVariables = _descriptor.variables; - _origDescription = _descriptor.description; - _origLoadFactor = _descriptor.loadFactor; - - _resolver = new Utils.Resolver(new java.util.Map[] - {_descriptor.variables, getRoot().getVariables()}); - - _resolver.put("application", getRoot().getId()); - _resolver.put("node", _id); - - // - // Property Sets - // - java.util.Iterator p = _descriptor.propertySets.entrySet().iterator(); - while(p.hasNext()) - { - java.util.Map.Entry entry = (java.util.Map.Entry)p.next(); - String id = (String)entry.getKey(); - insertPropertySet(new PropertySet(false, this, - id, id, - (PropertySetDescriptor)entry.getValue()), - false); - } - - // - // Template instances - // - p = _descriptor.serverInstances.iterator(); - while(p.hasNext()) - { - ServerInstanceDescriptor instanceDescriptor = - (ServerInstanceDescriptor)p.next(); - - insertServer(createServer(false, instanceDescriptor), false); - } - - // - // Plain servers - // - p = _descriptor.servers.iterator(); - while(p.hasNext()) - { - ServerDescriptor serverDescriptor = (ServerDescriptor)p.next(); - insertServer(createServer(false, serverDescriptor), false); - } + super(parent, nodeName); + _editable = new Editable(brandNew); + + _ephemeral = false; + _descriptor = descriptor; + + _origVariables = _descriptor.variables; + _origDescription = _descriptor.description; + _origLoadFactor = _descriptor.loadFactor; + + _resolver = new Utils.Resolver(new java.util.Map[] + {_descriptor.variables, getRoot().getVariables()}); + + _resolver.put("application", getRoot().getId()); + _resolver.put("node", _id); + + // + // Property Sets + // + java.util.Iterator p = _descriptor.propertySets.entrySet().iterator(); + while(p.hasNext()) + { + java.util.Map.Entry entry = (java.util.Map.Entry)p.next(); + String id = (String)entry.getKey(); + insertPropertySet(new PropertySet(false, this, + id, id, + (PropertySetDescriptor)entry.getValue()), + false); + } + + // + // Template instances + // + p = _descriptor.serverInstances.iterator(); + while(p.hasNext()) + { + ServerInstanceDescriptor instanceDescriptor = + (ServerInstanceDescriptor)p.next(); + + insertServer(createServer(false, instanceDescriptor), false); + } + + // + // Plain servers + // + p = _descriptor.servers.iterator(); + while(p.hasNext()) + { + ServerDescriptor serverDescriptor = (ServerDescriptor)p.next(); + insertServer(createServer(false, serverDescriptor), false); + } } Node(TreeNode parent, String nodeName, NodeDescriptor descriptor) { - super(parent, nodeName); - _editable = new Editable(false); - _ephemeral = true; - _descriptor = descriptor; + super(parent, nodeName); + _editable = new Editable(false); + _ephemeral = true; + _descriptor = descriptor; } java.util.List findServerInstances(String template) { - java.util.List result = new java.util.LinkedList(); - java.util.Iterator p = _servers.iterator(); - while(p.hasNext()) - { - Server server = (Server)p.next(); - - if(server instanceof ServerInstance) - { - ServerInstanceDescriptor instanceDescriptor - = (ServerInstanceDescriptor)server.getDescriptor(); - - if(instanceDescriptor.template.equals(template)) - { - result.add(server); - } - } - } - return result; + java.util.List result = new java.util.LinkedList(); + java.util.Iterator p = _servers.iterator(); + while(p.hasNext()) + { + Server server = (Server)p.next(); + + if(server instanceof ServerInstance) + { + ServerInstanceDescriptor instanceDescriptor + = (ServerInstanceDescriptor)server.getDescriptor(); + + if(instanceDescriptor.template.equals(template)) + { + result.add(server); + } + } + } + return result; } void removeServerInstances(String template) { - java.util.List toRemove = new java.util.LinkedList(); - - java.util.Iterator p = _servers.iterator(); - while(p.hasNext()) - { - Server server = (Server)p.next(); - - if(server instanceof ServerInstance) - { - ServerInstanceDescriptor instanceDescriptor - = (ServerInstanceDescriptor)server.getDescriptor(); - - if(instanceDescriptor.template.equals(template)) - { - // - // Remove instance - // - removeDescriptor(instanceDescriptor); - String id = ((TreeNode)server).getId(); - _editable.removeElement(id, server.getEditable(), Server.class); - toRemove.add(id); - } - } - } - - if(toRemove.size() > 0) - { - removeServers((String[])toRemove.toArray(new String[0])); - } + java.util.List toRemove = new java.util.LinkedList(); + + java.util.Iterator p = _servers.iterator(); + while(p.hasNext()) + { + Server server = (Server)p.next(); + + if(server instanceof ServerInstance) + { + ServerInstanceDescriptor instanceDescriptor + = (ServerInstanceDescriptor)server.getDescriptor(); + + if(instanceDescriptor.template.equals(template)) + { + // + // Remove instance + // + removeDescriptor(instanceDescriptor); + String id = ((TreeNode)server).getId(); + _editable.removeElement(id, server.getEditable(), Server.class); + toRemove.add(id); + } + } + } + + if(toRemove.size() > 0) + { + removeServers((String[])toRemove.toArray(new String[0])); + } } java.util.List findServiceInstances(String template) { - java.util.List result = new java.util.LinkedList(); - java.util.Iterator p = _servers.iterator(); - while(p.hasNext()) - { - Object o = p.next(); - if(o instanceof PlainServer) - { - result.addAll(((PlainServer)o).findServiceInstances(template)); - } - } - return result; + java.util.List result = new java.util.LinkedList(); + java.util.Iterator p = _servers.iterator(); + while(p.hasNext()) + { + Object o = p.next(); + if(o instanceof PlainServer) + { + result.addAll(((PlainServer)o).findServiceInstances(template)); + } + } + return result; } void removeServiceInstances(String template) - { - java.util.Iterator p = _servers.iterator(); - while(p.hasNext()) - { - Object o = p.next(); - if(o instanceof PlainServer) - { - ((PlainServer)o).removeServiceInstances(template); - } - } + { + java.util.Iterator p = _servers.iterator(); + while(p.hasNext()) + { + Object o = p.next(); + if(o instanceof PlainServer) + { + ((PlainServer)o).removeServiceInstances(template); + } + } } Utils.Resolver getResolver() { - return _resolver; + return _resolver; } public void tryAdd(String id, PropertySetDescriptor descriptor) - throws UpdateFailedException + throws UpdateFailedException { - insertPropertySet(new PropertySet(true, this, id, id, descriptor), - true); - _descriptor.propertySets.put(id, descriptor); + insertPropertySet(new PropertySet(true, this, id, id, descriptor), + true); + _descriptor.propertySets.put(id, descriptor); } public void tryRename(String oldId, String oldId2, String newId) - throws UpdateFailedException + throws UpdateFailedException { - PropertySet oldChild = findPropertySet(oldId); - assert oldChild != null; - removePropertySet(oldChild); - PropertySetDescriptor descriptor = (PropertySetDescriptor)oldChild.getDescriptor(); - - try - { - insertPropertySet( - new PropertySet(true, this, newId, newId, descriptor), - true); - } - catch(UpdateFailedException ex) - { - try - { - insertPropertySet(oldChild, true); - } - catch(UpdateFailedException ufe) - { - assert false; - } - throw ex; - } - - _editable.removeElement(oldId, oldChild.getEditable(), PropertySet.class); - _descriptor.propertySets.remove(oldId); - _descriptor.propertySets.put(newId, descriptor); + PropertySet oldChild = findPropertySet(oldId); + assert oldChild != null; + removePropertySet(oldChild); + PropertySetDescriptor descriptor = (PropertySetDescriptor)oldChild.getDescriptor(); + + try + { + insertPropertySet( + new PropertySet(true, this, newId, newId, descriptor), + true); + } + catch(UpdateFailedException ex) + { + try + { + insertPropertySet(oldChild, true); + } + catch(UpdateFailedException ufe) + { + assert false; + } + throw ex; + } + + _editable.removeElement(oldId, oldChild.getEditable(), PropertySet.class); + _descriptor.propertySets.remove(oldId); + _descriptor.propertySets.put(newId, descriptor); } void tryAdd(ServerInstanceDescriptor instanceDescriptor, - boolean addDescriptor) throws UpdateFailedException + boolean addDescriptor) throws UpdateFailedException { - insertServer(createServer(true, instanceDescriptor), true); + insertServer(createServer(true, instanceDescriptor), true); - if(addDescriptor) - { - _descriptor.serverInstances.add(instanceDescriptor); - } + if(addDescriptor) + { + _descriptor.serverInstances.add(instanceDescriptor); + } } void tryAdd(ServerDescriptor serverDescriptor, - boolean addDescriptor) throws UpdateFailedException + boolean addDescriptor) throws UpdateFailedException { - insertServer(createServer(true, serverDescriptor), true); + insertServer(createServer(true, serverDescriptor), true); - if(addDescriptor) - { - _descriptor.servers.add(serverDescriptor); - } + if(addDescriptor) + { + _descriptor.servers.add(serverDescriptor); + } } void removeDescriptor(Server server) { - if(server instanceof ServerInstance) - { - removeDescriptor((ServerInstanceDescriptor)server.getDescriptor()); - } - else - { - removeDescriptor((ServerDescriptor)server.getDescriptor()); - } + if(server instanceof ServerInstance) + { + removeDescriptor((ServerInstanceDescriptor)server.getDescriptor()); + } + else + { + removeDescriptor((ServerDescriptor)server.getDescriptor()); + } } void removeDescriptor(ServerDescriptor sd) { - // - // A straight remove uses equals(), which is not the desired behavior - // - java.util.Iterator p = _descriptor.servers.iterator(); - while(p.hasNext()) - { - if(sd == p.next()) - { - p.remove(); - break; - } - } + // + // A straight remove uses equals(), which is not the desired behavior + // + java.util.Iterator p = _descriptor.servers.iterator(); + while(p.hasNext()) + { + if(sd == p.next()) + { + p.remove(); + break; + } + } } void removeDescriptor(ServerInstanceDescriptor sd) { - // - // A straight remove uses equals(), which is not the desired behavior - // - java.util.Iterator p = _descriptor.serverInstances.iterator(); - while(p.hasNext()) - { - if(sd == p.next()) - { - p.remove(); - break; - } - } + // + // A straight remove uses equals(), which is not the desired behavior + // + java.util.Iterator p = _descriptor.serverInstances.iterator(); + while(p.hasNext()) + { + if(sd == p.next()) + { + p.remove(); + break; + } + } } private void newPropertySet(PropertySetDescriptor descriptor) { - String id = makeNewChildId("PropertySet"); - - PropertySet ps = new PropertySet(this, id, descriptor); - try - { - insertPropertySet(ps, true); - } - catch(UpdateFailedException e) - { - assert false; - } - getRoot().setSelectedNode(ps); + String id = makeNewChildId("PropertySet"); + + PropertySet ps = new PropertySet(this, id, descriptor); + try + { + insertPropertySet(ps, true); + } + catch(UpdateFailedException e) + { + assert false; + } + getRoot().setSelectedNode(ps); } private void newServer(ServerDescriptor descriptor) { - descriptor.id = makeNewChildId(descriptor.id); - - PlainServer server = new PlainServer(this, descriptor.id, descriptor); - try - { - insertServer(server, true); - } - catch(UpdateFailedException e) - { - assert false; - } - getRoot().setSelectedNode(server); + descriptor.id = makeNewChildId(descriptor.id); + + PlainServer server = new PlainServer(this, descriptor.id, descriptor); + try + { + insertServer(server, true); + } + catch(UpdateFailedException e) + { + assert false; + } + getRoot().setSelectedNode(server); } private void newServer(ServerInstanceDescriptor descriptor) { - String id = makeNewChildId("NewServer"); - Root root = getRoot(); - - // - // Make sure descriptor.template points to a real template - // - ServerTemplate t = root.findServerTemplate(descriptor.template); - - if(t == null) - { - if(root.getServerTemplates().getChildCount() == 0) - { - JOptionPane.showMessageDialog( - getCoordinator().getMainFrame(), - "You need to create a server template before you can create a server from a template.", - "No Server Template", - JOptionPane.INFORMATION_MESSAGE); - return; - } - - t = (ServerTemplate)root.getServerTemplates().getChildAt(0); - descriptor.template = t.getId(); - descriptor.parameterValues = new java.util.HashMap(); - } - - ServerInstance server = new ServerInstance(this, id, descriptor); - try - { - insertServer(server, true); - } - catch(UpdateFailedException e) - { - assert false; - } - root.setSelectedNode(server); + String id = makeNewChildId("NewServer"); + Root root = getRoot(); + + // + // Make sure descriptor.template points to a real template + // + ServerTemplate t = root.findServerTemplate(descriptor.template); + + if(t == null) + { + if(root.getServerTemplates().getChildCount() == 0) + { + JOptionPane.showMessageDialog( + getCoordinator().getMainFrame(), + "You need to create a server template before you can create a server from a template.", + "No Server Template", + JOptionPane.INFORMATION_MESSAGE); + return; + } + + t = (ServerTemplate)root.getServerTemplates().getChildAt(0); + descriptor.template = t.getId(); + descriptor.parameterValues = new java.util.HashMap(); + } + + ServerInstance server = new ServerInstance(this, id, descriptor); + try + { + insertServer(server, true); + } + catch(UpdateFailedException e) + { + assert false; + } + root.setSelectedNode(server); } private NodeDescriptor _descriptor; |