diff options
Diffstat (limited to 'java/src')
-rwxr-xr-x | java/src/IceGrid/Model.java | 2 | ||||
-rwxr-xr-x | java/src/IceGrid/TreeModelI.java | 3 | ||||
-rwxr-xr-x | java/src/IceGrid/TreeNode/ApplicationViewRoot.java | 5 | ||||
-rwxr-xr-x | java/src/IceGrid/TreeNode/NodeViewRoot.java | 13 | ||||
-rwxr-xr-x | java/src/IceGrid/TreeNode/Parent.java | 87 |
5 files changed, 91 insertions, 19 deletions
diff --git a/java/src/IceGrid/Model.java b/java/src/IceGrid/Model.java index 2bbd9f110ae..cb5672c0cb5 100755 --- a/java/src/IceGrid/Model.java +++ b/java/src/IceGrid/Model.java @@ -153,11 +153,13 @@ class Model NodeViewRoot nodeViewRoot =
(NodeViewRoot)TreeModelI.getTreeModel(TreeModelI.NODE_VIEW).getRoot();
+
for(int i = 0; i < desc.removeNodes.length; ++i)
{
nodeViewRoot.remove(desc.name, desc.removeNodes[i]);
}
nodeViewRoot.put(desc.name, desc.nodes, true);
+ nodeViewRoot.removeServers(desc.removeServers);
ApplicationViewRoot applicationViewRoot =
(ApplicationViewRoot)TreeModelI.getTreeModel(TreeModelI.APPLICATION_VIEW).getRoot();
diff --git a/java/src/IceGrid/TreeModelI.java b/java/src/IceGrid/TreeModelI.java index 092abc89e88..0770fd898a2 100755 --- a/java/src/IceGrid/TreeModelI.java +++ b/java/src/IceGrid/TreeModelI.java @@ -154,8 +154,6 @@ public class TreeModelI implements TreeModel public void fireNodesRemovedEvent(TreeModelEvent e)
{
- System.err.println("TreeModeI.fireNodesRemovedEvent");
-
// Guaranteed to return a non-null array
Object[] listeners = _listenerList.getListenerList();
@@ -163,7 +161,6 @@ public class TreeModelI implements TreeModel {
if (listeners[i] == TreeModelListener.class)
{
- System.err.println("firing");
((TreeModelListener)listeners[i + 1]).treeNodesRemoved(e);
}
}
diff --git a/java/src/IceGrid/TreeNode/ApplicationViewRoot.java b/java/src/IceGrid/TreeNode/ApplicationViewRoot.java index 73e66b21c17..f936f35637f 100755 --- a/java/src/IceGrid/TreeNode/ApplicationViewRoot.java +++ b/java/src/IceGrid/TreeNode/ApplicationViewRoot.java @@ -61,6 +61,7 @@ public class ApplicationViewRoot extends Parent // instances
//
Application child = new Application(desc, _nodeViewRoot, true);
+ child.addParent(this);
addChild(child, fireEvent);
return child;
}
@@ -77,6 +78,8 @@ public class ApplicationViewRoot extends Parent public void applicationSynced(ApplicationDescriptor desc)
{
+ System.err.println("applicationSynced " + desc.name);
+
applicationRemoved(desc.name, false);
Application child = applicationAdded(desc, false);
child.fireStructureChangedEvent(this);
@@ -84,6 +87,8 @@ public class ApplicationViewRoot extends Parent public void applicationUpdated(ApplicationUpdateDescriptor desc)
{
+ System.err.println("applicationUpdated " + desc.name);
+
Application application = (Application)findChild(desc.name);
application.update(desc);
}
diff --git a/java/src/IceGrid/TreeNode/NodeViewRoot.java b/java/src/IceGrid/TreeNode/NodeViewRoot.java index 72a504f54b2..19b2ad432e2 100755 --- a/java/src/IceGrid/TreeNode/NodeViewRoot.java +++ b/java/src/IceGrid/TreeNode/NodeViewRoot.java @@ -98,7 +98,18 @@ public class NodeViewRoot extends Parent public void removeServers(String[] removeServers)
{
- // TODO: implement!
+ if(removeServers.length > 0)
+ {
+ java.util.List serverList =
+ new java.util.LinkedList(java.util.Arrays.asList(removeServers));
+
+ java.util.Iterator p = _nodeMap.values().iterator();
+ while(p.hasNext() && serverList.size() > 0)
+ {
+ Node node = (Node)p.next();
+ node.removeChildren(serverList);
+ }
+ }
}
diff --git a/java/src/IceGrid/TreeNode/Parent.java b/java/src/IceGrid/TreeNode/Parent.java index 6dbb6920591..2b275eb982e 100755 --- a/java/src/IceGrid/TreeNode/Parent.java +++ b/java/src/IceGrid/TreeNode/Parent.java @@ -281,9 +281,6 @@ class Parent extends CommonBaseI String[] ids = (String[])childIds.clone();
java.util.Arrays.sort(ids);
-
- System.err.println("childIds.length == " + childIds.length);
- System.err.println("ids.length == " + ids.length);
Object[] childrenToRemove = new Object[ids.length];
int[] indices = new int[ids.length];
@@ -295,10 +292,7 @@ class Parent extends CommonBaseI while(p.hasNext() && j < ids.length)
{
- CommonBase child = (CommonBase)p.next();
- System.err.println("child.getId() == " + child.getId());
- System.err.println("ids[j] == " + ids[j]);
-
+ CommonBase child = (CommonBase)p.next();
if(ids[j].equals(child.getId()))
{
childrenToRemove[k] = child;
@@ -317,8 +311,79 @@ class Parent extends CommonBaseI fireNodesRemovedEvent(this, childrenToRemove, indices);
}
+
+ //
+ // in childIds: the children to remove
+ // out childIds: the children not removed
+ //
+ void removeChildren(java.util.List childIds)
+ {
+ if(childIds.size() == 0)
+ {
+ //
+ // Nothing to do;
+ //
+ return;
+ }
+
+ java.util.Collections.sort(childIds);
+
+ java.util.Vector childrenToRemove = new java.util.Vector(childIds.size());
+ int[] indices = new int[childIds.size()];
+
+ java.util.Iterator q = childIds.iterator();
+ java.util.Iterator p = _children.iterator();
+
+ int i = -1;
+ int k = 0;
+ while(q.hasNext() && p.hasNext())
+ {
+ String id = (String)q.next();
+
+ while(p.hasNext())
+ {
+ CommonBase child = (CommonBase)p.next();
+ i++;
+
+ if(id.equals(child.getId()))
+ {
+ childrenToRemove.add(child);
+ indices[k++] = i;
+ p.remove();
+ q.remove();
+ break; // while
+ }
+ else if(id.compareTo(child.getId()) < 0)
+ {
+ //
+ // Need to get next id
+ //
+ break; // while
+ }
+ }
+ }
+
+ if(k > 0)
+ {
+ childrenToRemove.trimToSize();
+ int[] trimedIndices;
+ if(childIds.size() > 0)
+ {
+ trimedIndices = new int[k];
+ System.arraycopy(indices, 0, trimedIndices, 0, k);
+ }
+ else
+ {
+ trimedIndices = indices;
+ }
+ fireNodesRemovedEvent(this,
+ childrenToRemove.toArray(),
+ trimedIndices);
+ }
+ }
+
void fireNodeInsertedEvent(Object source, Object child, int index)
{
int[] childIndices = new int[1];
@@ -358,14 +423,6 @@ class Parent extends CommonBaseI {
if(_paths[i] != null)
{
- System.err.print("Path = ");
- for(int j = 0; j < _paths[i].getPath().length; ++j)
- {
- System.err.print(_paths[i].getPath()[j].toString());
- }
- System.err.println("");
-
-
TreeModelEvent event = new TreeModelEvent(source, _paths[i],
childIndices, children);
TreeModelI.getTreeModel(i).fireNodesRemovedEvent(event);
|