diff options
author | Bernard Normier <bernard@zeroc.com> | 2007-10-05 13:18:00 -0400 |
---|---|---|
committer | Bernard Normier <bernard@zeroc.com> | 2007-10-05 13:18:00 -0400 |
commit | 0ace9a91634271f30743792e9a57853485b1744e (patch) | |
tree | bf8926c60cc6666f3e3f82d8fcd264186b67053f /java | |
parent | Fixed bug 2506 (diff) | |
download | ice-0ace9a91634271f30743792e9a57853485b1744e.tar.bz2 ice-0ace9a91634271f30743792e9a57853485b1744e.tar.xz ice-0ace9a91634271f30743792e9a57853485b1744e.zip |
Fixed bug #2499
Diffstat (limited to 'java')
-rwxr-xr-x | java/src/IceGridGUI/Application/Communicator.java | 19 | ||||
-rwxr-xr-x | java/src/IceGridGUI/Application/Node.java | 24 | ||||
-rwxr-xr-x | java/src/IceGridGUI/Application/Nodes.java | 42 | ||||
-rwxr-xr-x | java/src/IceGridGUI/Application/Root.java | 30 | ||||
-rwxr-xr-x | java/src/IceGridGUI/Application/ServerTemplates.java | 11 |
5 files changed, 116 insertions, 10 deletions
diff --git a/java/src/IceGridGUI/Application/Communicator.java b/java/src/IceGridGUI/Application/Communicator.java index 571e4d823b8..91a7a916afb 100755 --- a/java/src/IceGridGUI/Application/Communicator.java +++ b/java/src/IceGridGUI/Application/Communicator.java @@ -679,18 +679,18 @@ abstract class Communicator extends TreeNode implements DescriptorHolder ServiceInstanceDescriptor descriptor = (ServiceInstanceDescriptor)o; if(descriptor.descriptor == null) - { - TemplateDescriptor templateDescriptor - = getRoot().findServiceTemplateDescriptor(descriptor.template); - - assert templateDescriptor != null; - + { String serviceName = null; String displayString = null; Utils.Resolver serviceResolver = null; if(Communicator.this instanceof PlainServer) { + TemplateDescriptor templateDescriptor + = getRoot().findServiceTemplateDescriptor(descriptor.template); + + assert templateDescriptor != null; + serviceResolver = new Utils.Resolver(getResolver(), descriptor.parameterValues, templateDescriptor.parameterDefaults); @@ -863,6 +863,8 @@ abstract class Communicator extends TreeNode implements DescriptorHolder void removeServiceInstances(String template) { + boolean updated = false; + java.util.Iterator p = _services.iterator(); while(p.hasNext()) { @@ -877,9 +879,14 @@ abstract class Communicator extends TreeNode implements DescriptorHolder p.remove(); _services.removeDescriptor(d); getEnclosingEditable().markModified(); + updated = true; } } } + if(updated) + { + getRoot().getTreeModel().nodeStructureChanged(this); + } } void removeSortedChildren(String[] childIds, java.util.List fromChildren) diff --git a/java/src/IceGridGUI/Application/Node.java b/java/src/IceGridGUI/Application/Node.java index 748d12679ed..46cd5a029f9 100755 --- a/java/src/IceGridGUI/Application/Node.java +++ b/java/src/IceGridGUI/Application/Node.java @@ -305,11 +305,31 @@ class Node extends TreeNode implements PropertySetParent } else if(descriptor instanceof ServerInstanceDescriptor) { - newServer(ServerInstance.copyDescriptor((ServerInstanceDescriptor)descriptor)); + // + // Remove any extra parameters + // + ServerInstanceDescriptor sid = ServerInstance.copyDescriptor((ServerInstanceDescriptor)descriptor); + + TemplateDescriptor td = getRoot().findServerTemplateDescriptor(sid.template); + + if(td != null) + { + sid.parameterValues.keySet().retainAll(td.parameters); + } + + newServer(sid); } else { - newServer(PlainServer.copyDescriptor(((ServerDescriptor)descriptor))); + ServerDescriptor sd = PlainServer.copyDescriptor((ServerDescriptor)descriptor); + if(sd instanceof IceBoxDescriptor) + { + if(!getRoot().pasteIceBox((IceBoxDescriptor)sd)) + { + return; + } + } + newServer(sd); } } diff --git a/java/src/IceGridGUI/Application/Nodes.java b/java/src/IceGridGUI/Application/Nodes.java index 5bfeab237f4..284e08ecd90 100755 --- a/java/src/IceGridGUI/Application/Nodes.java +++ b/java/src/IceGridGUI/Application/Nodes.java @@ -11,6 +11,7 @@ package IceGridGUI.Application; import java.awt.Component; import javax.swing.JMenuItem; +import javax.swing.JOptionPane; import javax.swing.JPopupMenu; import javax.swing.JTree; @@ -63,7 +64,46 @@ class Nodes extends ListTreeNode public void paste() { Object descriptor = getCoordinator().getClipboard(); - newNode(Node.copyDescriptor((NodeDescriptor)descriptor)); + NodeDescriptor nd = Node.copyDescriptor((NodeDescriptor)descriptor); + + // + // Verify / fix all template instances + // + + java.util.Iterator p = nd.serverInstances.iterator(); + while(p.hasNext()) + { + ServerInstanceDescriptor sid = (ServerInstanceDescriptor)p.next(); + TemplateDescriptor td = getRoot().findServerTemplateDescriptor(sid.template); + if(td == null) + { + JOptionPane.showMessageDialog( + getCoordinator().getMainFrame(), + "Descriptor refers to undefined server template '" + sid.template + "'", + "Cannot paste", + JOptionPane.ERROR_MESSAGE); + return; + } + else + { + sid.parameterValues.keySet().retainAll(td.parameters); + } + } + + p = nd.servers.iterator(); + while(p.hasNext()) + { + ServerDescriptor sd = (ServerDescriptor)p.next(); + if(sd instanceof IceBoxDescriptor) + { + if(!getRoot().pasteIceBox((IceBoxDescriptor)sd)) + { + return; + } + } + } + + newNode(nd); } public void newNode() diff --git a/java/src/IceGridGUI/Application/Root.java b/java/src/IceGridGUI/Application/Root.java index c1b9427e85e..cdb5a08bc71 100755 --- a/java/src/IceGridGUI/Application/Root.java +++ b/java/src/IceGridGUI/Application/Root.java @@ -1409,6 +1409,36 @@ public class Root extends ListTreeNode return _replicaGroups; } + boolean pasteIceBox(IceBoxDescriptor ibd) + { + // + // During paste, check that all service instances refer to existing services, + // and remove any extra template parameters + // + java.util.Iterator p = ibd.services.iterator(); + while(p.hasNext()) + { + ServiceInstanceDescriptor sid = (ServiceInstanceDescriptor)p.next(); + if(sid.template.length() > 0) + { + TemplateDescriptor td = findServiceTemplateDescriptor(sid.template); + + if(td == null) + { + JOptionPane.showMessageDialog( + _coordinator.getMainFrame(), + "Descriptor refers to undefined service template '" + sid.template + "'", + "Cannot paste", + JOptionPane.ERROR_MESSAGE); + return false; + } + + sid.parameterValues.keySet().retainAll(td.parameters); + } + } + return true; + } + public Root getRoot() { return this; diff --git a/java/src/IceGridGUI/Application/ServerTemplates.java b/java/src/IceGridGUI/Application/ServerTemplates.java index 0b2374d930f..cc012a60d67 100755 --- a/java/src/IceGridGUI/Application/ServerTemplates.java +++ b/java/src/IceGridGUI/Application/ServerTemplates.java @@ -79,7 +79,16 @@ class ServerTemplates extends Templates public void paste() { Object descriptor = getCoordinator().getClipboard(); - TemplateDescriptor td = (TemplateDescriptor)descriptor; + TemplateDescriptor td = ServerTemplate.copyDescriptor((TemplateDescriptor)descriptor); + + if(td.descriptor instanceof IceBoxDescriptor) + { + if(!getRoot().pasteIceBox((IceBoxDescriptor)td.descriptor)) + { + return; + } + } + newServerTemplate(td); } |