summaryrefslogtreecommitdiff
path: root/java/src
diff options
context:
space:
mode:
authorBernard Normier <bernard@zeroc.com>2006-05-08 20:55:38 +0000
committerBernard Normier <bernard@zeroc.com>2006-05-08 20:55:38 +0000
commit8ff9dd62a9241109b599896c1f06516009275fe0 (patch)
treed397a64aa0bb37b2496d7fa7d0b484da9d7fa73e /java/src
parentFix (diff)
downloadice-8ff9dd62a9241109b599896c1f06516009275fe0.tar.bz2
ice-8ff9dd62a9241109b599896c1f06516009275fe0.tar.xz
ice-8ff9dd62a9241109b599896c1f06516009275fe0.zip
Simplified Application view; fixed PropertySets issues
Diffstat (limited to 'java/src')
-rwxr-xr-xjava/src/IceGridGUI/Application/AbstractServerEditor.java56
-rwxr-xr-xjava/src/IceGridGUI/Application/Adapter.java6
-rwxr-xr-xjava/src/IceGridGUI/Application/AdapterEditor.java2
-rwxr-xr-xjava/src/IceGridGUI/Application/Communicator.java166
-rwxr-xr-xjava/src/IceGridGUI/Application/DbEnv.java6
-rwxr-xr-xjava/src/IceGridGUI/Application/DbEnvEditor.java2
-rwxr-xr-xjava/src/IceGridGUI/Application/Editable.java15
-rwxr-xr-xjava/src/IceGridGUI/Application/Node.java198
-rwxr-xr-xjava/src/IceGridGUI/Application/PlainServer.java557
-rwxr-xr-xjava/src/IceGridGUI/Application/PlainServerEditor.java73
-rwxr-xr-xjava/src/IceGridGUI/Application/PlainService.java316
-rwxr-xr-xjava/src/IceGridGUI/Application/PlainServiceEditor.java87
-rwxr-xr-xjava/src/IceGridGUI/Application/PropertySet.java2
-rwxr-xr-xjava/src/IceGridGUI/Application/ReplicaGroup.java2
-rwxr-xr-xjava/src/IceGridGUI/Application/ReplicaGroupEditor.java3
-rwxr-xr-xjava/src/IceGridGUI/Application/Root.java2
-rwxr-xr-xjava/src/IceGridGUI/Application/Server.java729
-rwxr-xr-xjava/src/IceGridGUI/Application/ServerInstance.java347
-rwxr-xr-xjava/src/IceGridGUI/Application/ServerInstanceEditor.java9
-rwxr-xr-xjava/src/IceGridGUI/Application/ServerTemplate.java20
-rwxr-xr-xjava/src/IceGridGUI/Application/ServerTemplates.java6
-rwxr-xr-xjava/src/IceGridGUI/Application/Service.java480
-rwxr-xr-xjava/src/IceGridGUI/Application/ServiceInstance.java346
-rwxr-xr-xjava/src/IceGridGUI/Application/ServiceInstanceEditor.java8
-rwxr-xr-xjava/src/IceGridGUI/Application/ServiceTemplate.java6
-rwxr-xr-xjava/src/IceGridGUI/Application/TreeNode.java13
26 files changed, 1991 insertions, 1466 deletions
diff --git a/java/src/IceGridGUI/Application/AbstractServerEditor.java b/java/src/IceGridGUI/Application/AbstractServerEditor.java
index a1c0f8aeaab..afded62bc2a 100755
--- a/java/src/IceGridGUI/Application/AbstractServerEditor.java
+++ b/java/src/IceGridGUI/Application/AbstractServerEditor.java
@@ -49,16 +49,19 @@ abstract class AbstractServerEditor extends Editor
{
Node node = (Node)_target.getParent();
writeDescriptor();
- ServerInstanceDescriptor instanceDescriptor =
- server.getInstanceDescriptor();
- ServerDescriptor serverDescriptor =
- server.getServerDescriptor();
-
+
_target.destroy(); // just removes the child
-
+
try
{
- node.tryAdd(instanceDescriptor, serverDescriptor, true);
+ if(server instanceof PlainServer)
+ {
+ node.tryAdd((ServerDescriptor)server.getDescriptor(), true);
+ }
+ else
+ {
+ node.tryAdd((ServerInstanceDescriptor)server.getDescriptor(), true);
+ }
}
catch(UpdateFailedException e)
{
@@ -86,14 +89,8 @@ abstract class AbstractServerEditor extends Editor
//
// Success
//
- if(instanceDescriptor != null)
- {
- _target = (Server)node.findChildWithDescriptor(instanceDescriptor);
- }
- else
- {
- _target = (Server)node.findChildWithDescriptor(serverDescriptor);
- }
+ _target = (TreeNode)node.findChildWithDescriptor(server.getDescriptor());
+
root.updated();
root.setSelectedNode(_target);
}
@@ -108,20 +105,22 @@ abstract class AbstractServerEditor extends Editor
//
// Save to be able to rollback
//
- Object savedDescriptor = ((Communicator)_target).saveDescriptor();
+ Object savedDescriptor = server.saveDescriptor();
Node node = (Node)_target.getParent();
writeDescriptor();
- ServerInstanceDescriptor instanceDescriptor =
- server.getInstanceDescriptor();
- ServerDescriptor serverDescriptor =
- server.getServerDescriptor();
-
node.removeServer(_target);
try
{
- node.tryAdd(instanceDescriptor, serverDescriptor, false);
+ if(server instanceof PlainServer)
+ {
+ node.tryAdd((ServerDescriptor)server.getDescriptor(), false);
+ }
+ else
+ {
+ node.tryAdd((ServerInstanceDescriptor)server.getDescriptor(), false);
+ }
}
catch(UpdateFailedException e)
{
@@ -136,7 +135,7 @@ abstract class AbstractServerEditor extends Editor
{
assert false;
}
- ((Communicator)_target).restoreDescriptor(savedDescriptor);
+ server.restoreDescriptor(savedDescriptor);
root.setSelectedNode(_target);
JOptionPane.showMessageDialog(
@@ -150,17 +149,10 @@ abstract class AbstractServerEditor extends Editor
//
// Success
//
- node.getEditable().removeElement(_target.getId(),
+ node.getEditable().removeElement(_target.getId(), server.getEditable(),
Server.class); // replaced by brand new Server
- if(instanceDescriptor != null)
- {
- _target = node.findChildWithDescriptor(instanceDescriptor);
- }
- else
- {
- _target = node.findChildWithDescriptor(serverDescriptor);
- }
+ _target = node.findChildWithDescriptor(server.getDescriptor());
root.updated();
root.setSelectedNode(_target);
}
diff --git a/java/src/IceGridGUI/Application/Adapter.java b/java/src/IceGridGUI/Application/Adapter.java
index a7ce4694508..00cd834cade 100755
--- a/java/src/IceGridGUI/Application/Adapter.java
+++ b/java/src/IceGridGUI/Application/Adapter.java
@@ -45,11 +45,7 @@ class Adapter extends TreeNode implements DescriptorHolder
boolean[] parentActions = ((TreeNode)_parent).getAvailableActions();
actions[PASTE] = parentActions[PASTE];
-
- if(isEditable())
- {
- actions[DELETE] = true;
- }
+ actions[DELETE] = true;
if(!_ephemeral)
{
diff --git a/java/src/IceGridGUI/Application/AdapterEditor.java b/java/src/IceGridGUI/Application/AdapterEditor.java
index cd1a300be68..738a98290de 100755
--- a/java/src/IceGridGUI/Application/AdapterEditor.java
+++ b/java/src/IceGridGUI/Application/AdapterEditor.java
@@ -423,7 +423,7 @@ class AdapterEditor extends CommunicatorChildEditor
final Utils.Resolver resolver = adapter.getCoordinator().substitute() ?
adapter.getResolver() : null;
- boolean isEditable = adapter.isEditable() && resolver == null;
+ boolean isEditable = resolver == null;
boolean inIceBox = adapter.inIceBox();
_oldName = descriptor.name;
diff --git a/java/src/IceGridGUI/Application/Communicator.java b/java/src/IceGridGUI/Application/Communicator.java
index 3ba264079b9..6356c26bf49 100755
--- a/java/src/IceGridGUI/Application/Communicator.java
+++ b/java/src/IceGridGUI/Application/Communicator.java
@@ -171,7 +171,7 @@ abstract class Communicator extends TreeNode implements DescriptorHolder
else if(descriptor instanceof ServiceInstanceDescriptor && _services.initialized())
{
ServiceInstanceDescriptor d = (ServiceInstanceDescriptor)descriptor;
- _services.newService(Service.copyDescriptor(d));
+ _services.newService(ServiceInstance.copyDescriptor(d));
}
else
{
@@ -421,16 +421,9 @@ abstract class Communicator extends TreeNode implements DescriptorHolder
boolean canMove(TreeNode child, boolean up)
{
- if(!isEditable())
- {
- return false;
- }
- else
- {
- int i = _children.indexOf(child);
- assert i != -1;
- return (up && i > 0) || (!up && i < _children.size() - 1);
- }
+ int i = _children.indexOf(child);
+ assert i != -1;
+ return (up && i > 0) || (!up && i < _children.size() - 1);
}
void move(int listIndex, int index, boolean up)
@@ -675,19 +668,20 @@ abstract class Communicator extends TreeNode implements DescriptorHolder
void newChild()
{
- ServiceDescriptor sd =
+ ServiceDescriptor serviceDescriptor =
new ServiceDescriptor(new java.util.LinkedList(),
new PropertySetDescriptor(new String[0], new java.util.LinkedList()),
new java.util.LinkedList(),
"",
"NewService",
"");
-
+
ServiceInstanceDescriptor descriptor =
new ServiceInstanceDescriptor("",
- new java.util.TreeMap(),
- sd,
+ new java.util.HashMap(),
+ serviceDescriptor,
new PropertySetDescriptor(new String[0], new java.util.LinkedList()));
+
newService(descriptor);
}
@@ -701,7 +695,7 @@ abstract class Communicator extends TreeNode implements DescriptorHolder
newService(descriptor);
}
- void move(Service child, boolean up)
+ void move(TreeNode child, boolean up)
{
int index = getIndex(child);
int listIndex = _children.indexOf(child);
@@ -719,46 +713,35 @@ abstract class Communicator extends TreeNode implements DescriptorHolder
{
_descriptors.add(listIndex + 1, descriptor);
}
-
- java.util.List servers = ((Communicator)_parent).findInstances(true);
- java.util.Iterator p = servers.iterator();
-
- while(p.hasNext())
- {
- Server server = (Server)p.next();
-
- //
- // The descriptors are the same as `this` descriptor
- //
- server.getServices().move(listIndex, index, up);
- }
+ move(listIndex, index, up);
getCoordinator().showActions(child);
}
TreeNode createChild(Object o) throws UpdateFailedException
{
ServiceInstanceDescriptor descriptor = (ServiceInstanceDescriptor)o;
- ServiceDescriptor serviceDescriptor = null;
- String serviceName = null;
- String displayString = null;
- Utils.Resolver serviceResolver = null;
-
- if(descriptor.template.length() > 0)
+
+ if(descriptor.descriptor == null)
{
TemplateDescriptor templateDescriptor
= getRoot().findServiceTemplateDescriptor(descriptor.template);
assert templateDescriptor != null;
- serviceDescriptor = (ServiceDescriptor)templateDescriptor.descriptor;
- assert serviceDescriptor != null;
+ String serviceName = null;
+ String displayString = null;
+ Utils.Resolver serviceResolver = null;
- if(Communicator.this instanceof Server)
+ if(Communicator.this instanceof PlainServer)
{
serviceResolver = new Utils.Resolver(getResolver(),
descriptor.parameterValues,
templateDescriptor.parameterDefaults);
+
+ ServiceDescriptor serviceDescriptor = (ServiceDescriptor)templateDescriptor.descriptor;
+ assert serviceDescriptor != null;
+
serviceName = serviceResolver.substitute(serviceDescriptor.name);
serviceResolver.put("service", serviceName);
displayString = serviceName + ": " + descriptor.template + "<>";
@@ -773,13 +756,21 @@ abstract class Communicator extends TreeNode implements DescriptorHolder
descriptor.parameterValues,
templateDescriptor.parameterDefaults);
}
+
+ return new ServiceInstance(Communicator.this,
+ serviceName,
+ displayString,
+ descriptor,
+ serviceResolver);
}
else
{
- serviceDescriptor = descriptor.descriptor;
- assert serviceDescriptor != null;
-
- if(Communicator.this instanceof Server)
+ ServiceDescriptor serviceDescriptor = descriptor.descriptor;
+
+ String serviceName = null;
+ Utils.Resolver serviceResolver = null;
+
+ if(Communicator.this instanceof PlainServer)
{
serviceResolver = new Utils.Resolver(getResolver());
serviceName = serviceResolver.substitute(serviceDescriptor.name);
@@ -789,20 +780,18 @@ abstract class Communicator extends TreeNode implements DescriptorHolder
{
serviceName = serviceDescriptor.name;
}
- }
- return new Service(Communicator.this,
- serviceName,
- displayString,
- descriptor,
- serviceDescriptor,
- serviceResolver);
+ return new PlainService(Communicator.this,
+ serviceName,
+ descriptor,
+ serviceResolver);
+ }
}
void tryUpdate(TreeNode child) throws UpdateFailedException
{
//
- // Rebuilding a Service if quite different since the creation of a service can
+ // Rebuilding a Service is quite different since the creation of a service can
// trigger an UpdateFailedException
//
Object descriptor = child.getDescriptor();
@@ -846,16 +835,10 @@ abstract class Communicator extends TreeNode implements DescriptorHolder
private void newService(ServiceInstanceDescriptor descriptor)
{
- String baseName = descriptor.descriptor == null ? "NewService" :
- descriptor.descriptor.name;
- String name = makeNewChildId(baseName);
-
- if(descriptor.descriptor != null)
- {
- descriptor.descriptor.name = name;
- }
- else
+ if(descriptor.descriptor == null)
{
+ String name = makeNewChildId("NewService");
+
//
// Make sure descriptor.template points to a real template
//
@@ -888,18 +871,33 @@ abstract class Communicator extends TreeNode implements DescriptorHolder
descriptor.parameterValues = Editor.makeParameterValues(descriptor.parameterValues,
td.parameters);
+
+ ServiceInstance service = new ServiceInstance(Communicator.this, name, descriptor);
+ try
+ {
+ addChild(service, true);
+ }
+ catch(UpdateFailedException e)
+ {
+ assert false;
+ }
+ getRoot().setSelectedNode(service);
}
-
- Service service = new Service(Communicator.this, name, descriptor);
- try
- {
- addChild(service, true);
- }
- catch(UpdateFailedException e)
+ else
{
- assert false;
+ descriptor.descriptor.name = makeNewChildId(descriptor.descriptor.name);
+
+ PlainService service = new PlainService(Communicator.this, descriptor);
+ try
+ {
+ addChild(service, true);
+ }
+ catch(UpdateFailedException e)
+ {
+ assert false;
+ }
+ getRoot().setSelectedNode(service);
}
- getRoot().setSelectedNode(service);
}
}
@@ -924,12 +922,16 @@ abstract class Communicator extends TreeNode implements DescriptorHolder
java.util.Iterator p = _services.iterator();
while(p.hasNext())
{
- Service service = (Service)p.next();
- ServiceInstanceDescriptor d =
- (ServiceInstanceDescriptor)service.getDescriptor();
- if(d.template.equals(template))
+ Object obj = p.next();
+ if(obj instanceof ServiceInstance)
{
- result.add(service);
+ ServiceInstance service = (ServiceInstance)obj;
+ ServiceInstanceDescriptor d =
+ (ServiceInstanceDescriptor)service.getDescriptor();
+ if(d.template.equals(template))
+ {
+ result.add(service);
+ }
}
}
return result;
@@ -940,14 +942,18 @@ abstract class Communicator extends TreeNode implements DescriptorHolder
java.util.Iterator p = _services.iterator();
while(p.hasNext())
{
- Service service = (Service)p.next();
- ServiceInstanceDescriptor d =
- (ServiceInstanceDescriptor)service.getDescriptor();
- if(d.template.equals(template))
+ Object obj = p.next();
+ if(obj instanceof ServiceInstance)
{
- _services.removeChild(service);
- _services.removeDescriptor(d);
- getEnclosingEditable().markModified();
+ ServiceInstance service = (ServiceInstance)obj;
+ ServiceInstanceDescriptor d =
+ (ServiceInstanceDescriptor)service.getDescriptor();
+ if(d.template.equals(template))
+ {
+ _services.removeChild(service);
+ _services.removeDescriptor(d);
+ getEnclosingEditable().markModified();
+ }
}
}
}
diff --git a/java/src/IceGridGUI/Application/DbEnv.java b/java/src/IceGridGUI/Application/DbEnv.java
index bd72d1b639c..1904636835c 100755
--- a/java/src/IceGridGUI/Application/DbEnv.java
+++ b/java/src/IceGridGUI/Application/DbEnv.java
@@ -62,11 +62,7 @@ class DbEnv extends TreeNode implements DescriptorHolder
boolean[] parentActions = ((TreeNode)_parent).getAvailableActions();
actions[PASTE] = parentActions[PASTE];
-
- if(isEditable())
- {
- actions[DELETE] = true;
- }
+ actions[DELETE] = true;
if(!_ephemeral)
{
diff --git a/java/src/IceGridGUI/Application/DbEnvEditor.java b/java/src/IceGridGUI/Application/DbEnvEditor.java
index 7853c0c532e..65f0e4d7fd9 100755
--- a/java/src/IceGridGUI/Application/DbEnvEditor.java
+++ b/java/src/IceGridGUI/Application/DbEnvEditor.java
@@ -125,7 +125,7 @@ class DbEnvEditor extends CommunicatorChildEditor
{
resolver = dbEnv.getResolver();
}
- boolean isEditable = dbEnv.isEditable() && resolver == null;
+ boolean isEditable = resolver == null;
_name.setText(
Utils.substitute(descriptor.name, resolver));
diff --git a/java/src/IceGridGUI/Application/Editable.java b/java/src/IceGridGUI/Application/Editable.java
index 34d81355f6e..7c6efae73bd 100755
--- a/java/src/IceGridGUI/Application/Editable.java
+++ b/java/src/IceGridGUI/Application/Editable.java
@@ -42,15 +42,18 @@ class Editable implements Cloneable
_isNew = true;
}
- void removeElement(String id, Class forClass)
+ void removeElement(String id, Editable editable, Class forClass)
{
- java.util.TreeSet set = (java.util.TreeSet)_removedElements.get(forClass);
- if(set == null)
+ if(!editable.isNew())
{
- set = new java.util.TreeSet();
- _removedElements.put(forClass, set);
+ java.util.TreeSet set = (java.util.TreeSet)_removedElements.get(forClass);
+ if(set == null)
+ {
+ set = new java.util.TreeSet();
+ _removedElements.put(forClass, set);
+ }
+ set.add(id);
}
- set.add(id);
}
String[] removedElements(Class forClass)
diff --git a/java/src/IceGridGUI/Application/Node.java b/java/src/IceGridGUI/Application/Node.java
index 8594509039a..b0cfb4723fc 100755
--- a/java/src/IceGridGUI/Application/Node.java
+++ b/java/src/IceGridGUI/Application/Node.java
@@ -39,7 +39,7 @@ class Node extends TreeNode implements PropertySetParent
java.util.Iterator p = nd.serverInstances.iterator();
while(p.hasNext())
{
- copy.serverInstances.add(Server.copyDescriptor(
+ copy.serverInstances.add(ServerInstance.copyDescriptor(
(ServerInstanceDescriptor)p.next()));
}
@@ -47,7 +47,7 @@ class Node extends TreeNode implements PropertySetParent
p = nd.servers.iterator();
while(p.hasNext())
{
- copy.servers.add(Server.copyDescriptor(
+ copy.servers.add(PlainServer.copyDescriptor(
(ServerDescriptor)p.next()));
}
@@ -305,11 +305,11 @@ class Node extends TreeNode implements PropertySetParent
}
else if(descriptor instanceof ServerInstanceDescriptor)
{
- newServer(Server.copyDescriptor((ServerInstanceDescriptor)descriptor));
+ newServer(ServerInstance.copyDescriptor((ServerInstanceDescriptor)descriptor));
}
else
{
- newServer(Server.copyDescriptor(((ServerDescriptor)descriptor)));
+ newServer(PlainServer.copyDescriptor(((ServerDescriptor)descriptor)));
}
}
@@ -321,11 +321,11 @@ class Node extends TreeNode implements PropertySetParent
public void newServer()
{
- newServer(Server.newServerDescriptor());
+ newServer(PlainServer.newServerDescriptor());
}
public void newServerIceBox()
{
- newServer(Server.newIceBoxDescriptor());
+ newServer(PlainServer.newIceBoxDescriptor());
}
public void newServerFromTemplate()
{
@@ -348,7 +348,7 @@ class Node extends TreeNode implements PropertySetParent
{
nodes.removeChild(this);
nodes.removeDescriptor(_id);
- nodes.getEditable().removeElement(_id, Node.class);
+ nodes.getEditable().removeElement(_id, _editable, Node.class);
getRoot().updated();
}
}
@@ -447,7 +447,7 @@ class Node extends TreeNode implements PropertySetParent
p = _servers.iterator();
while(p.hasNext())
{
- Server server = (Server)p.next();
+ TreeNode server = (TreeNode)p.next();
server.write(writer);
}
writer.writeEndTag("node");
@@ -520,7 +520,7 @@ class Node extends TreeNode implements PropertySetParent
while(p.hasNext())
{
Server server = (Server)p.next();
- server.commit();
+ server.getEditable().commit();
}
}
@@ -533,7 +533,8 @@ class Node extends TreeNode implements PropertySetParent
_resolver = backup.resolver;
}
- Server createServer(boolean brandNew, ServerInstanceDescriptor instanceDescriptor)
+ ServerInstance createServer(boolean brandNew,
+ ServerInstanceDescriptor instanceDescriptor)
throws UpdateFailedException
{
Root root = getRoot();
@@ -550,6 +551,7 @@ class Node extends TreeNode implements PropertySetParent
(ServerDescriptor)templateDescriptor.descriptor;
assert serverDescriptor != null;
+ boolean isIceBox = serverDescriptor instanceof IceBoxDescriptor;
//
// Build resolver
@@ -565,11 +567,11 @@ class Node extends TreeNode implements PropertySetParent
//
// Create server
//
- return new Server(brandNew, this, serverId, instanceResolver, instanceDescriptor,
- serverDescriptor);
+ return new ServerInstance(brandNew, this, serverId,
+ instanceResolver, instanceDescriptor, isIceBox);
}
- Server createServer(boolean brandNew, ServerDescriptor serverDescriptor)
+ PlainServer createServer(boolean brandNew, ServerDescriptor serverDescriptor)
throws UpdateFailedException
{
//
@@ -582,7 +584,8 @@ class Node extends TreeNode implements PropertySetParent
//
// Create server
//
- return new Server(brandNew, this, serverId, instanceResolver, null, serverDescriptor);
+ return new PlainServer(brandNew, this, serverId,
+ instanceResolver, serverDescriptor);
}
@@ -637,14 +640,13 @@ class Node extends TreeNode implements PropertySetParent
if(_editable.isNew() || server.getEditable().isModified()
|| server.getEditable().isNew())
{
- ServerInstanceDescriptor instanceDescriptor = server.getInstanceDescriptor();
- if(instanceDescriptor != null)
+ if(server instanceof PlainServer)
{
- update.serverInstances.add(instanceDescriptor);
+ update.servers.add(server.getDescriptor());
}
else
{
- update.servers.add(server.getDescriptor());
+ update.serverInstances.add(server.getDescriptor());
}
}
}
@@ -841,22 +843,23 @@ class Node extends TreeNode implements PropertySetParent
//
// Lookup servers
//
- Server server = findServer(serverId);
+ ServerInstance server = (ServerInstance)findServer(serverId);
if(server != null)
{
removeDescriptor(server);
- server.rebuild(instanceResolver, instanceDescriptor, serverDescriptor);
+ server.rebuild(instanceResolver, instanceDescriptor,
+ serverDescriptor instanceof IceBoxDescriptor);
updatedServers.add(server);
_descriptor.serverInstances.add(instanceDescriptor);
}
else
{
- server = new Server(false, this, serverId, instanceResolver, instanceDescriptor,
- serverDescriptor);
+ server = new ServerInstance(false, this, serverId, instanceResolver,
+ instanceDescriptor,
+ serverDescriptor instanceof IceBoxDescriptor);
newServers.add(server);
_descriptor.serverInstances.add(instanceDescriptor);
}
-
}
//
@@ -877,19 +880,19 @@ class Node extends TreeNode implements PropertySetParent
//
// Lookup server
//
- Server server = findServer(serverId);
+ PlainServer server = (PlainServer)findServer(serverId);
if(server != null)
{
removeDescriptor(server);
- server.rebuild(instanceResolver, null, serverDescriptor);
+ server.rebuild(instanceResolver, serverDescriptor);
updatedServers.add(server);
_descriptor.servers.add(serverDescriptor);
}
else
{
- server = new Server(false, this, serverId, instanceResolver, null,
- serverDescriptor);
+ server = new PlainServer(false, this, serverId, instanceResolver,
+ serverDescriptor);
newServers.add(server);
_descriptor.servers.add(serverDescriptor);
}
@@ -909,7 +912,7 @@ class Node extends TreeNode implements PropertySetParent
java.util.Iterator q = serverInstances.iterator();
while(q.hasNext())
{
- Server server = (Server)q.next();
+ ServerInstance server = (ServerInstance)q.next();
if(!updatedServers.contains(server) && !newServers.contains(server))
{
serverSet.add(server);
@@ -917,6 +920,9 @@ class Node extends TreeNode implements PropertySetParent
}
}
+ //
+ // Servers affected by service-template updates
+ //
p = serviceTemplates.iterator();
while(p.hasNext())
{
@@ -925,7 +931,7 @@ class Node extends TreeNode implements PropertySetParent
java.util.Iterator q = serviceInstances.iterator();
while(q.hasNext())
{
- Service service = (Service)q.next();
+ ServiceInstance service = (ServiceInstance)q.next();
Server server = (Server)service.getParent().getParent();
if(!updatedServers.contains(server) && !newServers.contains(server))
{
@@ -942,37 +948,40 @@ class Node extends TreeNode implements PropertySetParent
{
Server server = (Server)p.next();
- ServerInstanceDescriptor instanceDescriptor =
- server.getInstanceDescriptor();
-
- ServerDescriptor serverDescriptor;
- Utils.Resolver instanceResolver;
-
- if(instanceDescriptor == null)
+ if(server instanceof PlainServer)
{
- serverDescriptor = server.getServerDescriptor();
- assert serverDescriptor != null;
- instanceResolver = new Utils.Resolver(_resolver);
+ 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)templateDescriptor.descriptor;
+ ServerDescriptor serverDescriptor = (ServerDescriptor)templateDescriptor.descriptor;
assert serverDescriptor != null;
- instanceResolver =
+ Utils.Resolver instanceResolver =
new Utils.Resolver(_resolver,
instanceDescriptor.parameterValues,
templateDescriptor.parameterDefaults);
- }
-
- String serverId = instanceResolver.substitute(serverDescriptor.id);
- assert serverId.equals(server.getId());
+
+ String serverId = instanceResolver.substitute(serverDescriptor.id);
+ assert serverId.equals(si.getId());
- server.rebuild(instanceResolver, instanceDescriptor, serverDescriptor);
+ si.rebuild(instanceResolver, instanceDescriptor,
+ serverDescriptor instanceof IceBoxDescriptor);
+ }
updatedServers.add(server);
}
@@ -1050,13 +1059,16 @@ class Node extends TreeNode implements PropertySetParent
while(p.hasNext())
{
Server server = (Server)p.next();
- ServerInstanceDescriptor instanceDescriptor
- = server.getInstanceDescriptor();
- if(instanceDescriptor != null &&
- instanceDescriptor.template.equals(template))
+ if(server instanceof ServerInstance)
{
- result.add(server);
+ ServerInstanceDescriptor instanceDescriptor
+ = (ServerInstanceDescriptor)server.getDescriptor();
+
+ if(instanceDescriptor.template.equals(template))
+ {
+ result.add(server);
+ }
}
}
return result;
@@ -1071,18 +1083,22 @@ class Node extends TreeNode implements PropertySetParent
while(p.hasNext())
{
Server server = (Server)p.next();
- ServerInstanceDescriptor instanceDescriptor
- = server.getInstanceDescriptor();
- if(instanceDescriptor != null &&
- instanceDescriptor.template.equals(template))
+ if(server instanceof ServerInstance)
{
- //
- // Remove instance
- //
- removeDescriptor(instanceDescriptor);
- _editable.removeElement(server.getId(), Server.class);
- toRemove.add(server.getId());
+ 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);
+ }
}
}
@@ -1098,20 +1114,25 @@ class Node extends TreeNode implements PropertySetParent
java.util.Iterator p = _servers.iterator();
while(p.hasNext())
{
- Server server = (Server)p.next();
- result.addAll(server.findServiceInstances(template));
+ 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())
{
- Server server = (Server)p.next();
- server.removeServiceInstances(template);
+ Object o = p.next();
+ if(o instanceof PlainServer)
+ {
+ ((PlainServer)o).removeServiceInstances(template);
+ }
}
}
@@ -1131,44 +1152,36 @@ class Node extends TreeNode implements PropertySetParent
void tryAdd(ServerInstanceDescriptor instanceDescriptor,
- ServerDescriptor serverDescriptor,
boolean addDescriptor) throws UpdateFailedException
{
- if(instanceDescriptor != null)
- {
- insertServer(createServer(true, instanceDescriptor),
- true);
- }
- else
+ insertServer(createServer(true, instanceDescriptor), true);
+
+ if(addDescriptor)
{
- insertServer(createServer(true, serverDescriptor),
- true);
+ _descriptor.serverInstances.add(instanceDescriptor);
}
-
+ }
+
+ void tryAdd(ServerDescriptor serverDescriptor,
+ boolean addDescriptor) throws UpdateFailedException
+ {
+ insertServer(createServer(true, serverDescriptor), true);
+
if(addDescriptor)
{
- if(instanceDescriptor != null)
- {
- _descriptor.serverInstances.add(instanceDescriptor);
- }
- else
- {
- _descriptor.servers.add(serverDescriptor);
- }
+ _descriptor.servers.add(serverDescriptor);
}
}
void removeDescriptor(Server server)
{
- ServerInstanceDescriptor instanceDescriptor =
- server.getInstanceDescriptor();
- if(instanceDescriptor != null)
+ if(server instanceof ServerInstance)
{
- removeDescriptor(instanceDescriptor);
+ removeDescriptor((ServerInstanceDescriptor)server.getDescriptor());
}
else
{
- removeDescriptor(server.getServerDescriptor());
+ removeDescriptor((ServerDescriptor)server.getDescriptor());
}
}
@@ -1224,7 +1237,7 @@ class Node extends TreeNode implements PropertySetParent
{
descriptor.id = makeNewChildId(descriptor.id);
- Server server = new Server(this, descriptor.id, null, descriptor);
+ PlainServer server = new PlainServer(this, descriptor.id, descriptor);
try
{
insertServer(server, true);
@@ -1265,11 +1278,8 @@ class Node extends TreeNode implements PropertySetParent
descriptor.parameterValues = new java.util.HashMap();
}
}
-
- ServerDescriptor sd = (ServerDescriptor)
- ((TemplateDescriptor)t.getDescriptor()).descriptor;
- Server server = new Server(this, id, descriptor, sd);
+ ServerInstance server = new ServerInstance(this, id, descriptor);
try
{
insertServer(server, true);
diff --git a/java/src/IceGridGUI/Application/PlainServer.java b/java/src/IceGridGUI/Application/PlainServer.java
new file mode 100755
index 00000000000..17cae6be7cc
--- /dev/null
+++ b/java/src/IceGridGUI/Application/PlainServer.java
@@ -0,0 +1,557 @@
+// **********************************************************************
+//
+// 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 IceGridGUI.Application;
+
+import java.awt.Component;
+
+import javax.swing.Icon;
+import javax.swing.JPopupMenu;
+import javax.swing.JTree;
+
+import javax.swing.tree.TreeCellRenderer;
+import javax.swing.tree.DefaultTreeCellRenderer;
+
+import IceGrid.*;
+import IceGridGUI.*;
+
+class PlainServer extends Communicator implements Server
+{
+ static public ServerDescriptor
+ copyDescriptor(ServerDescriptor sd)
+ {
+ ServerDescriptor copy = (ServerDescriptor)sd.clone();
+
+ copy.adapters = Adapter.copyDescriptors(copy.adapters);
+ copy.dbEnvs = DbEnv.copyDescriptors(copy.dbEnvs);
+
+ copy.propertySet = PropertySet.copyDescriptor(copy.propertySet);
+
+ copy.distrib = (DistributionDescriptor)copy.distrib.clone();
+
+ if(copy instanceof IceBoxDescriptor)
+ {
+ IceBoxDescriptor ib = (IceBoxDescriptor)copy;
+ ib.services = ServiceInstance.copyDescriptors(ib.services);
+ }
+ return copy;
+ }
+
+ static public void shallowRestore(ServerDescriptor from, ServerDescriptor into)
+ {
+ //
+ // When editing a server or server template, if we update properties,
+ // we replace the entire field
+ //
+ into.propertySet = from.propertySet;
+ into.description = from.description;
+ into.id = from.id;
+ into.exe = from.exe;
+ into.options = from.options;
+ into.envs = from.envs;
+ into.activation = from.activation;
+ into.activationTimeout = from.activationTimeout;
+ into.deactivationTimeout = from.deactivationTimeout;
+ into.applicationDistrib = from.applicationDistrib;
+ into.distrib.icepatch = from.distrib.icepatch;
+ into.distrib.directories = from.distrib.directories;
+ }
+
+ static public ServerDescriptor newServerDescriptor()
+ {
+ return new ServerDescriptor(
+ new java.util.LinkedList(),
+ new PropertySetDescriptor(new String[0], new java.util.LinkedList()),
+ new java.util.LinkedList(),
+ "",
+ "NewServer",
+ "",
+ "",
+ new java.util.LinkedList(),
+ new java.util.LinkedList(),
+ "manual",
+ "",
+ "",
+ true,
+ new DistributionDescriptor("", new java.util.LinkedList()),
+ false // Allocatable
+ );
+ }
+
+ static public IceBoxDescriptor newIceBoxDescriptor()
+ {
+ AdapterDescriptor serviceManager = new AdapterDescriptor(
+ "IceBox.ServiceManager",
+ "",
+ "", // direct-adapter by default
+ "",
+ true,
+ true,
+ new java.util.LinkedList(),
+ false // Allocatable
+ );
+
+ java.util.LinkedList adapterList = new java.util.LinkedList();
+ adapterList.add(serviceManager);
+
+ PropertyDescriptor pd =
+ new PropertyDescriptor("IceBox.ServiceManager.Endpoints",
+ "tcp -h 127.0.0.1");
+ java.util.LinkedList properties = new java.util.LinkedList();
+ properties.add(pd);
+
+ return new IceBoxDescriptor(
+ adapterList,
+ new PropertySetDescriptor(new String[0], properties),
+ new java.util.LinkedList(),
+ "",
+ "NewIceBox",
+ "",
+ "",
+ new java.util.LinkedList(),
+ new java.util.LinkedList(),
+ "manual",
+ "",
+ "",
+ true,
+ new DistributionDescriptor("", new java.util.LinkedList()),
+ false, // Allocatable
+ new java.util.LinkedList()
+ );
+ }
+
+ //
+ // Actions
+ //
+ public boolean[] getAvailableActions()
+ {
+ boolean[] actions = new boolean[ACTION_COUNT];
+ actions[COPY] = true;
+
+ Object clipboard = getCoordinator().getClipboard();
+ if(clipboard != null &&
+ (clipboard instanceof ServerDescriptor
+ || clipboard instanceof ServerInstanceDescriptor))
+ {
+ actions[PASTE] = true;
+ }
+
+ actions[DELETE] = true;
+ if(!_ephemeral)
+ {
+ actions[SHOW_VARS] = true;
+ actions[SUBSTITUTE_VARS] = true;
+ }
+
+ actions[NEW_ADAPTER] = !_services.initialized();
+ actions[NEW_SERVICE] = _services.initialized();
+ actions[NEW_DBENV] = !_services.initialized();
+
+ return actions;
+ }
+ public JPopupMenu getPopupMenu()
+ {
+ ApplicationActions actions = getCoordinator().getActionsForPopup();
+ if(_popup == null)
+ {
+ _popup = new JPopupMenu();
+ _popup.add(actions.get(NEW_ADAPTER));
+ _popup.add(actions.get(NEW_DBENV));
+ _popup.add(actions.get(NEW_SERVICE));
+ _popup.add(actions.get(NEW_SERVICE_FROM_TEMPLATE));
+ }
+ actions.setTarget(this);
+ return _popup;
+ }
+ public void copy()
+ {
+ getCoordinator().setClipboard(copyDescriptor(_descriptor));
+ getCoordinator().getActionsForMenu().get(PASTE).setEnabled(true);
+ }
+
+ public Editor getEditor()
+ {
+ if(_editor == null)
+ {
+ _editor = (PlainServerEditor)getRoot().getEditor(PlainServerEditor.class, this);
+ }
+ _editor.show(this);
+ return _editor;
+ }
+
+ protected Editor createEditor()
+ {
+ return new PlainServerEditor(getCoordinator().getMainFrame());
+ }
+
+ public Component getTreeCellRendererComponent(
+ JTree tree,
+ Object value,
+ boolean sel,
+ boolean expanded,
+ boolean leaf,
+ int row,
+ boolean hasFocus)
+ {
+ if(_cellRenderer == null)
+ {
+ //
+ // Initialization
+ //
+ _cellRenderer = new DefaultTreeCellRenderer();
+
+ _serverIcon = Utils.getIcon("/icons/16x16/server_inactive.png");
+ _iceboxServerIcon = Utils.getIcon("/icons/16x16/icebox_server_inactive.png");
+ }
+
+ boolean icebox = _descriptor instanceof IceBoxDescriptor;
+
+ if(expanded)
+ {
+ _cellRenderer.setOpenIcon(icebox ? _iceboxServerIcon : _serverIcon);
+ }
+ else
+ {
+ _cellRenderer.setClosedIcon(icebox ? _iceboxServerIcon : _serverIcon);
+ }
+ return _cellRenderer.getTreeCellRendererComponent(
+ tree, value, sel, expanded, leaf, row, hasFocus);
+ }
+
+ public void destroy()
+ {
+ Node node = (Node)_parent;
+
+ if(_ephemeral)
+ {
+ node.removeServer(this);
+ }
+ else
+ {
+ node.removeDescriptor(_descriptor);
+ node.removeServer(this);
+ node.getEditable().removeElement(_id, _editable, Server.class);
+ getRoot().updated();
+ }
+ }
+
+ public Object getDescriptor()
+ {
+ return _descriptor;
+ }
+
+ public Object saveDescriptor()
+ {
+ ServerDescriptor clone = (ServerDescriptor)_descriptor.clone();
+ clone.distrib = (DistributionDescriptor)clone.distrib.clone();
+ return clone;
+ }
+
+ public void restoreDescriptor(Object savedDescriptor)
+ {
+ shallowRestore((ServerDescriptor)savedDescriptor, _descriptor);
+ }
+
+ //
+ // Builds the server and all its sub-tree
+ //
+ PlainServer(boolean brandNew, TreeNode parent, String serverId,
+ Utils.Resolver resolver, ServerDescriptor serverDescriptor)
+ throws UpdateFailedException
+ {
+ super(parent, serverId);
+ _ephemeral = false;
+ _editable = new Editable(brandNew);
+ rebuild(resolver, serverDescriptor);
+ }
+
+ PlainServer(TreeNode parent, String serverId, ServerDescriptor serverDescriptor)
+ {
+ super(parent, serverId);
+ _ephemeral = true;
+ _editable = null;
+ try
+ {
+ rebuild(null, serverDescriptor);
+ }
+ catch(UpdateFailedException e)
+ {
+ assert false;
+ }
+ }
+
+ static java.util.List createAttributes(ServerDescriptor descriptor)
+ {
+ java.util.List attributes = new java.util.LinkedList();
+ attributes.add(createAttribute("id", descriptor.id));
+ if(descriptor.activation.length() > 0)
+ {
+ attributes.add(createAttribute("activation",
+ descriptor.activation));
+ }
+ if(descriptor.activationTimeout.length() > 0)
+ {
+ attributes.add(createAttribute("activation-timeout",
+ descriptor.activationTimeout));
+ }
+ if(!descriptor.applicationDistrib)
+ {
+ attributes.add(createAttribute("application-distrib", "false"));
+ }
+ if(descriptor.deactivationTimeout.length() > 0)
+ {
+ attributes.add(createAttribute("deactivation-timeout",
+ descriptor.deactivationTimeout));
+ }
+ if(descriptor.exe.length() > 0)
+ {
+ attributes.add(createAttribute("exe", descriptor.exe));
+ }
+ if(descriptor.pwd.length() > 0)
+ {
+ attributes.add(createAttribute("pwd", descriptor.pwd));
+ }
+
+ return attributes;
+ }
+
+ static void writeOptions(XMLWriter writer, java.util.List options)
+ throws java.io.IOException
+ {
+ java.util.Iterator p = options.iterator();
+ while(p.hasNext())
+ {
+ writer.writeElement("option", (String)p.next());
+ }
+ }
+
+ static void writeEnvs(XMLWriter writer, java.util.List envs)
+ throws java.io.IOException
+ {
+ java.util.Iterator p = envs.iterator();
+ while(p.hasNext())
+ {
+ writer.writeElement("env", (String)p.next());
+ }
+ }
+
+ void write(XMLWriter writer) throws java.io.IOException
+ {
+ if(!_ephemeral)
+ {
+ if(isIceBox())
+ {
+ writer.writeStartTag("icebox",
+ createAttributes(_descriptor));
+
+ if(_descriptor.description.length() > 0)
+ {
+ writer.writeElement("description", _descriptor.description);
+ }
+ writeOptions(writer, _descriptor.options);
+ writeEnvs(writer, _descriptor.envs);
+
+ writePropertySet(writer, "", _descriptor.propertySet);
+ writeDistribution(writer, _descriptor.distrib);
+
+ _adapters.write(writer);
+ _services.write(writer);
+ writer.writeEndTag("icebox");
+ }
+ else
+ {
+ writer.writeStartTag("server", createAttributes(_descriptor));
+
+ if(_descriptor.description.length() > 0)
+ {
+ writer.writeElement("description", _descriptor.description);
+ }
+
+ writeOptions(writer, _descriptor.options);
+ writeEnvs(writer, _descriptor.envs);
+
+ writePropertySet(writer, "", _descriptor.propertySet);
+ writeDistribution(writer, _descriptor.distrib);
+
+ _adapters.write(writer);
+ _dbEnvs.write(writer);
+ writer.writeEndTag("server");
+ }
+ }
+ }
+
+
+ boolean isIceBox()
+ {
+ return _descriptor instanceof IceBoxDescriptor;
+ }
+
+ public Object rebuild(java.util.List editables) throws UpdateFailedException
+ {
+ Node node = (Node)_parent;
+ PlainServer newServer = node.createServer(false, _descriptor);
+
+ Object backup = null;
+
+ if(_id.equals(newServer.getId()))
+ {
+ //
+ // A simple update. We can't simply rebuild server because
+ // we need to keep a backup
+ //
+ if(_editable.isModified())
+ {
+ newServer.getEditable().markModified();
+ }
+
+ node.removeServer(this);
+ try
+ {
+ node.insertServer(newServer, true);
+ }
+ catch(UpdateFailedException e)
+ {
+ assert false; // impossible, we just removed a child with
+ // this id
+ }
+ }
+ else
+ {
+ //
+ // Typically, the id uses a variable whose definition changed
+ //
+ newServer.getEditable().markNew();
+ node.removeServer(this);
+ backup = node.getEditable().save();
+ node.getEditable().removeElement(_id, _editable, Server.class);
+
+ try
+ {
+ node.insertServer(newServer, true);
+ }
+ catch(UpdateFailedException e)
+ {
+ restore(backup);
+ throw e;
+ }
+ }
+
+ return backup;
+ }
+
+ public void restore(Object backupObj)
+ {
+ Editable backup = (Editable)backupObj;
+ Node node = (Node)_parent;
+
+ if(backup != null)
+ {
+ node.getEditable().restore(backup);
+ }
+
+ TreeNode badServer = node.findChildWithDescriptor(_descriptor);
+
+ if(badServer != null)
+ {
+ node.removeServer(badServer);
+ }
+ try
+ {
+ node.insertServer(this, true);
+ }
+ catch(UpdateFailedException e)
+ {
+ assert false; // impossible
+ }
+ }
+
+ void setServerDescriptor(ServerDescriptor descriptor)
+ {
+ _descriptor = descriptor;
+ }
+
+ //
+ // Update the server and all its subtree
+ //
+ void rebuild(Utils.Resolver resolver,
+ ServerDescriptor serverDescriptor) throws UpdateFailedException
+ {
+ assert serverDescriptor != null;
+ _resolver = resolver;
+ _descriptor = serverDescriptor;
+
+ _adapters.clear();
+ _dbEnvs.clear();
+ _services.clear();
+
+ if(!_ephemeral)
+ {
+ _adapters.init(_descriptor.adapters);
+ if(_descriptor instanceof IceBoxDescriptor)
+ {
+ IceBoxDescriptor iceBoxDescriptor = (IceBoxDescriptor)_descriptor;
+ _services.init(iceBoxDescriptor.services);
+
+ //
+ // IceBox has not dbEnv
+ //
+ assert _descriptor.dbEnvs.size() == 0;
+ }
+ else
+ {
+ _dbEnvs.init(_descriptor.dbEnvs);
+ }
+ }
+ }
+
+ CommunicatorDescriptor getCommunicatorDescriptor()
+ {
+ return _descriptor;
+ }
+
+ Utils.Resolver getResolver()
+ {
+ return _resolver;
+ }
+
+ public Editable getEditable()
+ {
+ return _editable;
+ }
+
+ Editable getEnclosingEditable()
+ {
+ return _editable;
+ }
+
+ java.util.List findInstances(boolean includeTemplate)
+ {
+ java.util.List result = new java.util.LinkedList();
+ result.add(this);
+ return result;
+ }
+
+ public boolean isEphemeral()
+ {
+ return _ephemeral;
+ }
+
+ private ServerDescriptor _descriptor;
+ private final boolean _ephemeral;
+
+ private PlainServerEditor _editor;
+
+ private Utils.Resolver _resolver;
+ private Editable _editable;
+
+ static private DefaultTreeCellRenderer _cellRenderer;
+ static private Icon _serverIcon;
+ static private Icon _iceboxServerIcon;
+
+ static private JPopupMenu _popup;
+}
diff --git a/java/src/IceGridGUI/Application/PlainServerEditor.java b/java/src/IceGridGUI/Application/PlainServerEditor.java
new file mode 100755
index 00000000000..96f4a4645b5
--- /dev/null
+++ b/java/src/IceGridGUI/Application/PlainServerEditor.java
@@ -0,0 +1,73 @@
+// **********************************************************************
+//
+// 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 IceGridGUI.Application;
+
+import javax.swing.JFrame;
+
+import com.jgoodies.forms.builder.DefaultFormBuilder;
+
+import IceGrid.*;
+import IceGridGUI.*;
+
+class PlainServerEditor extends AbstractServerEditor
+{
+ protected void writeDescriptor()
+ {
+ _subEditor.writeDescriptor();
+ }
+
+ protected boolean isSimpleUpdate()
+ {
+ return _subEditor.isSimpleUpdate();
+ }
+
+ PlainServerEditor(JFrame parentFrame)
+ {
+ _subEditor = new ServerSubEditor(this, parentFrame);
+ }
+
+ //
+ // From Editor:
+ //
+ Utils.Resolver getDetailResolver()
+ {
+ if(_target.getCoordinator().substitute())
+ {
+ return _target.getResolver();
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+ protected void appendProperties(DefaultFormBuilder builder)
+ {
+ _subEditor.appendProperties(builder);
+ }
+
+ Object getSubDescriptor()
+ {
+ return _target.getDescriptor();
+ }
+
+ void show(PlainServer server)
+ {
+ detectUpdates(false);
+ _target = server;
+
+ _subEditor.show(true);
+
+ _applyButton.setEnabled(server.isEphemeral());
+ _discardButton.setEnabled(server.isEphemeral());
+ detectUpdates(true);
+ }
+
+ private ServerSubEditor _subEditor;
+}
diff --git a/java/src/IceGridGUI/Application/PlainService.java b/java/src/IceGridGUI/Application/PlainService.java
new file mode 100755
index 00000000000..c350fa4d9e1
--- /dev/null
+++ b/java/src/IceGridGUI/Application/PlainService.java
@@ -0,0 +1,316 @@
+// **********************************************************************
+//
+// 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 IceGridGUI.Application;
+
+import java.awt.Component;
+import javax.swing.JPopupMenu;
+import javax.swing.JTree;
+import javax.swing.tree.DefaultTreeCellRenderer;
+
+import IceGrid.*;
+import IceGridGUI.*;
+
+class PlainService extends Communicator implements Service, Cloneable
+{
+ static public ServiceDescriptor
+ copyDescriptor(ServiceDescriptor sd)
+ {
+ ServiceDescriptor copy = (ServiceDescriptor)sd.clone();
+ copy.adapters = Adapter.copyDescriptors(copy.adapters);
+ copy.dbEnvs = DbEnv.copyDescriptors(copy.dbEnvs);
+ copy.propertySet = PropertySet.copyDescriptor(copy.propertySet);
+ return copy;
+ }
+
+ public Component getTreeCellRendererComponent(
+ JTree tree,
+ Object value,
+ boolean sel,
+ boolean expanded,
+ boolean leaf,
+ int row,
+ boolean hasFocus)
+ {
+ if(_cellRenderer == null)
+ {
+ _cellRenderer = new DefaultTreeCellRenderer();
+ _cellRenderer.setOpenIcon(
+ Utils.getIcon("/icons/16x16/service.png"));
+
+ _cellRenderer.setClosedIcon(
+ Utils.getIcon("/icons/16x16/service.png"));
+ }
+
+ return _cellRenderer.getTreeCellRendererComponent(
+ tree, value, sel, expanded, leaf, row, hasFocus);
+ }
+
+ //
+ // Actions
+ //
+ public boolean[] getAvailableActions()
+ {
+ boolean[] actions = new boolean[ACTION_COUNT];
+ actions[COPY] = true;
+
+ if(((TreeNode)_parent).getAvailableActions()[PASTE])
+ {
+ actions[PASTE] = true;
+ }
+
+ actions[DELETE] = true;
+ actions[NEW_ADAPTER] = !_ephemeral;
+ actions[NEW_DBENV] = !_ephemeral;
+
+ if(_parent instanceof Server && !_ephemeral)
+ {
+ actions[SHOW_VARS] = true;
+ actions[SUBSTITUTE_VARS] = true;
+ }
+
+ actions[MOVE_UP] = canMove(true);
+ actions[MOVE_DOWN] = canMove(false);
+ return actions;
+ }
+ public JPopupMenu getPopupMenu()
+ {
+ ApplicationActions actions = getCoordinator().getActionsForPopup();
+ if(_popup == null)
+ {
+ _popup = new JPopupMenu();
+ _popup.add(actions.get(NEW_ADAPTER));
+ _popup.add(actions.get(NEW_DBENV));
+ _popup.addSeparator();
+ _popup.add(actions.get(MOVE_UP));
+ _popup.add(actions.get(MOVE_DOWN));
+ }
+ actions.setTarget(this);
+ return _popup;
+ }
+ public void copy()
+ {
+ getCoordinator().setClipboard(ServiceInstance.copyDescriptor(_descriptor));
+ getCoordinator().getActionsForMenu().get(PASTE).setEnabled(true);
+ }
+
+ public void moveUp()
+ {
+ move(true);
+ }
+ public void moveDown()
+ {
+ move(false);
+ }
+
+ public Object getDescriptor()
+ {
+ return _descriptor;
+ }
+
+ public Object saveDescriptor()
+ {
+ return _descriptor.clone();
+ }
+
+ public void restoreDescriptor(Object savedDescriptor)
+ {
+ ServiceInstanceDescriptor sid = (ServiceInstanceDescriptor)savedDescriptor;
+
+ _descriptor.descriptor.propertySet = sid.descriptor.propertySet;
+ _descriptor.descriptor.description = sid.descriptor.description;
+ _descriptor.descriptor.name = sid.descriptor.name;
+ _descriptor.descriptor.entry = sid.descriptor.entry;
+ }
+
+ public void destroy()
+ {
+ ((Communicator)_parent).getServices().destroyChild(this);
+ }
+
+ public Editor getEditor()
+ {
+ if(_editor == null)
+ {
+ _editor = (PlainServiceEditor)getRoot().getEditor(PlainServiceEditor.class, this);
+ }
+ _editor.show(this);
+ return _editor;
+ }
+
+ protected Editor createEditor()
+ {
+ return new PlainServiceEditor(getCoordinator().getMainFrame());
+ }
+
+ Editable getEnclosingEditable()
+ {
+ return ((Communicator)_parent).getEnclosingEditable();
+ }
+
+ private boolean canMove(boolean up)
+ {
+ if(_ephemeral)
+ {
+ return false;
+ }
+ else
+ {
+ return ((Communicator)_parent).getServices().canMove(this, up);
+ }
+ }
+
+ private void move(boolean up)
+ {
+ assert canMove(up);
+ ((Communicator)_parent).getServices().move(this, up);
+ }
+
+
+ java.util.List findInstances(boolean includeTemplate)
+ {
+ java.util.List result = new java.util.LinkedList();
+
+ //
+ // First find all instances of the enclosing Communicator, including
+ // the ServerTemplate itself (if that's my parent)
+ //
+ java.util.List communicatorList = ((Communicator)_parent).findInstances(true);
+
+ java.util.Iterator p = communicatorList.iterator();
+ while(p.hasNext())
+ {
+ Services services = ((Communicator)p.next()).getServices();
+ Service service = (Service)services.findChildWithDescriptor(_descriptor);
+ assert service != null;
+ result.add(service);
+ }
+ return result;
+ }
+
+ public Object rebuild(java.util.List editables)
+ throws UpdateFailedException
+ {
+ Communicator communicator = (Communicator)_parent;
+ Services services = communicator.getServices();
+ PlainService newService = null;
+
+ newService = (PlainService)services.createChild(_descriptor);
+
+ Object backup = null;
+
+ try
+ {
+ backup = (PlainService)clone();
+ }
+ catch(CloneNotSupportedException e)
+ {
+ assert false;
+ }
+
+ reset(newService);
+ getRoot().getTreeModel().nodeChanged(this);
+ return backup;
+ }
+
+ public void restore(Object backupObj)
+ {
+ reset((PlainService)backupObj);
+ getRoot().getTreeModel().nodeChanged(this);
+ }
+
+ private void reset(PlainService from)
+ {
+ _id = from._id;
+ assert _parent == from._parent;
+
+ _adapters = from._adapters;
+ _dbEnvs = from._dbEnvs;
+ _services = from._services;
+ _childListArray = from._childListArray;
+
+ _descriptor = from._descriptor;
+ _resolver = from._resolver;
+ }
+
+ PlainService(Communicator parent,
+ String name,
+ ServiceInstanceDescriptor descriptor,
+ Utils.Resolver resolver)
+ throws UpdateFailedException
+ {
+ super(parent, name);
+ _descriptor = descriptor;
+ _ephemeral = false;
+ _resolver = resolver;
+
+ _adapters.init(_descriptor.descriptor.adapters);
+ _dbEnvs.init(_descriptor.descriptor.dbEnvs);
+ }
+
+ //
+ // New temporary object
+ //
+ PlainService(Communicator parent, ServiceInstanceDescriptor descriptor)
+ {
+ super(parent, descriptor.descriptor.name);
+ _descriptor = descriptor;
+ _ephemeral = true;
+ }
+
+ static java.util.List createAttributes(ServiceDescriptor descriptor)
+ {
+ java.util.List attributes = new java.util.LinkedList();
+ attributes.add(createAttribute("name", descriptor.name));
+ attributes.add(createAttribute("entry", descriptor.entry));
+ return attributes;
+ }
+
+ void write(XMLWriter writer) throws java.io.IOException
+ {
+ if(!_ephemeral)
+ {
+ writer.writeStartTag("service", createAttributes(_descriptor.descriptor));
+
+ if(_descriptor.descriptor.description.length() > 0)
+ {
+ writer.writeElement("description", _descriptor.descriptor.description);
+ }
+
+ writePropertySet(writer, "", _descriptor.descriptor.propertySet);
+ _adapters.write(writer);
+ _dbEnvs.write(writer);
+ writer.writeEndTag("service");
+ }
+ }
+
+ CommunicatorDescriptor getCommunicatorDescriptor()
+ {
+ return _descriptor.descriptor;
+ }
+
+ Utils.Resolver getResolver()
+ {
+ return _resolver;
+ }
+
+ public boolean isEphemeral()
+ {
+ return _ephemeral;
+ }
+
+ private ServiceInstanceDescriptor _descriptor;
+
+ private final boolean _ephemeral;
+
+ private Utils.Resolver _resolver;
+ private PlainServiceEditor _editor;
+
+ static private DefaultTreeCellRenderer _cellRenderer;
+ static private JPopupMenu _popup;
+}
diff --git a/java/src/IceGridGUI/Application/PlainServiceEditor.java b/java/src/IceGridGUI/Application/PlainServiceEditor.java
new file mode 100755
index 00000000000..56fe95b26a2
--- /dev/null
+++ b/java/src/IceGridGUI/Application/PlainServiceEditor.java
@@ -0,0 +1,87 @@
+// **********************************************************************
+//
+// 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 IceGridGUI.Application;
+
+import javax.swing.JFrame;
+
+import com.jgoodies.forms.builder.DefaultFormBuilder;
+
+import IceGrid.*;
+import IceGridGUI.*;
+
+class PlainServiceEditor extends CommunicatorChildEditor
+{
+ PlainServiceEditor(JFrame parentFrame)
+ {
+ _subEditor = new ServiceSubEditor(this, parentFrame);
+ }
+
+ //
+ // From Editor:
+ //
+ Utils.Resolver getDetailResolver()
+ {
+ PlainService service = (PlainService)_target;
+ if(service.getCoordinator().substitute())
+ {
+ return service.getResolver();
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+ protected void appendProperties(DefaultFormBuilder builder)
+ {
+ _subEditor.appendProperties(builder);
+ }
+
+ protected void buildPropertiesPanel()
+ {
+ super.buildPropertiesPanel();
+ _propertiesPanel.setName("Service Properties");
+ }
+
+
+ void writeDescriptor()
+ {
+ _subEditor.writeDescriptor();
+ }
+
+ boolean isSimpleUpdate()
+ {
+ return _subEditor.isSimpleUpdate();
+ }
+
+ Communicator.ChildList getChildList()
+ {
+ return ((Communicator)_target.getParent()).getServices();
+ }
+
+ Object getSubDescriptor()
+ {
+ ServiceInstanceDescriptor sid = (ServiceInstanceDescriptor)_target.getDescriptor();
+ return sid.descriptor;
+ }
+
+ void show(PlainService service)
+ {
+ detectUpdates(false);
+ _target = service;
+
+ _subEditor.show(true);
+
+ _applyButton.setEnabled(service.isEphemeral());
+ _discardButton.setEnabled(service.isEphemeral());
+ detectUpdates(true);
+ }
+
+ private ServiceSubEditor _subEditor;
+}
diff --git a/java/src/IceGridGUI/Application/PropertySet.java b/java/src/IceGridGUI/Application/PropertySet.java
index f564a68e699..023dc0d11ee 100755
--- a/java/src/IceGridGUI/Application/PropertySet.java
+++ b/java/src/IceGridGUI/Application/PropertySet.java
@@ -86,7 +86,7 @@ class PropertySet extends TreeNode
if(!_ephemeral)
{
parent.removeDescriptor(_id);
- parent.getEditable().removeElement(_id, PropertySet.class);
+ parent.getEditable().removeElement(_id, _editable, PropertySet.class);
getRoot().updated();
}
}
diff --git a/java/src/IceGridGUI/Application/ReplicaGroup.java b/java/src/IceGridGUI/Application/ReplicaGroup.java
index 78b06f96032..283e7c306b0 100755
--- a/java/src/IceGridGUI/Application/ReplicaGroup.java
+++ b/java/src/IceGridGUI/Application/ReplicaGroup.java
@@ -85,7 +85,7 @@ class ReplicaGroup extends TreeNode
{
replicaGroups.removeDescriptor(_descriptor);
replicaGroups.getEditable().
- removeElement(_id, ReplicaGroup.class);
+ removeElement(_id, _editable, ReplicaGroup.class);
getRoot().updated();
}
}
diff --git a/java/src/IceGridGUI/Application/ReplicaGroupEditor.java b/java/src/IceGridGUI/Application/ReplicaGroupEditor.java
index 9a25675d3a3..a784563bea3 100755
--- a/java/src/IceGridGUI/Application/ReplicaGroupEditor.java
+++ b/java/src/IceGridGUI/Application/ReplicaGroupEditor.java
@@ -135,7 +135,8 @@ class ReplicaGroupEditor extends Editor
// replaced by brand new ReplicaGroup
replicaGroups.getEditable().
- removeElement(replicaGroup.getId(), ReplicaGroup.class);
+ removeElement(replicaGroup.getId(),
+ replicaGroup.getEditable(), ReplicaGroup.class);
_target = replicaGroups.findChildWithDescriptor(descriptor);
root.updated();
diff --git a/java/src/IceGridGUI/Application/Root.java b/java/src/IceGridGUI/Application/Root.java
index 558a56c3a1c..1ec9bb9c7f1 100755
--- a/java/src/IceGridGUI/Application/Root.java
+++ b/java/src/IceGridGUI/Application/Root.java
@@ -241,7 +241,7 @@ public class Root extends ListTreeNode
Server server = node.findServer(serverId);
if(server != null)
{
- target = server;
+ target = (TreeNode)server;
}
}
setSelectedNode(target);
diff --git a/java/src/IceGridGUI/Application/Server.java b/java/src/IceGridGUI/Application/Server.java
index ddf54c910f9..510ac4f41f2 100755
--- a/java/src/IceGridGUI/Application/Server.java
+++ b/java/src/IceGridGUI/Application/Server.java
@@ -8,729 +8,12 @@
// **********************************************************************
package IceGridGUI.Application;
-import java.awt.Component;
+interface Server extends TemplateInstance
+{
+ Editable getEditable();
-import javax.swing.Icon;
-import javax.swing.JPopupMenu;
-import javax.swing.JTree;
+ Object getDescriptor();
-import javax.swing.tree.TreeCellRenderer;
-import javax.swing.tree.DefaultTreeCellRenderer;
-
-import IceGrid.*;
-import IceGridGUI.*;
-
-//
-// We can have 4 kinds of servers:
-// - Plain server (no template)
-// - Icebox server (no template)
-// - Server instance
-// - Icebox instance
-//
-class Server extends Communicator implements TemplateInstance
-{
- static public ServerDescriptor
- copyDescriptor(ServerDescriptor sd)
- {
- ServerDescriptor copy = (ServerDescriptor)sd.clone();
-
- copy.adapters = Adapter.copyDescriptors(copy.adapters);
- copy.dbEnvs = DbEnv.copyDescriptors(copy.dbEnvs);
-
- copy.propertySet = PropertySet.copyDescriptor(copy.propertySet);
-
- copy.distrib = (DistributionDescriptor)copy.distrib.clone();
-
- if(copy instanceof IceBoxDescriptor)
- {
- IceBoxDescriptor ib = (IceBoxDescriptor)copy;
- ib.services = Service.copyDescriptors(ib.services);
- }
- return copy;
- }
-
- static public ServerInstanceDescriptor
- copyDescriptor(ServerInstanceDescriptor sid)
- {
- return (ServerInstanceDescriptor)sid.clone();
- }
-
- static public void shallowRestore(ServerDescriptor from, ServerDescriptor into)
- {
- //
- // When editing a server or server template, if we update properties,
- // we replace the entire field
- //
-
- into.propertySet = from.propertySet;
- into.description = from.description;
- into.id = from.id;
- into.exe = from.exe;
- into.options = from.options;
- into.envs = from.envs;
- into.activation = from.activation;
- into.activationTimeout = from.activationTimeout;
- into.deactivationTimeout = from.deactivationTimeout;
- into.applicationDistrib = from.applicationDistrib;
- into.distrib.icepatch = from.distrib.icepatch;
- into.distrib.directories = from.distrib.directories;
- }
-
- static public ServerDescriptor newServerDescriptor()
- {
- return new ServerDescriptor(
- new java.util.LinkedList(),
- new PropertySetDescriptor(new String[0], new java.util.LinkedList()),
- new java.util.LinkedList(),
- "",
- "NewServer",
- "",
- "",
- new java.util.LinkedList(),
- new java.util.LinkedList(),
- "manual",
- "",
- "",
- true,
- new DistributionDescriptor("", new java.util.LinkedList()),
- false // Allocatable
- );
- }
-
- static public IceBoxDescriptor newIceBoxDescriptor()
- {
- AdapterDescriptor serviceManager = new AdapterDescriptor(
- "IceBox.ServiceManager",
- "",
- "", // direct-adapter by default
- "",
- true,
- true,
- new java.util.LinkedList(),
- false // Allocatable
- );
-
- java.util.LinkedList adapterList = new java.util.LinkedList();
- adapterList.add(serviceManager);
-
- PropertyDescriptor pd =
- new PropertyDescriptor("IceBox.ServiceManager.Endpoints",
- "tcp -h 127.0.0.1");
- java.util.LinkedList properties = new java.util.LinkedList();
- properties.add(pd);
-
- return new IceBoxDescriptor(
- adapterList,
- new PropertySetDescriptor(new String[0], properties),
- new java.util.LinkedList(),
- "",
- "NewIceBox",
- "",
- "",
- new java.util.LinkedList(),
- new java.util.LinkedList(),
- "manual",
- "",
- "",
- true,
- new DistributionDescriptor("", new java.util.LinkedList()),
- false, // Allocatable
- new java.util.LinkedList()
- );
- }
-
- //
- // Actions
- //
- public boolean[] getAvailableActions()
- {
- boolean[] actions = new boolean[ACTION_COUNT];
- actions[COPY] = true;
-
- Object clipboard = getCoordinator().getClipboard();
- if(clipboard != null &&
- (clipboard instanceof ServerDescriptor
- || clipboard instanceof ServerInstanceDescriptor))
- {
- actions[PASTE] = true;
- }
-
- actions[DELETE] = true;
- if(!_ephemeral)
- {
- actions[SHOW_VARS] = true;
- actions[SUBSTITUTE_VARS] = true;
- }
-
- if(_instanceDescriptor == null)
- {
- actions[NEW_ADAPTER] = !_services.initialized();
- actions[NEW_SERVICE] = _services.initialized();
- actions[NEW_DBENV] = !_services.initialized();
- }
-
- return actions;
- }
- public JPopupMenu getPopupMenu()
- {
- ApplicationActions actions = getCoordinator().getActionsForPopup();
- if(_popup == null)
- {
- _popup = new JPopupMenu();
- _popup.add(actions.get(NEW_ADAPTER));
- _popup.add(actions.get(NEW_DBENV));
- _popup.add(actions.get(NEW_SERVICE));
- _popup.add(actions.get(NEW_SERVICE_FROM_TEMPLATE));
- }
- actions.setTarget(this);
- return _popup;
- }
- public void copy()
- {
- if(_instanceDescriptor != null)
- {
- getCoordinator().setClipboard(copyDescriptor(_instanceDescriptor));
- }
- else
- {
- getCoordinator().setClipboard(copyDescriptor(_serverDescriptor));
- }
- getCoordinator().getActionsForMenu().get(PASTE).setEnabled(true);
- }
-
- public Editor getEditor()
- {
- //
- // Pick the appropriate editor
- //
- Editor editor = null;
- if(_instanceDescriptor == null)
- {
- if(_serverEditor == null)
- {
- _serverEditor = (ServerEditor)getRoot().getEditor(ServerEditor.class, this);
- }
- _serverEditor.show(this);
- return _serverEditor;
- }
- else
- {
- if(_serverInstanceEditor == null)
- {
- _serverInstanceEditor = (ServerInstanceEditor)
- getRoot().getEditor(ServerInstanceEditor.class, this);
- }
- _serverInstanceEditor.show(this);
- return _serverInstanceEditor;
- }
- }
-
- protected Editor createEditor()
- {
- if(_instanceDescriptor == null)
- {
- return new ServerEditor(getCoordinator().getMainFrame());
- }
- else
- {
- return new ServerInstanceEditor(getCoordinator().getMainFrame());
- }
- }
-
-
- public Component getTreeCellRendererComponent(
- JTree tree,
- Object value,
- boolean sel,
- boolean expanded,
- boolean leaf,
- int row,
- boolean hasFocus)
- {
- if(_cellRenderer == null)
- {
- //
- // Initialization
- //
- _cellRenderer = new DefaultTreeCellRenderer();
-
- _serverIcon = Utils.getIcon("/icons/16x16/server_inactive.png");
- _iceboxServerIcon = Utils.getIcon("/icons/16x16/icebox_server_inactive.png");
- }
-
- boolean icebox = _serverDescriptor instanceof IceBoxDescriptor;
-
- if(expanded)
- {
- _cellRenderer.setOpenIcon(icebox ? _iceboxServerIcon : _serverIcon);
- }
- else
- {
- _cellRenderer.setClosedIcon(icebox ? _iceboxServerIcon : _serverIcon);
- }
- return _cellRenderer.getTreeCellRendererComponent(
- tree, value, sel, expanded, leaf, row, hasFocus);
- }
-
- public void destroy()
- {
- Node node = (Node)_parent;
-
- if(_ephemeral)
- {
- node.removeServer(this);
- }
- else
- {
- if(_instanceDescriptor != null)
- {
- node.removeDescriptor(_instanceDescriptor);
- }
- else
- {
- node.removeDescriptor(_serverDescriptor);
- }
- node.removeServer(this);
- node.getEditable().removeElement(_id, Server.class);
- getRoot().updated();
- }
- }
-
-
- public Object getDescriptor()
- {
- if(_instanceDescriptor != null)
- {
- return _instanceDescriptor;
- }
- else
- {
- return _serverDescriptor;
- }
- }
-
- public Object saveDescriptor()
- {
- if(_instanceDescriptor != null)
- {
- return _instanceDescriptor.clone();
- }
- else
- {
- ServerDescriptor clone = (ServerDescriptor)_serverDescriptor.clone();
- clone.distrib = (DistributionDescriptor)clone.distrib.clone();
- return clone;
- }
- }
-
- public void restoreDescriptor(Object savedDescriptor)
- {
- if(_instanceDescriptor != null)
- {
- ServerInstanceDescriptor copy = (ServerInstanceDescriptor)savedDescriptor;
-
- _instanceDescriptor.template = copy.template;
- _instanceDescriptor.parameterValues = copy.parameterValues;
- _instanceDescriptor.propertySet = copy.propertySet;
-
- ServerTemplate t = getRoot().findServerTemplate(_instanceDescriptor.template);
- _serverDescriptor = (ServerDescriptor)
- ((TemplateDescriptor)t.getDescriptor()).descriptor;
- }
- else
- {
- shallowRestore((ServerDescriptor)savedDescriptor, _serverDescriptor);
- }
- }
-
- //
- // Builds the server and all its sub-tree
- //
- Server(boolean brandNew, TreeNode parent, String serverId,
- Utils.Resolver resolver, ServerInstanceDescriptor instanceDescriptor,
- ServerDescriptor serverDescriptor) throws UpdateFailedException
- {
- super(parent, serverId);
- _ephemeral = false;
- _editable = new Editable(brandNew);
- rebuild(resolver, instanceDescriptor, serverDescriptor);
- }
-
- Server(TreeNode parent, String serverId, ServerInstanceDescriptor instanceDescriptor,
- ServerDescriptor serverDescriptor)
- {
- super(parent, serverId);
- _ephemeral = true;
- _editable = null;
- try
- {
- rebuild(null, instanceDescriptor, serverDescriptor);
- }
- catch(UpdateFailedException e)
- {
- assert false;
- }
- }
-
-
- static java.util.List createAttributes(ServerDescriptor descriptor)
- {
- java.util.List attributes = new java.util.LinkedList();
- attributes.add(createAttribute("id", descriptor.id));
- if(descriptor.activation.length() > 0)
- {
- attributes.add(createAttribute("activation",
- descriptor.activation));
- }
- if(descriptor.activationTimeout.length() > 0)
- {
- attributes.add(createAttribute("activation-timeout",
- descriptor.activationTimeout));
- }
- if(!descriptor.applicationDistrib)
- {
- attributes.add(createAttribute("application-distrib", "false"));
- }
- if(descriptor.deactivationTimeout.length() > 0)
- {
- attributes.add(createAttribute("deactivation-timeout",
- descriptor.deactivationTimeout));
- }
- if(descriptor.exe.length() > 0)
- {
- attributes.add(createAttribute("exe", descriptor.exe));
- }
- if(descriptor.pwd.length() > 0)
- {
- attributes.add(createAttribute("pwd", descriptor.pwd));
- }
-
- return attributes;
- }
-
- static void writeOptions(XMLWriter writer, java.util.List options)
- throws java.io.IOException
- {
- java.util.Iterator p = options.iterator();
- while(p.hasNext())
- {
- writer.writeElement("option", (String)p.next());
- }
- }
-
- static void writeEnvs(XMLWriter writer, java.util.List envs)
- throws java.io.IOException
- {
- java.util.Iterator p = envs.iterator();
- while(p.hasNext())
- {
- writer.writeElement("env", (String)p.next());
- }
- }
-
- void write(XMLWriter writer) throws java.io.IOException
- {
- if(!_ephemeral)
- {
- if(_instanceDescriptor != null)
- {
- TemplateDescriptor templateDescriptor
- = getRoot().findServerTemplateDescriptor(_instanceDescriptor.template);
-
- java.util.LinkedList attributes = parameterValuesToAttributes(
- _instanceDescriptor.parameterValues, templateDescriptor.parameters);
- attributes.addFirst(createAttribute("template", _instanceDescriptor.template));
-
-
- writer.writeElement("server-instance", attributes);
- }
- else if(isIceBox())
- {
- writer.writeStartTag("icebox",
- createAttributes(_serverDescriptor));
-
- if(_serverDescriptor.description.length() > 0)
- {
- writer.writeElement("description", _serverDescriptor.description);
- }
- writeOptions(writer, _serverDescriptor.options);
- writeEnvs(writer, _serverDescriptor.envs);
-
- writePropertySet(writer, "", _serverDescriptor.propertySet);
- writeDistribution(writer, _serverDescriptor.distrib);
-
- _adapters.write(writer);
- _services.write(writer);
- writer.writeEndTag("icebox");
- }
- else
- {
- writer.writeStartTag("server", createAttributes(_serverDescriptor));
-
- if(_serverDescriptor.description.length() > 0)
- {
- writer.writeElement("description", _serverDescriptor.description);
- }
-
- writeOptions(writer, _serverDescriptor.options);
- writeEnvs(writer, _serverDescriptor.envs);
-
- writePropertySet(writer, "", _serverDescriptor.propertySet);
- writeDistribution(writer, _serverDescriptor.distrib);
-
- _adapters.write(writer);
- _dbEnvs.write(writer);
- writer.writeEndTag("server");
- }
- }
- }
-
-
- boolean isIceBox()
- {
- return _serverDescriptor instanceof IceBoxDescriptor;
- }
-
- static private class Backup
- {
- Backup(Editable ne)
- {
- nodeEditable = ne;
- }
-
- Editable nodeEditable;
- java.util.Map parameterValues;
- }
-
- public Object rebuild(java.util.List editables) throws UpdateFailedException
- {
- Backup backup = new Backup(((Node)_parent).getEditable());
- Node node = (Node)_parent;
- Server newServer = null;
-
- if(_instanceDescriptor != null)
- {
- TemplateDescriptor templateDescriptor
- = getRoot().findServerTemplateDescriptor(_instanceDescriptor.template);
-
- java.util.Set parameters = new java.util.HashSet(templateDescriptor.parameters);
- if(!parameters.equals(_instanceDescriptor.parameterValues.keySet()))
- {
- backup.parameterValues = _instanceDescriptor.parameterValues;
- _instanceDescriptor.parameterValues = EditorBase.makeParameterValues(
- _instanceDescriptor.parameterValues, templateDescriptor.parameters);
- }
- newServer = node.createServer(false, _instanceDescriptor);
- }
- else
- {
- newServer = node.createServer(false, _serverDescriptor);
- }
-
- if(_id.equals(newServer.getId()))
- {
- //
- // A simple update. We can't simply rebuild server because
- // we need to keep a backup
- //
- if(_editable.isModified())
- {
- newServer.getEditable().markModified();
- }
-
- node.removeServer(this);
- try
- {
- node.insertServer(newServer, true);
- }
- catch(UpdateFailedException e)
- {
- assert false; // impossible, we just removed a child with
- // this id
- }
-
- if(backup.parameterValues != null)
- {
- editables.add(newServer.getEditable());
- }
- }
- else
- {
- newServer.getEditable().markNew();
- node.removeServer(this);
- node.getEditable().removeElement(_id, Server.class);
- try
- {
- node.insertServer(newServer, true);
- }
- catch(UpdateFailedException e)
- {
- restore(backup);
- throw e;
- }
- }
-
- return backup;
- }
-
- public void restore(Object backupObj)
- {
- Backup backup = (Backup)backupObj;
- Node node = (Node)_parent;
-
- node.getEditable().restore(backup.nodeEditable);
-
- if(_instanceDescriptor != null && backup.parameterValues != null)
- {
- _instanceDescriptor.parameterValues = backup.parameterValues;
- }
-
- TreeNode badServer = null;
-
- if(_instanceDescriptor != null)
- {
- badServer = node.findChildWithDescriptor(_instanceDescriptor);
- }
- else
- {
- badServer = node.findChildWithDescriptor(_serverDescriptor);
- }
-
- if(badServer != null)
- {
- node.removeServer(badServer);
- }
-
- try
- {
- node.insertServer(this, true);
- }
- catch(UpdateFailedException e)
- {
- assert false; // impossible
- }
- }
-
- void commit()
- {
- _editable.commit();
- }
-
-
- void setServerDescriptor(ServerDescriptor descriptor)
- {
- _serverDescriptor = descriptor;
- }
-
- //
- // Update the server and all its subtree
- //
- void rebuild(Utils.Resolver resolver,
- ServerInstanceDescriptor instanceDescriptor,
- ServerDescriptor serverDescriptor) throws UpdateFailedException
- {
- assert serverDescriptor != null;
- _resolver = resolver;
- _instanceDescriptor = instanceDescriptor;
- _serverDescriptor = serverDescriptor;
-
- _adapters.clear();
- _dbEnvs.clear();
- _services.clear();
-
- if(!_ephemeral)
- {
- _adapters.init(_serverDescriptor.adapters);
- if(_serverDescriptor instanceof IceBoxDescriptor)
- {
- IceBoxDescriptor iceBoxDescriptor = (IceBoxDescriptor)_serverDescriptor;
- _services.init(iceBoxDescriptor.services);
-
- //
- // IceBox has not dbEnv
- //
- assert _serverDescriptor.dbEnvs.size() == 0;
- }
- else
- {
- _dbEnvs.init(_serverDescriptor.dbEnvs);
- }
- }
- }
-
-
- ServerInstanceDescriptor getInstanceDescriptor()
- {
- return _instanceDescriptor;
- }
-
- ServerDescriptor getServerDescriptor()
- {
- return _serverDescriptor;
- }
-
- CommunicatorDescriptor getCommunicatorDescriptor()
- {
- return _serverDescriptor;
- }
-
- Utils.Resolver getResolver()
- {
- return _resolver;
- }
-
- boolean isEditable()
- {
- return _instanceDescriptor == null;
- }
-
- Editable getEditable()
- {
- return _editable;
- }
-
- Editable getEnclosingEditable()
- {
- return _editable;
- }
-
- java.util.List findInstances(boolean includeTemplate)
- {
- java.util.List result = new java.util.LinkedList();
- result.add(this);
- return result;
- }
-
- public boolean isEphemeral()
- {
- return _ephemeral;
- }
-
- public String toString()
- {
- if(_instanceDescriptor == null || _ephemeral)
- {
- return super.toString();
- }
- else
- {
- return _id + ": " + _instanceDescriptor.template + "<>";
- }
- }
-
- private ServerInstanceDescriptor _instanceDescriptor;
- private ServerDescriptor _serverDescriptor;
- private final boolean _ephemeral;
-
- private ServerEditor _serverEditor;
- private ServerInstanceEditor _serverInstanceEditor;
-
- private Utils.Resolver _resolver;
- private Editable _editable;
-
- static private DefaultTreeCellRenderer _cellRenderer;
- static private Icon _serverIcon;
- static private Icon _iceboxServerIcon;
-
- static private JPopupMenu _popup;
+ Object saveDescriptor();
+ void restoreDescriptor(Object descriptor);
}
diff --git a/java/src/IceGridGUI/Application/ServerInstance.java b/java/src/IceGridGUI/Application/ServerInstance.java
new file mode 100755
index 00000000000..245bd7e33e9
--- /dev/null
+++ b/java/src/IceGridGUI/Application/ServerInstance.java
@@ -0,0 +1,347 @@
+// **********************************************************************
+//
+// 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 IceGridGUI.Application;
+
+import java.awt.Component;
+
+import javax.swing.Icon;
+import javax.swing.JTree;
+
+import javax.swing.tree.TreeCellRenderer;
+import javax.swing.tree.DefaultTreeCellRenderer;
+
+import IceGrid.*;
+import IceGridGUI.*;
+
+class ServerInstance extends TreeNode implements Server
+{
+ static public ServerInstanceDescriptor
+ copyDescriptor(ServerInstanceDescriptor sid)
+ {
+ return (ServerInstanceDescriptor)sid.clone();
+ }
+
+ //
+ // Actions
+ //
+ public boolean[] getAvailableActions()
+ {
+ boolean[] actions = new boolean[ACTION_COUNT];
+ actions[COPY] = true;
+
+ Object clipboard = getCoordinator().getClipboard();
+ if(clipboard != null &&
+ (clipboard instanceof ServerDescriptor
+ || clipboard instanceof ServerInstanceDescriptor))
+ {
+ actions[PASTE] = true;
+ }
+
+ actions[DELETE] = true;
+ if(!_ephemeral)
+ {
+ actions[SHOW_VARS] = true;
+ actions[SUBSTITUTE_VARS] = true;
+ }
+
+ return actions;
+ }
+
+ public void copy()
+ {
+ getCoordinator().setClipboard(copyDescriptor(_descriptor));
+ getCoordinator().getActionsForMenu().get(PASTE).setEnabled(true);
+ }
+
+ public Editor getEditor()
+ {
+ if(_editor == null)
+ {
+ _editor = (ServerInstanceEditor)
+ getRoot().getEditor(ServerInstanceEditor.class, this);
+ }
+ _editor.show(this);
+ return _editor;
+ }
+
+ protected Editor createEditor()
+ {
+ return new ServerInstanceEditor(getCoordinator().getMainFrame());
+ }
+
+ public Component getTreeCellRendererComponent(
+ JTree tree,
+ Object value,
+ boolean sel,
+ boolean expanded,
+ boolean leaf,
+ int row,
+ boolean hasFocus)
+ {
+ if(_cellRenderer == null)
+ {
+ //
+ // Initialization
+ //
+ _cellRenderer = new DefaultTreeCellRenderer();
+
+ _serverIcon = Utils.getIcon("/icons/16x16/server_inactive.png");
+ _iceboxServerIcon = Utils.getIcon("/icons/16x16/icebox_server_inactive.png");
+ }
+
+ _cellRenderer.setLeafIcon(_isIceBox ? _iceboxServerIcon : _serverIcon);
+
+ return _cellRenderer.getTreeCellRendererComponent(
+ tree, value, sel, expanded, leaf, row, hasFocus);
+ }
+
+ public void destroy()
+ {
+ Node node = (Node)_parent;
+
+ if(_ephemeral)
+ {
+ node.removeServer(this);
+ }
+ else
+ {
+ node.removeDescriptor(_descriptor);
+ node.removeServer(this);
+ node.getEditable().removeElement(_id, _editable, Server.class);
+ getRoot().updated();
+ }
+ }
+
+
+ public Object getDescriptor()
+ {
+ return _descriptor;
+ }
+
+ public Object saveDescriptor()
+ {
+ return _descriptor.clone();
+ }
+
+ public void restoreDescriptor(Object savedDescriptor)
+ {
+ ServerInstanceDescriptor copy = (ServerInstanceDescriptor)savedDescriptor;
+
+ _descriptor.template = copy.template;
+ _descriptor.parameterValues = copy.parameterValues;
+ _descriptor.propertySet = copy.propertySet;
+ }
+
+ //
+ // Builds the server and all its sub-tree
+ //
+ ServerInstance(boolean brandNew, TreeNode parent, String serverId,
+ Utils.Resolver resolver,
+ ServerInstanceDescriptor instanceDescriptor,
+ boolean isIceBox)
+ throws UpdateFailedException
+ {
+ super(parent, serverId);
+ _ephemeral = false;
+ _editable = new Editable(brandNew);
+ rebuild(resolver, instanceDescriptor, isIceBox);
+ }
+
+ ServerInstance(TreeNode parent, String serverId,
+ ServerInstanceDescriptor instanceDescriptor)
+ {
+ super(parent, serverId);
+ _ephemeral = true;
+ _editable = null;
+ rebuild(null, instanceDescriptor, false);
+ }
+
+ void write(XMLWriter writer) throws java.io.IOException
+ {
+ if(!_ephemeral)
+ {
+ TemplateDescriptor templateDescriptor
+ = getRoot().findServerTemplateDescriptor(_descriptor.template);
+
+ java.util.LinkedList attributes = parameterValuesToAttributes(
+ _descriptor.parameterValues, templateDescriptor.parameters);
+ attributes.addFirst(createAttribute("template", _descriptor.template));
+
+ writer.writeElement("server-instance", attributes);
+ }
+ }
+
+
+ boolean isIceBox()
+ {
+ return _isIceBox;
+ }
+
+ void isIceBox(boolean newValue)
+ {
+ _isIceBox = newValue;
+ }
+
+ static private class Backup
+ {
+ Backup(Editable ne)
+ {
+ nodeEditable = ne;
+ }
+
+ Editable nodeEditable;
+ java.util.Map parameterValues;
+ }
+
+ public Object rebuild(java.util.List editables) throws UpdateFailedException
+ {
+ Backup backup = new Backup(((Node)_parent).getEditable().save());
+ Node node = (Node)_parent;
+
+ TemplateDescriptor templateDescriptor
+ = getRoot().findServerTemplateDescriptor(_descriptor.template);
+
+ java.util.Set parameters = new java.util.HashSet(templateDescriptor.parameters);
+ if(!parameters.equals(_descriptor.parameterValues.keySet()))
+ {
+ backup.parameterValues = _descriptor.parameterValues;
+ _descriptor.parameterValues = EditorBase.makeParameterValues(
+ _descriptor.parameterValues, templateDescriptor.parameters);
+ }
+ ServerInstance newServer = node.createServer(false, _descriptor);
+
+
+ if(_id.equals(newServer.getId()))
+ {
+ //
+ // A simple update. We can't simply rebuild server because
+ // we need to keep a backup
+ //
+ if(_editable.isModified())
+ {
+ newServer.getEditable().markModified();
+ }
+
+ node.removeServer(this);
+ try
+ {
+ node.insertServer(newServer, true);
+ }
+ catch(UpdateFailedException e)
+ {
+ assert false; // impossible, we just removed a child with
+ // this id
+ }
+
+ if(backup.parameterValues != null)
+ {
+ editables.add(newServer.getEditable());
+ }
+ }
+ else
+ {
+ newServer.getEditable().markNew();
+ node.removeServer(this);
+ node.getEditable().removeElement(_id, _editable, Server.class);
+ try
+ {
+ node.insertServer(newServer, true);
+ }
+ catch(UpdateFailedException e)
+ {
+ restore(backup);
+ throw e;
+ }
+ }
+
+ return backup;
+ }
+
+ public void restore(Object backupObj)
+ {
+ Backup backup = (Backup)backupObj;
+ Node node = (Node)_parent;
+
+ node.getEditable().restore(backup.nodeEditable);
+
+ if(backup.parameterValues != null)
+ {
+ _descriptor.parameterValues = backup.parameterValues;
+ }
+
+ TreeNode badServer = node.findChildWithDescriptor(_descriptor);
+
+ if(badServer != null)
+ {
+ node.removeServer(badServer);
+ }
+
+ try
+ {
+ node.insertServer(this, true);
+ }
+ catch(UpdateFailedException e)
+ {
+ assert false; // impossible
+ }
+ }
+
+ //
+ // Update the server
+ //
+ void rebuild(Utils.Resolver resolver,
+ ServerInstanceDescriptor instanceDescriptor,
+ boolean isIceBox)
+ {
+ _resolver = resolver;
+ _isIceBox = isIceBox;
+ _descriptor = instanceDescriptor;
+ }
+
+ Utils.Resolver getResolver()
+ {
+ return _resolver;
+ }
+
+ public Editable getEditable()
+ {
+ return _editable;
+ }
+
+ public boolean isEphemeral()
+ {
+ return _ephemeral;
+ }
+
+ public String toString()
+ {
+ if(_ephemeral)
+ {
+ return super.toString();
+ }
+ else
+ {
+ return _id + ": " + _descriptor.template + "<>";
+ }
+ }
+
+ private ServerInstanceDescriptor _descriptor;
+ private final boolean _ephemeral;
+ private boolean _isIceBox;
+
+ private ServerInstanceEditor _editor;
+
+ private Utils.Resolver _resolver;
+ private Editable _editable;
+
+ static private DefaultTreeCellRenderer _cellRenderer;
+ static private Icon _serverIcon;
+ static private Icon _iceboxServerIcon;
+
+}
diff --git a/java/src/IceGridGUI/Application/ServerInstanceEditor.java b/java/src/IceGridGUI/Application/ServerInstanceEditor.java
index 1cd330a39d9..0ca6848c095 100755
--- a/java/src/IceGridGUI/Application/ServerInstanceEditor.java
+++ b/java/src/IceGridGUI/Application/ServerInstanceEditor.java
@@ -36,12 +36,13 @@ class ServerInstanceEditor extends AbstractServerEditor
descriptor.template = t.getId();
descriptor.parameterValues = _parameterValuesMap;
- ((Server)_target).setServerDescriptor(
- (ServerDescriptor)((TemplateDescriptor)t.getDescriptor()).descriptor);
descriptor.propertySet.references =
(String[])_propertySetsList.toArray(new String[0]);
descriptor.propertySet.properties = _properties.getProperties();
+
+ ((ServerInstance)_target).isIceBox(
+ ((TemplateDescriptor)t.getDescriptor()).descriptor instanceof IceBoxDescriptor);
}
protected boolean isSimpleUpdate()
@@ -133,7 +134,7 @@ class ServerInstanceEditor extends AbstractServerEditor
ServerInstanceDescriptor getDescriptor()
{
- return ((Server)_target).getInstanceDescriptor();
+ return (ServerInstanceDescriptor)_target.getDescriptor();
}
//
@@ -184,7 +185,7 @@ class ServerInstanceEditor extends AbstractServerEditor
builder.nextLine();
}
- void show(Server server)
+ void show(ServerInstance server)
{
detectUpdates(false);
_target = server;
diff --git a/java/src/IceGridGUI/Application/ServerTemplate.java b/java/src/IceGridGUI/Application/ServerTemplate.java
index 862ef22f80d..79ac821bf7d 100755
--- a/java/src/IceGridGUI/Application/ServerTemplate.java
+++ b/java/src/IceGridGUI/Application/ServerTemplate.java
@@ -34,7 +34,7 @@ class ServerTemplate extends Communicator
TemplateDescriptor copy = (TemplateDescriptor)
templateDescriptor.clone();
- copy.descriptor = Server.copyDescriptor(
+ copy.descriptor = PlainServer.copyDescriptor(
(ServerDescriptor)copy.descriptor);
return copy;
}
@@ -161,7 +161,7 @@ class ServerTemplate extends Communicator
getRoot().removeServerInstances(_id);
serverTemplates.removeChild(this);
serverTemplates.getEditable().
- removeElement(_id, ServerTemplate.class);
+ removeElement(_id, _editable, ServerTemplate.class);
getRoot().updated();
}
}
@@ -200,8 +200,8 @@ class ServerTemplate extends Communicator
//
_templateDescriptor.parameters = clone.parameters;
- Server.shallowRestore((ServerDescriptor)clone.descriptor,
- (ServerDescriptor)_templateDescriptor.descriptor);
+ PlainServer.shallowRestore((ServerDescriptor)clone.descriptor,
+ (ServerDescriptor)_templateDescriptor.descriptor);
}
//
@@ -245,14 +245,14 @@ class ServerTemplate extends Communicator
IceBoxDescriptor descriptor = (IceBoxDescriptor)_templateDescriptor.descriptor;
writer.writeStartTag("icebox",
- Server.createAttributes(descriptor));
+ PlainServer.createAttributes(descriptor));
if(descriptor.description.length() > 0)
{
writer.writeElement("description", descriptor.description);
}
- Server.writeOptions(writer, descriptor.options);
- Server.writeEnvs(writer, descriptor.envs);
+ PlainServer.writeOptions(writer, descriptor.options);
+ PlainServer.writeEnvs(writer, descriptor.envs);
writePropertySet(writer, "", descriptor.propertySet);
writeDistribution(writer, descriptor.distrib);
@@ -266,14 +266,14 @@ class ServerTemplate extends Communicator
ServerDescriptor descriptor = (ServerDescriptor)_templateDescriptor.descriptor;
writer.writeStartTag("server",
- Server.createAttributes(descriptor));
+ PlainServer.createAttributes(descriptor));
if(descriptor.description.length() > 0)
{
writer.writeElement("description", descriptor.description);
}
- Server.writeOptions(writer, descriptor.options);
- Server.writeEnvs(writer, descriptor.envs);
+ PlainServer.writeOptions(writer, descriptor.options);
+ PlainServer.writeEnvs(writer, descriptor.envs);
writePropertySet(writer, "", descriptor.propertySet);
writeDistribution(writer, descriptor.distrib);
diff --git a/java/src/IceGridGUI/Application/ServerTemplates.java b/java/src/IceGridGUI/Application/ServerTemplates.java
index 735fe38218c..dbdf4864307 100755
--- a/java/src/IceGridGUI/Application/ServerTemplates.java
+++ b/java/src/IceGridGUI/Application/ServerTemplates.java
@@ -65,14 +65,14 @@ class ServerTemplates extends Templates
public void newTemplateServer()
{
newServerTemplate(new TemplateDescriptor(
- Server.newServerDescriptor(),
+ PlainServer.newServerDescriptor(),
new java.util.LinkedList(),
new java.util.TreeMap()));
}
public void newTemplateServerIceBox()
{
newServerTemplate(new TemplateDescriptor(
- Server.newIceBoxDescriptor(),
+ PlainServer.newIceBoxDescriptor(),
new java.util.LinkedList(),
new java.util.TreeMap()));
}
@@ -242,7 +242,7 @@ class ServerTemplates extends Templates
java.util.Iterator q = serviceInstances.iterator();
while(q.hasNext())
{
- Service service = (Service)q.next();
+ ServiceInstance service = (ServiceInstance)q.next();
ServerTemplate serverTemplate =
(ServerTemplate)service.getParent();
diff --git a/java/src/IceGridGUI/Application/Service.java b/java/src/IceGridGUI/Application/Service.java
index 132d334798e..3ba73bda98b 100755
--- a/java/src/IceGridGUI/Application/Service.java
+++ b/java/src/IceGridGUI/Application/Service.java
@@ -8,481 +8,5 @@
// **********************************************************************
package IceGridGUI.Application;
-import java.awt.Component;
-import javax.swing.JPopupMenu;
-import javax.swing.JTree;
-import javax.swing.tree.DefaultTreeCellRenderer;
-
-import IceGrid.*;
-import IceGridGUI.*;
-
-class Service extends Communicator implements Cloneable, TemplateInstance
-{
- static public ServiceInstanceDescriptor
- copyDescriptor(ServiceInstanceDescriptor instanceDescriptor)
- {
- ServiceInstanceDescriptor copy = (ServiceInstanceDescriptor)
- instanceDescriptor.clone();
-
- if(copy.descriptor != null)
- {
- copy.descriptor = copyDescriptor((ServiceDescriptor)copy.descriptor);
- }
- return copy;
- }
-
- static public ServiceDescriptor
- copyDescriptor(ServiceDescriptor sd)
- {
- ServiceDescriptor copy = (ServiceDescriptor)sd.clone();
- copy.adapters = Adapter.copyDescriptors(copy.adapters);
- copy.dbEnvs = DbEnv.copyDescriptors(copy.dbEnvs);
- copy.propertySet = PropertySet.copyDescriptor(copy.propertySet);
- return copy;
- }
-
- static public java.util.LinkedList
- copyDescriptors(java.util.LinkedList descriptors)
- {
- java.util.LinkedList copy = new java.util.LinkedList();
- java.util.Iterator p = descriptors.iterator();
- while(p.hasNext())
- {
- copy.add(copyDescriptor(
- (ServiceInstanceDescriptor)p.next()));
- }
- return copy;
- }
-
- public Component getTreeCellRendererComponent(
- JTree tree,
- Object value,
- boolean sel,
- boolean expanded,
- boolean leaf,
- int row,
- boolean hasFocus)
- {
- if(_cellRenderer == null)
- {
- _cellRenderer = new DefaultTreeCellRenderer();
- _cellRenderer.setOpenIcon(
- Utils.getIcon("/icons/16x16/service.png"));
-
- _cellRenderer.setClosedIcon(
- Utils.getIcon("/icons/16x16/service.png"));
- }
-
- return _cellRenderer.getTreeCellRendererComponent(
- tree, value, sel, expanded, leaf, row, hasFocus);
- }
-
- //
- // Actions
- //
- public boolean[] getAvailableActions()
- {
- boolean[] actions = new boolean[ACTION_COUNT];
- actions[COPY] = true;
-
- if(((TreeNode)_parent).getAvailableActions()[PASTE])
- {
- actions[PASTE] = true;
- }
-
- if(_isEditable)
- {
- actions[DELETE] = true;
-
- if(_instanceDescriptor.template.equals(""))
- {
- actions[NEW_ADAPTER] = !_ephemeral;
- actions[NEW_DBENV] = !_ephemeral;
- }
- }
-
- if(_parent instanceof Server && !_ephemeral)
- {
- actions[SHOW_VARS] = true;
- actions[SUBSTITUTE_VARS] = true;
- }
-
- actions[MOVE_UP] = canMove(true);
- actions[MOVE_DOWN] = canMove(false);
- return actions;
- }
- public JPopupMenu getPopupMenu()
- {
- ApplicationActions actions = getCoordinator().getActionsForPopup();
- if(_popup == null)
- {
- _popup = new JPopupMenu();
- _popup.add(actions.get(NEW_ADAPTER));
- _popup.add(actions.get(NEW_DBENV));
- _popup.addSeparator();
- _popup.add(actions.get(MOVE_UP));
- _popup.add(actions.get(MOVE_DOWN));
- }
- actions.setTarget(this);
- return _popup;
- }
- public void copy()
- {
- getCoordinator().setClipboard(copyDescriptor(_instanceDescriptor));
- getCoordinator().getActionsForMenu().get(PASTE).setEnabled(true);
- }
-
- public void moveUp()
- {
- move(true);
- }
- public void moveDown()
- {
- move(false);
- }
-
- public Object getDescriptor()
- {
- return _instanceDescriptor;
- }
-
- public Object saveDescriptor()
- {
- //
- // Must be a shallow copy
- //
- ServiceInstanceDescriptor saved =
- (ServiceInstanceDescriptor)_instanceDescriptor.clone();
-
- if(saved.descriptor != null)
- {
- saved.descriptor = (ServiceDescriptor)saved.descriptor.clone();
- }
- return saved;
- }
-
- public void restoreDescriptor(Object savedDescriptor)
- {
- ServiceInstanceDescriptor sd = (ServiceInstanceDescriptor)savedDescriptor;
- _instanceDescriptor.template = sd.template;
- _instanceDescriptor.parameterValues = sd.parameterValues;
- _instanceDescriptor.propertySet = sd.propertySet;
-
- if(_instanceDescriptor.descriptor != null)
- {
- _instanceDescriptor.descriptor.propertySet =
- sd.descriptor.propertySet;
- _instanceDescriptor.descriptor.description = sd.descriptor.description;
-
- _instanceDescriptor.descriptor.name = sd.descriptor.name;
- _instanceDescriptor.descriptor.entry = sd.descriptor.entry;
- }
- }
-
- public void destroy()
- {
- ((Communicator)_parent).getServices().destroyChild(this);
- }
-
- public Editor getEditor()
- {
- if(_instanceDescriptor.template.length() > 0)
- {
- if(_instanceEditor == null)
- {
- _instanceEditor = (ServiceInstanceEditor)getRoot().
- getEditor(ServiceInstanceEditor.class, this);
- }
- _instanceEditor.show(this);
- return _instanceEditor;
- }
- else
- {
- if(_editor == null)
- {
- _editor = (ServiceEditor)getRoot().getEditor(ServiceEditor.class, this);
- }
- _editor.show(this);
- return _editor;
- }
- }
-
- protected Editor createEditor()
- {
- if(_instanceDescriptor.template.length() > 0)
- {
- return new ServiceInstanceEditor(getCoordinator().getMainFrame());
- }
- else
- {
- return new ServiceEditor(getCoordinator().getMainFrame());
- }
- }
-
- public String toString()
- {
- if(_displayString != null)
- {
- return _displayString;
- }
- else
- {
- return super.toString();
- }
- }
-
- Editable getEnclosingEditable()
- {
- return ((Communicator)_parent).getEnclosingEditable();
- }
-
- private boolean canMove(boolean up)
- {
- if(_ephemeral)
- {
- return false;
- }
- else
- {
- return ((Communicator)_parent).getServices().canMove(this, up);
- }
- }
-
- private void move(boolean up)
- {
- assert canMove(up);
- ((Communicator)_parent).getServices().move(this, up);
- }
-
-
- java.util.List findInstances(boolean includeTemplate)
- {
- java.util.List result = new java.util.LinkedList();
-
- //
- // First find all instances of the enclosing Communicator, including
- // the ServerTemplate itself (if that's my parent)
- //
- java.util.List communicatorList = ((Communicator)_parent).findInstances(true);
-
- java.util.Iterator p = communicatorList.iterator();
- while(p.hasNext())
- {
- Services services = ((Communicator)p.next()).getServices();
- Service service = (Service)services.findChildWithDescriptor(_instanceDescriptor);
- assert service != null;
- result.add(service);
- }
- return result;
- }
-
- static private class Backup
- {
- java.util.Map parameterValues;
- Service clone;
- }
-
- public Object rebuild(java.util.List editables)
- throws UpdateFailedException
- {
- Backup backup = new Backup();
-
- //
- // Fix-up _instanceDescriptor if necessary
- //
- if(_instanceDescriptor.template.length() > 0)
- {
- TemplateDescriptor templateDescriptor
- = getRoot().findServiceTemplateDescriptor(_instanceDescriptor.template);
-
- java.util.Set parameters = new java.util.HashSet(templateDescriptor.parameters);
- if(!parameters.equals(_instanceDescriptor.parameterValues.keySet()))
- {
- backup.parameterValues = _instanceDescriptor.parameterValues;
- _instanceDescriptor.parameterValues = EditorBase.makeParameterValues(
- _instanceDescriptor.parameterValues, templateDescriptor.parameters);
- editables.add(getEnclosingEditable());
- }
- }
-
- Communicator communicator = (Communicator)_parent;
- Services services = communicator.getServices();
- Service newService = null;
-
- try
- {
- newService = (Service)services.createChild(_instanceDescriptor);
- }
- catch(UpdateFailedException e)
- {
- if(backup.parameterValues != null)
- {
- _instanceDescriptor.parameterValues = backup.parameterValues;
- }
- throw e;
- }
-
- try
- {
- backup.clone = (Service)clone();
- }
- catch(CloneNotSupportedException e)
- {
- assert false;
- }
-
- reset(newService);
-
- if(backup.parameterValues != null)
- {
- editables.add(getEnclosingEditable());
- }
- getRoot().getTreeModel().nodeChanged(this);
- return backup;
- }
-
- public void restore(Object backupObj)
- {
- Backup backup = (Backup)backupObj;
-
- if(backup.parameterValues != null)
- {
- _instanceDescriptor.parameterValues = backup.parameterValues;
- }
-
- reset(backup.clone);
- getRoot().getTreeModel().nodeChanged(this);
- }
-
- private void reset(Service from)
- {
- _id = from._id;
- assert _parent == from._parent;
-
- _adapters = from._adapters;
- _dbEnvs = from._dbEnvs;
- _services = from._services;
- _childListArray = from._childListArray;
-
- assert _instanceDescriptor == from._instanceDescriptor;
- _serviceDescriptor = from._serviceDescriptor;
-
- _displayString = from._displayString;
- _isEditable = from._isEditable;
- _resolver = from._resolver;
- }
-
- Service(Communicator parent,
- String name,
- String displayString,
- ServiceInstanceDescriptor instanceDescriptor,
- ServiceDescriptor serviceDescriptor,
- Utils.Resolver resolver)
- throws UpdateFailedException
- {
- super(parent, name);
- _displayString = displayString;
- _instanceDescriptor = instanceDescriptor;
- _serviceDescriptor = serviceDescriptor;
- _ephemeral = false;
- _resolver = resolver;
-
- _isEditable = _instanceDescriptor.template.length() == 0
- && ((TreeNode)_parent).isEditable();
-
- _adapters.init(_serviceDescriptor.adapters);
- _dbEnvs.init(_serviceDescriptor.dbEnvs);
- }
-
- //
- // New temporary object
- //
- Service(Communicator parent, String name,
- ServiceInstanceDescriptor instanceDescriptor)
- {
- super(parent, name);
- _instanceDescriptor = instanceDescriptor;
- _serviceDescriptor = instanceDescriptor.descriptor;
- _ephemeral = true;
- _isEditable = true;
- }
-
- static java.util.List createAttributes(ServiceDescriptor descriptor)
- {
- java.util.List attributes = new java.util.LinkedList();
- attributes.add(createAttribute("name", descriptor.name));
- attributes.add(createAttribute("entry", descriptor.entry));
- return attributes;
- }
-
- void write(XMLWriter writer) throws java.io.IOException
- {
- if(!_ephemeral)
- {
- if(_instanceDescriptor.template.length() > 0)
- {
- TemplateDescriptor templateDescriptor
- = getRoot().findServiceTemplateDescriptor(_instanceDescriptor.template);
-
- java.util.LinkedList attributes = parameterValuesToAttributes(
- _instanceDescriptor.parameterValues, templateDescriptor.parameters);
- attributes.addFirst(createAttribute("template", _instanceDescriptor.template));
-
- writer.writeElement("service-instance", attributes);
- }
- else
- {
- writer.writeStartTag("service", createAttributes(_serviceDescriptor));
-
- if(_serviceDescriptor.description.length() > 0)
- {
- writer.writeElement("description", _serviceDescriptor.description);
- }
-
- writePropertySet(writer, "", _serviceDescriptor.propertySet);
- _adapters.write(writer);
- _dbEnvs.write(writer);
- writer.writeEndTag("service");
- }
- }
- }
-
- ServiceDescriptor getServiceDescriptor()
- {
- return _serviceDescriptor;
- }
-
- CommunicatorDescriptor getCommunicatorDescriptor()
- {
- return _serviceDescriptor;
- }
-
- Utils.Resolver getResolver()
- {
- return _resolver;
- }
-
- boolean isEditable()
- {
- return _isEditable;
- }
-
- public boolean isEphemeral()
- {
- return _ephemeral;
- }
-
- private ServiceInstanceDescriptor _instanceDescriptor;
- private ServiceDescriptor _serviceDescriptor;
-
- private String _displayString;
- private final boolean _ephemeral;
- private boolean _isEditable;
-
- private Utils.Resolver _resolver;
- private ServiceEditor _editor;
- private ServiceInstanceEditor _instanceEditor;
-
- static private DefaultTreeCellRenderer _cellRenderer;
- static private JPopupMenu _popup;
-}
+interface Service extends TemplateInstance
+{}
diff --git a/java/src/IceGridGUI/Application/ServiceInstance.java b/java/src/IceGridGUI/Application/ServiceInstance.java
new file mode 100755
index 00000000000..9604c531a69
--- /dev/null
+++ b/java/src/IceGridGUI/Application/ServiceInstance.java
@@ -0,0 +1,346 @@
+// **********************************************************************
+//
+// 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 IceGridGUI.Application;
+
+import java.awt.Component;
+import javax.swing.JPopupMenu;
+import javax.swing.JTree;
+import javax.swing.tree.DefaultTreeCellRenderer;
+
+import IceGrid.*;
+import IceGridGUI.*;
+
+class ServiceInstance extends TreeNode implements Service, Cloneable
+{
+ static public ServiceInstanceDescriptor
+ copyDescriptor(ServiceInstanceDescriptor instanceDescriptor)
+ {
+ ServiceInstanceDescriptor copy = (ServiceInstanceDescriptor)
+ instanceDescriptor.clone();
+
+ if(copy.descriptor != null)
+ {
+ copy.descriptor = PlainService.copyDescriptor((ServiceDescriptor)copy.descriptor);
+ }
+ return copy;
+ }
+
+ static public java.util.LinkedList
+ copyDescriptors(java.util.LinkedList descriptors)
+ {
+ java.util.LinkedList copy = new java.util.LinkedList();
+ java.util.Iterator p = descriptors.iterator();
+ while(p.hasNext())
+ {
+ copy.add(copyDescriptor(
+ (ServiceInstanceDescriptor)p.next()));
+ }
+ return copy;
+ }
+
+ public Component getTreeCellRendererComponent(
+ JTree tree,
+ Object value,
+ boolean sel,
+ boolean expanded,
+ boolean leaf,
+ int row,
+ boolean hasFocus)
+ {
+ if(_cellRenderer == null)
+ {
+ _cellRenderer = new DefaultTreeCellRenderer();
+ _cellRenderer.setLeafIcon(
+ Utils.getIcon("/icons/16x16/service.png"));
+ }
+
+ return _cellRenderer.getTreeCellRendererComponent(
+ tree, value, sel, expanded, leaf, row, hasFocus);
+ }
+
+ //
+ // Actions
+ //
+ public boolean[] getAvailableActions()
+ {
+ boolean[] actions = new boolean[ACTION_COUNT];
+ actions[COPY] = true;
+
+ if(((TreeNode)_parent).getAvailableActions()[PASTE])
+ {
+ actions[PASTE] = true;
+ }
+
+ actions[DELETE] = true;
+
+ if(_parent instanceof Server && !_ephemeral)
+ {
+ actions[SHOW_VARS] = true;
+ actions[SUBSTITUTE_VARS] = true;
+ }
+
+ actions[MOVE_UP] = canMove(true);
+ actions[MOVE_DOWN] = canMove(false);
+ return actions;
+ }
+ public JPopupMenu getPopupMenu()
+ {
+ ApplicationActions actions = getCoordinator().getActionsForPopup();
+ if(_popup == null)
+ {
+ _popup = new JPopupMenu();
+ _popup.add(actions.get(MOVE_UP));
+ _popup.add(actions.get(MOVE_DOWN));
+ }
+ actions.setTarget(this);
+ return _popup;
+ }
+ public void copy()
+ {
+ getCoordinator().setClipboard(copyDescriptor(_descriptor));
+ getCoordinator().getActionsForMenu().get(PASTE).setEnabled(true);
+ }
+
+ public void moveUp()
+ {
+ move(true);
+ }
+ public void moveDown()
+ {
+ move(false);
+ }
+
+ public Object getDescriptor()
+ {
+ return _descriptor;
+ }
+
+ public Object saveDescriptor()
+ {
+ //
+ // Must be a shallow copy
+ //
+ ServiceInstanceDescriptor saved =
+ (ServiceInstanceDescriptor)_descriptor.clone();
+
+
+ assert saved.descriptor == null;
+ return saved;
+ }
+
+ public void restoreDescriptor(Object savedDescriptor)
+ {
+ ServiceInstanceDescriptor sd = (ServiceInstanceDescriptor)savedDescriptor;
+ _descriptor.template = sd.template;
+ _descriptor.parameterValues = sd.parameterValues;
+ _descriptor.propertySet = sd.propertySet;
+ }
+
+ public void destroy()
+ {
+ ((Communicator)_parent).getServices().destroyChild(this);
+ }
+
+ public Editor getEditor()
+ {
+ if(_editor == null)
+ {
+ _editor = (ServiceInstanceEditor)getRoot().
+ getEditor(ServiceInstanceEditor.class, this);
+ }
+ _editor.show(this);
+ return _editor;
+ }
+
+ protected Editor createEditor()
+ {
+ return new ServiceInstanceEditor(getCoordinator().getMainFrame());
+ }
+
+ public String toString()
+ {
+ if(_displayString != null)
+ {
+ return _displayString;
+ }
+ else
+ {
+ return super.toString();
+ }
+ }
+
+ private boolean canMove(boolean up)
+ {
+ if(_ephemeral)
+ {
+ return false;
+ }
+ else
+ {
+ return ((Communicator)_parent).getServices().canMove(this, up);
+ }
+ }
+
+ private void move(boolean up)
+ {
+ assert canMove(up);
+ ((Communicator)_parent).getServices().move(this, up);
+ }
+
+ Editable getEnclosingEditable()
+ {
+ return ((Communicator)_parent).getEnclosingEditable();
+ }
+
+ static private class Backup
+ {
+ java.util.Map parameterValues;
+ ServiceInstance clone;
+ }
+
+ public Object rebuild(java.util.List editables)
+ throws UpdateFailedException
+ {
+ Backup backup = new Backup();
+
+ //
+ // Fix-up _descriptor if necessary
+ //
+ if(_descriptor.template.length() > 0)
+ {
+ TemplateDescriptor templateDescriptor
+ = getRoot().findServiceTemplateDescriptor(_descriptor.template);
+
+ java.util.Set parameters = new java.util.HashSet(templateDescriptor.parameters);
+ if(!parameters.equals(_descriptor.parameterValues.keySet()))
+ {
+ backup.parameterValues = _descriptor.parameterValues;
+ _descriptor.parameterValues = EditorBase.makeParameterValues(
+ _descriptor.parameterValues, templateDescriptor.parameters);
+ editables.add(getEnclosingEditable());
+ }
+ }
+
+ Communicator communicator = (Communicator)_parent;
+ Communicator.Services services = communicator.getServices();
+ ServiceInstance newService = null;
+
+ try
+ {
+ newService = (ServiceInstance)services.createChild(_descriptor);
+ }
+ catch(UpdateFailedException e)
+ {
+ if(backup.parameterValues != null)
+ {
+ _descriptor.parameterValues = backup.parameterValues;
+ }
+ throw e;
+ }
+
+ try
+ {
+ backup.clone = (ServiceInstance)clone();
+ }
+ catch(CloneNotSupportedException e)
+ {
+ assert false;
+ }
+
+ reset(newService);
+
+ if(backup.parameterValues != null)
+ {
+ editables.add(getEnclosingEditable());
+ }
+ getRoot().getTreeModel().nodeChanged(this);
+ return backup;
+ }
+
+ public void restore(Object backupObj)
+ {
+ Backup backup = (Backup)backupObj;
+
+ if(backup.parameterValues != null)
+ {
+ _descriptor.parameterValues = backup.parameterValues;
+ }
+
+ reset(backup.clone);
+ getRoot().getTreeModel().nodeChanged(this);
+ }
+
+ private void reset(ServiceInstance from)
+ {
+ _id = from._id;
+ _displayString = from._displayString;
+ _resolver = from._resolver;
+ }
+
+ ServiceInstance(Communicator parent,
+ String name,
+ String displayString,
+ ServiceInstanceDescriptor instanceDescriptor,
+ Utils.Resolver resolver)
+ throws UpdateFailedException
+ {
+ super(parent, name);
+ _displayString = displayString;
+ _descriptor = instanceDescriptor;
+ _ephemeral = false;
+ _resolver = resolver;
+ }
+
+ //
+ // New temporary object
+ //
+ ServiceInstance(Communicator parent, String name,
+ ServiceInstanceDescriptor instanceDescriptor)
+ {
+ super(parent, name);
+ _descriptor = instanceDescriptor;
+ _ephemeral = true;
+ }
+
+ void write(XMLWriter writer) throws java.io.IOException
+ {
+ if(!_ephemeral)
+ {
+ TemplateDescriptor templateDescriptor
+ = getRoot().findServiceTemplateDescriptor(_descriptor.template);
+
+ java.util.LinkedList attributes = parameterValuesToAttributes(
+ _descriptor.parameterValues, templateDescriptor.parameters);
+ attributes.addFirst(createAttribute("template", _descriptor.template));
+
+ writer.writeElement("service-instance", attributes);
+ }
+ }
+
+ Utils.Resolver getResolver()
+ {
+ return _resolver;
+ }
+
+ public boolean isEphemeral()
+ {
+ return _ephemeral;
+ }
+
+ private ServiceInstanceDescriptor _descriptor;
+
+ private String _displayString;
+ private final boolean _ephemeral;
+
+ private Utils.Resolver _resolver;
+ private ServiceInstanceEditor _editor;
+
+ static private DefaultTreeCellRenderer _cellRenderer;
+ static private JPopupMenu _popup;
+}
diff --git a/java/src/IceGridGUI/Application/ServiceInstanceEditor.java b/java/src/IceGridGUI/Application/ServiceInstanceEditor.java
index 75f424345b4..b3fce3a9803 100755
--- a/java/src/IceGridGUI/Application/ServiceInstanceEditor.java
+++ b/java/src/IceGridGUI/Application/ServiceInstanceEditor.java
@@ -114,7 +114,7 @@ class ServiceInstanceEditor extends CommunicatorChildEditor
//
Utils.Resolver getDetailResolver()
{
- Service service = (Service)_target;
+ ServiceInstance service = (ServiceInstance)_target;
if(service.getCoordinator().substitute())
{
return service.getResolver();
@@ -189,7 +189,7 @@ class ServiceInstanceEditor extends CommunicatorChildEditor
}
- void show(Service service)
+ void show(ServiceInstance service)
{
detectUpdates(false);
_target = service;
@@ -204,7 +204,7 @@ class ServiceInstanceEditor extends CommunicatorChildEditor
ServiceInstanceDescriptor descriptor =
(ServiceInstanceDescriptor)service.getDescriptor();
Coordinator coordinator = service.getCoordinator();
- boolean isEditable = service.isEditable() && !coordinator.substitute();
+ boolean isEditable = !coordinator.substitute();
//
// Need to make control enabled before changing it
@@ -272,7 +272,7 @@ class ServiceInstanceEditor extends CommunicatorChildEditor
private void setParameterValuesField()
{
- Service service = (Service)_target;
+ ServiceInstance service = (ServiceInstance)_target;
final Utils.Resolver resolver = service.getCoordinator().substitute() ?
((TreeNode)service.getParent()).getResolver() : null;
diff --git a/java/src/IceGridGUI/Application/ServiceTemplate.java b/java/src/IceGridGUI/Application/ServiceTemplate.java
index deec70eb371..539fb6f8739 100755
--- a/java/src/IceGridGUI/Application/ServiceTemplate.java
+++ b/java/src/IceGridGUI/Application/ServiceTemplate.java
@@ -25,7 +25,7 @@ class ServiceTemplate extends Communicator
TemplateDescriptor copy = (TemplateDescriptor)
templateDescriptor.clone();
- copy.descriptor = Service.copyDescriptor(
+ copy.descriptor = PlainService.copyDescriptor(
(ServiceDescriptor)copy.descriptor);
return copy;
@@ -140,7 +140,7 @@ class ServiceTemplate extends Communicator
ServiceDescriptor descriptor = (ServiceDescriptor)_templateDescriptor.descriptor;
- writer.writeStartTag("service", Service.createAttributes(descriptor));
+ writer.writeStartTag("service", PlainService.createAttributes(descriptor));
if(descriptor.description.length() > 0)
{
@@ -204,7 +204,7 @@ class ServiceTemplate extends Communicator
getRoot().removeServiceInstances(_id);
serviceTemplates.removeChild(this);
serviceTemplates.getEditable().
- removeElement(_id, ServiceTemplate.class);
+ removeElement(_id, _editable, ServiceTemplate.class);
getRoot().updated();
}
}
diff --git a/java/src/IceGridGUI/Application/TreeNode.java b/java/src/IceGridGUI/Application/TreeNode.java
index 74778e0cd7f..3dd6080dc16 100755
--- a/java/src/IceGridGUI/Application/TreeNode.java
+++ b/java/src/IceGridGUI/Application/TreeNode.java
@@ -61,19 +61,6 @@ public abstract class TreeNode extends TreeNodeBase
return (TreeNode)findChild(other.getId());
}
-
- boolean isEditable()
- {
- if(_parent == null)
- {
- return true;
- }
- else
- {
- return ((TreeNode)_parent).isEditable();
- }
- }
-
//
// Get variable-resolver
//