mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
thread safety, visibility tighten
This commit is contained in:
@@ -73,9 +73,7 @@ public final class ObjectNode<T> {
|
||||
void removeChild(@NotNull ObjectNode<T> child) {
|
||||
synchronized (myTree.treeLock) {
|
||||
assert myChildren != null: "No children to remove child: " + this + ' ' + child;
|
||||
if (myChildren.remove(child)) {
|
||||
myTree.putNode(child.getObject(), null);
|
||||
}
|
||||
myChildren.remove(child);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -138,11 +136,11 @@ public final class ObjectNode<T> {
|
||||
private void remove() {
|
||||
myTree.putNode(myObject, null);
|
||||
synchronized (myTree.treeLock) {
|
||||
if (myParent != null) {
|
||||
myParent.removeChild(this);
|
||||
if (myParent == null) {
|
||||
myTree.removeRootObject(myObject);
|
||||
}
|
||||
else {
|
||||
myTree.removeRootObject(myObject);
|
||||
myParent.removeChild(this);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -67,14 +67,14 @@ public final class ObjectTree<T> {
|
||||
ObjectNode<T> childNode = getNode(child);
|
||||
if (childNode == null) {
|
||||
childNode = createNodeFor(child, parentNode);
|
||||
myRootObjects.remove(child);
|
||||
}
|
||||
else {
|
||||
ObjectNode<T> childParent = childNode.getParent();
|
||||
if (childParent != null) {
|
||||
childParent.removeChild(childNode);
|
||||
ObjectNode<T> oldParent = childNode.getParent();
|
||||
if (oldParent != null) {
|
||||
oldParent.removeChild(childNode);
|
||||
}
|
||||
}
|
||||
myRootObjects.remove(child);
|
||||
checkWasNotAddedAlready(childNode, child);
|
||||
parentNode.addChild(childNode);
|
||||
|
||||
@@ -96,12 +96,12 @@ public final class ObjectTree<T> {
|
||||
}
|
||||
|
||||
@NotNull
|
||||
private ObjectNode<T> getOrCreateNodeFor(@NotNull T object, @Nullable ObjectNode<T> parentNode) {
|
||||
private ObjectNode<T> getOrCreateNodeFor(@NotNull T object, @Nullable ObjectNode<T> defaultParent) {
|
||||
final ObjectNode<T> node = getNode(object);
|
||||
|
||||
if (node != null) return node;
|
||||
|
||||
return createNodeFor(object, parentNode);
|
||||
return createNodeFor(object, defaultParent);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
|
||||
Reference in New Issue
Block a user