summaryrefslogtreecommitdiff
path: root/java/src/IceGridGUI
diff options
context:
space:
mode:
authorBernard Normier <bernard@zeroc.com>2007-10-05 13:18:00 -0400
committerBernard Normier <bernard@zeroc.com>2007-10-05 13:18:00 -0400
commit0ace9a91634271f30743792e9a57853485b1744e (patch)
treebf8926c60cc6666f3e3f82d8fcd264186b67053f /java/src/IceGridGUI
parentFixed bug 2506 (diff)
downloadice-0ace9a91634271f30743792e9a57853485b1744e.tar.bz2
ice-0ace9a91634271f30743792e9a57853485b1744e.tar.xz
ice-0ace9a91634271f30743792e9a57853485b1744e.zip
Fixed bug #2499
Diffstat (limited to 'java/src/IceGridGUI')
-rwxr-xr-xjava/src/IceGridGUI/Application/Communicator.java19
-rwxr-xr-xjava/src/IceGridGUI/Application/Node.java24
-rwxr-xr-xjava/src/IceGridGUI/Application/Nodes.java42
-rwxr-xr-xjava/src/IceGridGUI/Application/Root.java30
-rwxr-xr-xjava/src/IceGridGUI/Application/ServerTemplates.java11
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);
}