diff options
author | Bernard Normier <bernard@zeroc.com> | 2005-08-10 17:56:23 +0000 |
---|---|---|
committer | Bernard Normier <bernard@zeroc.com> | 2005-08-10 17:56:23 +0000 |
commit | dc13f4b13d130a38ecaf6896f8acee2be1ffa1b6 (patch) | |
tree | 9b6b33d38461905eadf3272b9110283955413162 | |
parent | removing debug println (diff) | |
download | ice-dc13f4b13d130a38ecaf6896f8acee2be1ffa1b6.tar.bz2 ice-dc13f4b13d130a38ecaf6896f8acee2be1ffa1b6.tar.xz ice-dc13f4b13d130a38ecaf6896f8acee2be1ffa1b6.zip |
fixed node observer updates
-rwxr-xr-x | java/src/IceGrid/TreeNode/Adapter.java | 25 | ||||
-rwxr-xr-x | java/src/IceGrid/TreeNode/Adapters.java | 10 | ||||
-rwxr-xr-x | java/src/IceGrid/TreeNode/Application.java | 42 | ||||
-rwxr-xr-x | java/src/IceGrid/TreeNode/CommonBase.java | 6 | ||||
-rwxr-xr-x | java/src/IceGrid/TreeNode/CommonBaseI.java | 7 | ||||
-rwxr-xr-x | java/src/IceGrid/TreeNode/Node.java | 317 | ||||
-rwxr-xr-x | java/src/IceGrid/TreeNode/Parent.java | 10 | ||||
-rwxr-xr-x | java/src/IceGrid/TreeNode/ReplicatedAdapter.java | 30 | ||||
-rwxr-xr-x | java/src/IceGrid/TreeNode/ReplicatedAdapters.java | 81 | ||||
-rwxr-xr-x | java/src/IceGrid/TreeNode/Server.java | 54 | ||||
-rwxr-xr-x | java/src/IceGrid/TreeNode/ServerTemplate.java | 3 | ||||
-rwxr-xr-x | java/src/IceGrid/TreeNode/ServerTemplates.java | 16 | ||||
-rwxr-xr-x | java/src/IceGrid/TreeNode/Service.java | 5 | ||||
-rwxr-xr-x | java/src/IceGrid/TreeNode/ServiceTemplates.java | 17 | ||||
-rwxr-xr-x | java/src/IceGrid/TreeNode/Services.java | 10 |
15 files changed, 406 insertions, 227 deletions
diff --git a/java/src/IceGrid/TreeNode/Adapter.java b/java/src/IceGrid/TreeNode/Adapter.java index 25357b0b1ed..daf8ebdefa1 100755 --- a/java/src/IceGrid/TreeNode/Adapter.java +++ b/java/src/IceGrid/TreeNode/Adapter.java @@ -185,11 +185,36 @@ class Adapter extends Leaf _descriptor = descriptor;
_editable = editable;
_resolver = resolver;
+
+ if(resolver != null)
+ {
+ //
+ // In a server instance
+ //
+ _adapterId = _resolver.substitute(_descriptor.id);
+
+ _proxy = _model.getRoot().registerAdapter(_resolver.find("node"),
+ _resolver.find("server"),
+ _adapterId,
+ this);
+ createToolTip();
+ }
}
+ public void cleanup()
+ {
+ if(_resolver != null)
+ {
+ _model.getRoot().unregisterAdapter(_resolver.find("node"),
+ _resolver.find("server"),
+ _adapterId,
+ this);
+ }
+ }
void updateProxy(Ice.ObjectPrx proxy)
{
+ assert _resolver != null;
_proxy = proxy;
createToolTip();
fireNodeChangedEvent(this);
diff --git a/java/src/IceGrid/TreeNode/Adapters.java b/java/src/IceGrid/TreeNode/Adapters.java index a7482fac2c4..e28978c98d6 100755 --- a/java/src/IceGrid/TreeNode/Adapters.java +++ b/java/src/IceGrid/TreeNode/Adapters.java @@ -30,4 +30,14 @@ class Adapters extends Parent resolver, _model));
}
}
+
+ public void cleanup()
+ {
+ java.util.Iterator p = _children.iterator();
+ while(p.hasNext())
+ {
+ Adapter adapter = (Adapter)p.next();
+ adapter.cleanup();
+ }
+ }
}
diff --git a/java/src/IceGrid/TreeNode/Application.java b/java/src/IceGrid/TreeNode/Application.java index 740b2b9d10b..efb03b7ce82 100755 --- a/java/src/IceGrid/TreeNode/Application.java +++ b/java/src/IceGrid/TreeNode/Application.java @@ -25,9 +25,9 @@ class Application extends Parent super(descriptor.name, model);
_descriptor = descriptor;
- //
- // TODO: add replicated adapter
- //
+ _replicatedAdapters = new ReplicatedAdapters(_descriptor.replicatedAdapters,
+ _model);
+ addChild(_replicatedAdapters);
_serviceTemplates = new ServiceTemplates(_descriptor.serviceTemplates,
_model);
@@ -62,6 +62,19 @@ class Application extends Parent //
+ // Replicated adapters
+ //
+ for(int i = 0; i < desc.removeReplicatedAdapters.length; ++i)
+ {
+ _descriptor.replicatedAdapters.remove(desc.
+ removeReplicatedAdapters[i]);
+ }
+ _descriptor.replicatedAdapters.addAll(desc.replicatedAdapters);
+ _replicatedAdapters.update(desc.replicatedAdapters,
+ desc.removeReplicatedAdapters);
+
+
+ //
// Service templates
//
for(int i = 0; i < desc.removeServiceTemplates.length; ++i)
@@ -91,8 +104,10 @@ class Application extends Parent {
_descriptor.nodes.remove(desc.removeNodes[i]);
}
- _descriptor.nodes.putAll(_nodes.update(desc.nodes,
- desc.removeNodes));
+ //
+ // Updates also _descriptor.nodes
+ //
+ _nodes.update(desc.nodes, desc.removeNodes);
}
ServerTemplate findServerTemplate(String id)
@@ -131,10 +146,9 @@ class Application extends Parent return _descriptor.variables;
}
- void nodeUp(String nodeName, java.util.Map serverMap,
- java.util.Map adapterMap)
+ void nodeUp(String nodeName)
{
- _nodes.nodeUp(nodeName, serverMap, adapterMap);
+ _nodes.nodeUp(nodeName);
}
void nodeDown(String nodeName)
@@ -142,22 +156,18 @@ class Application extends Parent _nodes.nodeDown(nodeName);
}
- void updateServer(String nodeName, ServerDynamicInfo updatedInfo)
+ public void cleanup()
{
- _nodes.updateServer(nodeName, updatedInfo);
+ _nodes.cleanup();
}
-
- void updateAdapter(String nodeName, AdapterDynamicInfo updatedInfo)
- {
- _nodes.updateAdapter(nodeName, updatedInfo);
- }
-
+
private ApplicationDescriptor _descriptor;
//
// Children
//
+ private ReplicatedAdapters _replicatedAdapters;
private ServerTemplates _serverTemplates;
private ServiceTemplates _serviceTemplates;
private Nodes _nodes;
diff --git a/java/src/IceGrid/TreeNode/CommonBase.java b/java/src/IceGrid/TreeNode/CommonBase.java index 6af9f19194d..4b6dff10522 100755 --- a/java/src/IceGrid/TreeNode/CommonBase.java +++ b/java/src/IceGrid/TreeNode/CommonBase.java @@ -31,6 +31,12 @@ public interface CommonBase extends TreeCellRenderer //
String getId();
+
+ //
+ // Clean-up when removed from the tree
+ //
+ void cleanup();
+
//
// Set this node as a parent, and recursively update
// the path of all children.
diff --git a/java/src/IceGrid/TreeNode/CommonBaseI.java b/java/src/IceGrid/TreeNode/CommonBaseI.java index a069781581a..74253d9a2e8 100755 --- a/java/src/IceGrid/TreeNode/CommonBaseI.java +++ b/java/src/IceGrid/TreeNode/CommonBaseI.java @@ -35,6 +35,13 @@ abstract class CommonBaseI implements CommonBase return _id;
}
+ public void cleanup()
+ {
+ //
+ // Nothing to do
+ //
+ }
+
public void setParent(CommonBase parent)
{
_parent = parent;
diff --git a/java/src/IceGrid/TreeNode/Node.java b/java/src/IceGrid/TreeNode/Node.java index dbb6f91561a..62981547130 100755 --- a/java/src/IceGrid/TreeNode/Node.java +++ b/java/src/IceGrid/TreeNode/Node.java @@ -17,6 +17,7 @@ import javax.swing.tree.DefaultTreeCellRenderer; import IceGrid.NodeDescriptor;
import IceGrid.Model;
import IceGrid.NodeDynamicInfo;
+import IceGrid.NodeUpdateDescriptor;
import IceGrid.ServerDynamicInfo;
import IceGrid.AdapterDynamicInfo;
import IceGrid.ServerDescriptor;
@@ -60,7 +61,7 @@ class Node extends Parent //
// TODO: separate icons for open and close
//
- if(_serverInfoMap != null) // up
+ if(_up)
{
_cellRenderer.setToolTipText("Up and running");
if(expanded)
@@ -90,72 +91,15 @@ class Node extends Parent }
- void up(java.util.Map serverInfoMap, java.util.Map adapterInfoMap)
+ void up()
{
- _serverInfoMap = serverInfoMap;
- _adapterInfoMap = adapterInfoMap;
-
- //
- // Update the state of all servers
- //
- java.util.Iterator p = _children.iterator();
- while(p.hasNext())
- {
- Server child = (Server)p.next();
- ServerDynamicInfo info =
- (ServerDynamicInfo)_serverInfoMap.get(child.getId());
-
- if(info == null)
- {
- info = _inactiveServerDynamicInfo;
- }
- child.updateDynamicInfo(info);
- }
-
- //
- // Update the state of all adapters
- //
- /*
- p = _adapters.entrySet().iterator();
- while(p.hasNext())
- {
- java.util.Map.Entry entry = (java.util.Map.Entry)p.next();
- String id = (String) entry.getKey();
- Adapter adapter = (Adapter)entry.getValue();
- Ice.ObjectPrx proxy = (Ice.ObjectPrx)_adapterInfoMap.get(id);
- adapter.updateProxy(proxy);
- }
- */
-
+ _up = true;
fireNodeChangedEvent(this);
}
boolean down()
{
- _serverInfoMap = null;
- _adapterInfoMap = null;
-
- //
- // Update the state of all servers
- //
- java.util.Iterator p = _children.iterator();
- while(p.hasNext())
- {
- Server child = (Server)p.next();
- child.updateDynamicInfo(_unknownServerDynamicInfo);
- }
-
- //
- // Update the state of all adapters
- //
- /*
- p = _adapters.values().iterator();
- while(p.hasNext())
- {
- Adapter adapter = (Adapter)p.next();
- adapter.updateProxy(null);
- }
- */
+ _up = false;
if(_descriptor == null)
{
@@ -167,74 +111,55 @@ class Node extends Parent return false;
}
}
-
- ServerDynamicInfo getServerDynamicInfo(String serverName)
+
+ public void cleanup()
{
- if(_serverInfoMap == null)
- {
- return _unknownServerDynamicInfo;
- }
- else
+ java.util.Iterator p = _children.iterator();
+ while(p.hasNext())
{
- Object obj = _serverInfoMap.get(serverName);
- if(obj == null)
- {
- return _inactiveServerDynamicInfo;
- }
- else
- {
- return (ServerDynamicInfo)obj;
- }
+ Server server = (Server)p.next();
+ server.cleanup();
}
}
- /*
- ServerInstances(java.util.List descriptors,
- Application application,
- boolean fireEvent)
+ NodeDescriptor update(NodeUpdateDescriptor update, Application application)
{
- super("Server instances", application.getModel());
- _descriptors = descriptors;
-
- java.util.Iterator p = _descriptors.iterator();
- while(p.hasNext())
+ if(_descriptor == null)
{
- //
- // The ServerInstance constructor inserts the new object in the
- // node view model
- //
- ServerInstanceDescriptor descriptor =
- (ServerInstanceDescriptor)p.next();
-
-
+ NodeDescriptor descriptor = new NodeDescriptor(update.variables,
+ update.serverInstances,
+ update.servers);
- String serverName = computeServerName(descriptor, application);
-
- ServerInstance child = new ServerInstance(serverName,
- descriptor,
- application,
- fireEvent);
- addChild(child);
+ init(descriptor, application, true);
+ return _descriptor;
}
- }
- void update(java.util.List updates, String[] removeServers)
- {
//
- // Note: _descriptors is updated by Application
+ // Otherwise it's a real update
//
-
- Application application = (Application)getParent(TreeModelI.APPLICATION_VIEW);
//
- // One big set of removes
+ // Variables
//
- for(int i = 0; i < removeServers.length; ++i)
+ for(int i = 0; i < update.removeVariables.length; ++i)
{
- ServerInstance server = (ServerInstance)findChild(removeServers[i]);
- server.removeFromNode();
+ _descriptor.variables.remove(update.removeVariables[i]);
}
- removeChildren(removeServers);
+ _descriptor.variables.putAll(update.variables);
+
+ //
+ // One big set of removes
+ //
+ removeChildren(update.removeServers);
+
+ //
+ // Update _descriptor
+ //
+ for(int i = 0; i < update.removeServers.length; ++i)
+ {
+ _descriptor.serverInstances.remove(update.removeServers[i]);
+ _descriptor.servers.remove(update.removeServers[i]);
+ }
//
// One big set of updates, followed by inserts
@@ -242,95 +167,115 @@ class Node extends Parent java.util.Vector newChildren = new java.util.Vector();
java.util.Vector updatedChildren = new java.util.Vector();
- java.util.Iterator p = updates.iterator();
+ java.util.Iterator p = update.serverInstances.iterator();
while(p.hasNext())
{
- ServerInstanceDescriptor descriptor = (ServerInstanceDescriptor)p.next();
+ ServerInstanceDescriptor instanceDescriptor =
+ (ServerInstanceDescriptor)p.next();
- String serverName = computeServerName(descriptor, application);
+ //
+ // Find template
+ //
+ TemplateDescriptor templateDescriptor =
+ application.findServerTemplateDescriptor(instanceDescriptor.template);
- ServerInstance child = (ServerInstance)findChild(serverName);
- if(child == null)
+ assert templateDescriptor != null;
+
+ ServerDescriptor serverDescriptor =
+ (ServerDescriptor)templateDescriptor.descriptor;
+
+ assert serverDescriptor != null;
+
+ //
+ // Build resolver
+ //
+ Utils.Resolver instanceResolver =
+ new Utils.Resolver(_resolver, instanceDescriptor.parameterValues);
+
+ String serverId = instanceResolver.substitute(serverDescriptor.id);
+ instanceResolver.put("server", serverId);
+
+ //
+ // Lookup server
+ //
+ Server server = (Server)findChild(serverId);
+ if(server != null)
{
- newChildren.add(new ServerInstance(serverName, descriptor, application, true));
+ server.rebuild(instanceResolver, instanceDescriptor, serverDescriptor,
+ application);
+ updatedChildren.add(server);
}
else
{
- child.rebuild(application, descriptor, true);
- updatedChildren.add(child);
+ server = new Server(serverId, instanceResolver, instanceDescriptor,
+ serverDescriptor, application);
+ newChildren.add(server);
+ _descriptor.serverInstances.add(instanceDescriptor);
}
+
}
- updateChildren((CommonBaseI[])updatedChildren.toArray(new CommonBaseI[0]));
- addChildren((CommonBaseI[])newChildren.toArray(new CommonBaseI[0]));
- }
-
- void removeFromNodes()
- {
- java.util.Iterator p = _children.iterator();
+ //
+ // Plain servers
+ //
+ p = update.servers.iterator();
while(p.hasNext())
{
- ServerInstance server = (ServerInstance)p.next();
- server.removeFromNode();
- }
- }
-
-
- static String computeServerName(ServerInstanceDescriptor instanceDescriptor,
- Application application)
- {
- String nodeName = instanceDescriptor.node;
+ ServerDescriptor serverDescriptor = (ServerDescriptor)p.next();
- if(instanceDescriptor.template.length() > 0)
- {
//
- // Can't be null
+ // Build resolver
//
- TemplateDescriptor templateDescriptor =
- application.findServerTemplateDescriptor(instanceDescriptor.template);
+ Utils.Resolver instanceResolver = new Utils.Resolver(_resolver);
+ String serverId = instanceResolver.substitute(serverDescriptor.id);
+ instanceResolver.put("server", serverId);
- java.util.Map parameters =
- Utils.substituteVariables(instanceDescriptor.parameterValues,
- application.getNodeVariables(nodeName),
- application.getVariables());
-
- return Utils.substituteVariables(templateDescriptor.descriptor.name,
- parameters,
- application.getNodeVariables(nodeName),
- application.getVariables());
+ //
+ // Lookup server
+ //
+ Server server = (Server)findChild(serverId);
+
+ if(server != null)
+ {
+ server.rebuild(instanceResolver, null, serverDescriptor,
+ application);
+ updatedChildren.add(server);
+ }
+ else
+ {
+ server = new Server(serverId, instanceResolver, null,
+ serverDescriptor, application);
+ newChildren.add(server);
+ _descriptor.servers.add(serverDescriptor);
+ }
}
- else
+
+ updateChildren((CommonBaseI[])updatedChildren.toArray(new CommonBaseI[0]));
+ addChildren((CommonBaseI[])newChildren.toArray(new CommonBaseI[0]));
+
+ p = newChildren.iterator();
+ while(p.hasNext())
{
-
- return Utils.substituteVariables(instanceDescriptor.descriptor.name,
- application.getNodeVariables(nodeName),
- application.getVariables());
+ Server server = (Server)p.next();
+ server.setParent(this);
}
- }
-
- */
-
- //
- // Node created by NodeObserver
- //
- Node(String nodeName, Model model,
- java.util.Map serverMap, java.util.Map adapterMap )
+ return null;
+ }
+
+ Node(String nodeName, Model model)
{
- super(nodeName, model);
-
+ super(nodeName, model);
+ _up = true;
}
- //
- // Node created by RegistryObserver
- //
Node(String nodeName, NodeDescriptor descriptor, Application application)
{
super(nodeName, application.getModel());
- init(descriptor, application);
+ init(descriptor, application, false);
}
- void init(NodeDescriptor descriptor, Application application)
+ void init(NodeDescriptor descriptor, Application application, boolean fireEvent)
{
assert _descriptor == null;
_descriptor = descriptor;
@@ -375,8 +320,10 @@ class Node extends Parent //
// Create server
//
- addChild(new Server(serverId, instanceResolver, instanceDescriptor,
- serverDescriptor, application));
+ Server server = new Server(serverId, instanceResolver, instanceDescriptor,
+ serverDescriptor, application);
+ addChild(server);
+ server.setParent(this);
}
//
@@ -397,26 +344,28 @@ class Node extends Parent //
// Create server
//
- addChild(new Server(serverId, instanceResolver, null, serverDescriptor,
- application));
+ Server server = new Server(serverId, instanceResolver, null, serverDescriptor,
+ application);
+ addChild(server);
+ server.setParent(this);
+ }
+
+ if(fireEvent)
+ {
+ fireNodeChangedEvent(this);
}
+
}
private NodeDescriptor _descriptor;
private Utils.Resolver _resolver;
- private java.util.Map _serverInfoMap;
- private java.util.Map _adapterInfoMap;
+ private boolean _up = false;
+ private java.util.Map _serverDynamicInfoMap;
static private DefaultTreeCellRenderer _cellRenderer;
static private Icon _nodeUpOpen;
static private Icon _nodeUpClosed;
static private Icon _nodeDownOpen;
static private Icon _nodeDownClosed;
-
- static private ServerDynamicInfo _unknownServerDynamicInfo =
- new ServerDynamicInfo();
-
- static private ServerDynamicInfo _inactiveServerDynamicInfo =
- new ServerDynamicInfo(null, ServerState.Inactive, 0);
}
diff --git a/java/src/IceGrid/TreeNode/Parent.java b/java/src/IceGrid/TreeNode/Parent.java index 09f8458dfbb..017df494734 100755 --- a/java/src/IceGrid/TreeNode/Parent.java +++ b/java/src/IceGrid/TreeNode/Parent.java @@ -172,6 +172,7 @@ class Parent extends CommonBaseI void removeChild(CommonBase child)
{
+ child.cleanup();
_children.remove(child);
}
@@ -185,6 +186,7 @@ class Parent extends CommonBaseI i++;
if(id.equals(child.getId()))
{
+ child.cleanup();
p.remove();
if(fireEvent)
{
@@ -197,6 +199,12 @@ class Parent extends CommonBaseI void clearChildren()
{
+ java.util.Iterator p = _children.iterator();
+ while(p.hasNext())
+ {
+ CommonBase child = (CommonBase)p.next();
+ child.cleanup();
+ }
_children.clear();
}
@@ -306,6 +314,7 @@ class Parent extends CommonBaseI CommonBase child = (CommonBase)p.next();
if(ids[j].equals(child.getId()))
{
+ child.cleanup();
childrenToRemove[k] = child;
indices[k] = i;
p.remove();
@@ -358,6 +367,7 @@ class Parent extends CommonBaseI if(id.equals(child.getId()))
{
+ child.cleanup();
childrenToRemove.add(child);
indices[k++] = i;
p.remove();
diff --git a/java/src/IceGrid/TreeNode/ReplicatedAdapter.java b/java/src/IceGrid/TreeNode/ReplicatedAdapter.java new file mode 100755 index 00000000000..27a15bc3151 --- /dev/null +++ b/java/src/IceGrid/TreeNode/ReplicatedAdapter.java @@ -0,0 +1,30 @@ +// **********************************************************************
+//
+// Copyright (c) 2003-2005 ZeroC, Inc. All rights reserved.
+//
+// This copy of Ice is licensed to you under the terms described in the
+// ICE_LICENSE file included in this distribution.
+//
+// **********************************************************************
+package IceGrid.TreeNode;
+
+import IceGrid.ReplicatedAdapterDescriptor;
+import IceGrid.Model;
+import IceGrid.Utils;
+
+class ReplicatedAdapter extends Leaf
+{
+ ReplicatedAdapter(ReplicatedAdapterDescriptor descriptor,
+ Model model)
+ {
+ super(descriptor.id, model);
+ rebuild(descriptor);
+ }
+
+ void rebuild(ReplicatedAdapterDescriptor descriptor)
+ {
+ _descriptor = descriptor;
+ }
+
+ private ReplicatedAdapterDescriptor _descriptor;
+}
diff --git a/java/src/IceGrid/TreeNode/ReplicatedAdapters.java b/java/src/IceGrid/TreeNode/ReplicatedAdapters.java new file mode 100755 index 00000000000..608efc32c5b --- /dev/null +++ b/java/src/IceGrid/TreeNode/ReplicatedAdapters.java @@ -0,0 +1,81 @@ +// **********************************************************************
+//
+// Copyright (c) 2003-2005 ZeroC, Inc. All rights reserved.
+//
+// This copy of Ice is licensed to you under the terms described in the
+// ICE_LICENSE file included in this distribution.
+//
+// **********************************************************************
+package IceGrid.TreeNode;
+
+import IceGrid.ReplicatedAdapterDescriptor;
+import IceGrid.Model;
+import IceGrid.Utils;
+
+class ReplicatedAdapters extends Parent
+{
+ ReplicatedAdapters(java.util.List descriptors, Model model)
+ {
+ super("Replicated Adapters", model);
+ java.util.Iterator p = descriptors.iterator();
+ while(p.hasNext())
+ {
+ ReplicatedAdapterDescriptor descriptor
+ = (ReplicatedAdapterDescriptor)p.next();
+
+ //
+ // TODO: need to substitute id?
+ //
+ addChild(new ReplicatedAdapter(descriptor, _model));
+ }
+ }
+
+ void update(java.util.List descriptors, String[] removeAdapters)
+ {
+ _descriptors = descriptors;
+
+ //
+ // One big set of removes
+ //
+ removeChildren(removeAdapters);
+
+ //
+ // One big set of updates, followed by inserts
+ //
+ java.util.Vector newChildren = new java.util.Vector();
+ java.util.Vector updatedChildren = new java.util.Vector();
+
+ java.util.Iterator p = descriptors.iterator();
+ while(p.hasNext())
+ {
+ ReplicatedAdapterDescriptor descriptor =
+ (ReplicatedAdapterDescriptor)p.next();
+
+ ReplicatedAdapter child
+ = (ReplicatedAdapter)findChild(descriptor.id);
+ if(child == null)
+ {
+ newChildren.add(new ReplicatedAdapter(descriptor,
+ _model));
+ }
+ else
+ {
+ child.rebuild(descriptor);
+ updatedChildren.add(child);
+ }
+ }
+
+ updateChildren((CommonBaseI[])updatedChildren.toArray
+ (new CommonBaseI[0]));
+ addChildren((CommonBaseI[])newChildren.toArray(new CommonBaseI[0]));
+
+ p = newChildren.iterator();
+ while(p.hasNext())
+ {
+ ReplicatedAdapter replicatedAdapter = (ReplicatedAdapter)p.next();
+ replicatedAdapter.setParent(this);
+ }
+ }
+
+ private java.util.List _descriptors;
+}
diff --git a/java/src/IceGrid/TreeNode/Server.java b/java/src/IceGrid/TreeNode/Server.java index 8f27db0090f..7b4e1cd8847 100755 --- a/java/src/IceGrid/TreeNode/Server.java +++ b/java/src/IceGrid/TreeNode/Server.java @@ -388,8 +388,13 @@ class Server extends Parent Application application)
{
super(serverId, application.getModel());
- rebuild(resolver, instanceDescriptor, serverDescriptor,
- application);
+ Ice.IntHolder pid = new Ice.IntHolder();
+ _state = _model.getRoot().registerServer(resolver.find("node"),
+ _id,
+ this,
+ pid);
+ _pid = pid.value;
+ rebuild(resolver, instanceDescriptor, serverDescriptor, application);
}
//
@@ -406,7 +411,7 @@ class Server extends Parent _serverDescriptor = serverDescriptor;
clearChildren();
-
+
boolean editable = (instanceDescriptor == null);
if(serverDescriptor instanceof IceBoxDescriptor)
@@ -442,30 +447,39 @@ class Server extends Parent _adapters.setParent(this);
}
- void updateDynamicInfo(ServerDynamicInfo info)
+
+ public void cleanup()
{
- updateDynamicInfo(info, true);
+ assert _resolver != null;
+
+ _model.getRoot().unregisterServer(_resolver.find("node"),
+ _id,
+ this);
+ _adapters.cleanup();
+ if(_services != null)
+ {
+ _services.cleanup();
+ }
}
- private void updateDynamicInfo(ServerDynamicInfo info, boolean fireEvent)
+
+ void updateDynamicInfo(ServerState state, int pid)
{
- if(info.state != _state || info.pid != _pid)
+ if(state != _state || pid != _pid)
{
- _state = info.state;
- _pid = info.pid;
- _toolTip = toolTip(info.state, info.pid);
- _stateIconIndex = (_state == null ? 0 : _state.value() + 1);
-
- if(fireEvent)
- {
- //
- // Change the node representation in all views
- //
- fireNodeChangedEvent(this);
- }
+ _state = state;
+ _pid = pid;
+
+ _toolTip = toolTip(_state, _pid);
+ _stateIconIndex = _state.value() + 1;
+
+ //
+ // Change the node representation in all views
+ //
+ fireNodeChangedEvent(this);
}
}
-
+
void start()
{
//
diff --git a/java/src/IceGrid/TreeNode/ServerTemplate.java b/java/src/IceGrid/TreeNode/ServerTemplate.java index 82bc6a7bf05..b6f38b951ef 100755 --- a/java/src/IceGrid/TreeNode/ServerTemplate.java +++ b/java/src/IceGrid/TreeNode/ServerTemplate.java @@ -67,7 +67,8 @@ class ServerTemplate extends Parent {
_iceBoxDescriptor = (IceBoxDescriptor)_descriptor.descriptor;
- _services = new Services(_iceBoxDescriptor.services, true, null, application);
+ _services = new Services(_iceBoxDescriptor.services, true, null,
+ application);
addChild(_services);
assert _descriptor.descriptor.dbEnvs.size() == 0;
diff --git a/java/src/IceGrid/TreeNode/ServerTemplates.java b/java/src/IceGrid/TreeNode/ServerTemplates.java index ed62b758986..530ccc7e8e1 100755 --- a/java/src/IceGrid/TreeNode/ServerTemplates.java +++ b/java/src/IceGrid/TreeNode/ServerTemplates.java @@ -55,11 +55,13 @@ class ServerTemplates extends Parent {
java.util.Map.Entry entry = (java.util.Map.Entry)p.next();
String name = (String)entry.getKey();
- TemplateDescriptor templateDescriptor = (TemplateDescriptor)entry.getValue();
+ TemplateDescriptor templateDescriptor
+ = (TemplateDescriptor)entry.getValue();
ServerTemplate child = (ServerTemplate)findChild(name);
if(child == null)
{
- newChildren.add(new ServerTemplate(name, templateDescriptor, application));
+ newChildren.add(new ServerTemplate(name, templateDescriptor,
+ application));
}
else
{
@@ -68,8 +70,16 @@ class ServerTemplates extends Parent }
}
- updateChildren((CommonBaseI[])updatedChildren.toArray(new CommonBaseI[0]));
+ updateChildren((CommonBaseI[])updatedChildren.toArray
+ (new CommonBaseI[0]));
addChildren((CommonBaseI[])newChildren.toArray(new CommonBaseI[0]));
+
+ p = newChildren.iterator();
+ while(p.hasNext())
+ {
+ ServerTemplate serverTemplate = (ServerTemplate)p.next();
+ serverTemplate.setParent(this);
+ }
}
private java.util.Map _descriptors;
diff --git a/java/src/IceGrid/TreeNode/Service.java b/java/src/IceGrid/TreeNode/Service.java index 9ff34a871b6..c1391d9ed2c 100755 --- a/java/src/IceGrid/TreeNode/Service.java +++ b/java/src/IceGrid/TreeNode/Service.java @@ -55,6 +55,11 @@ class Service extends Parent }
}
+ public void cleanup()
+ {
+ _adapters.cleanup();
+ }
+
private ServiceInstanceDescriptor _instanceDescriptor;
private ServiceDescriptor _serviceDescriptor;
private String _displayString;
diff --git a/java/src/IceGrid/TreeNode/ServiceTemplates.java b/java/src/IceGrid/TreeNode/ServiceTemplates.java index 693b678d30e..adb73425d13 100755 --- a/java/src/IceGrid/TreeNode/ServiceTemplates.java +++ b/java/src/IceGrid/TreeNode/ServiceTemplates.java @@ -52,11 +52,13 @@ class ServiceTemplates extends Parent {
java.util.Map.Entry entry = (java.util.Map.Entry)p.next();
String name = (String)entry.getKey();
- TemplateDescriptor templateDescriptor = (TemplateDescriptor)entry.getValue();
+ TemplateDescriptor templateDescriptor
+ = (TemplateDescriptor)entry.getValue();
ServiceTemplate child = (ServiceTemplate)findChild(name);
if(child == null)
{
- newChildren.add(new ServiceTemplate(name, templateDescriptor, _model));
+ newChildren.add(new ServiceTemplate(name, templateDescriptor,
+ _model));
}
else
{
@@ -65,8 +67,17 @@ class ServiceTemplates extends Parent }
}
- updateChildren((CommonBaseI[])updatedChildren.toArray(new CommonBaseI[0]));
+ updateChildren((CommonBaseI[])updatedChildren.toArray
+ (new CommonBaseI[0]));
addChildren((CommonBaseI[])newChildren.toArray(new CommonBaseI[0]));
+
+ p = newChildren.iterator();
+ while(p.hasNext())
+ {
+ ServiceTemplate serviceTemplate = (ServiceTemplate)p.next();
+ serviceTemplate.setParent(this);
+ }
+
}
private java.util.Map _descriptors;
diff --git a/java/src/IceGrid/TreeNode/Services.java b/java/src/IceGrid/TreeNode/Services.java index a54b58cfc19..7848234a622 100755 --- a/java/src/IceGrid/TreeNode/Services.java +++ b/java/src/IceGrid/TreeNode/Services.java @@ -90,5 +90,15 @@ class Services extends Parent }
}
+ public void cleanup()
+ {
+ java.util.Iterator p = _children.iterator();
+ while(p.hasNext())
+ {
+ Service service = (Service)p.next();
+ service.cleanup();
+ }
+ }
+
private java.util.List _descriptors;
}
|