thread safety, visibility tighten

This commit is contained in:
Alexey Kudravtsev
2012-09-12 15:07:29 +04:00
parent 56b41eb99d
commit c90d81e702
2 changed files with 10 additions and 12 deletions
@@ -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