X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=org.simantics.g3d%2Fsrc%2Forg%2Fsimantics%2Fg3d%2Fscenegraph%2Fbase%2FParentNode.java;h=5c834fba1dd8b89233f1dbc4e33c5f9a30fb42a4;hb=5750b207d04063d1b2f0128eb5296d22ffec302e;hp=7da387d7fa5866ae6a5e6117000ee6b48837c044;hpb=53d55c24c779745f188bdb18d32f71d20acb61b2;p=simantics%2F3d.git diff --git a/org.simantics.g3d/src/org/simantics/g3d/scenegraph/base/ParentNode.java b/org.simantics.g3d/src/org/simantics/g3d/scenegraph/base/ParentNode.java index 7da387d7..5c834fba 100644 --- a/org.simantics.g3d/src/org/simantics/g3d/scenegraph/base/ParentNode.java +++ b/org.simantics.g3d/src/org/simantics/g3d/scenegraph/base/ParentNode.java @@ -12,7 +12,6 @@ package org.simantics.g3d.scenegraph.base; import java.util.ArrayList; -import java.util.Collection; import java.util.List; import org.simantics.utils.datastructures.MapList; @@ -22,8 +21,13 @@ public abstract class ParentNode extends Node { private MapList children = new MapList(); public synchronized void addNode(String relName, T child) { - if (child.getParent() != null) + if (child == null) + throw new NullPointerException("Cannot add null child"); + if (child.getParent() != null) { + if (child.getParent() == this) + throw new IllegalArgumentException("Given node is already a child"); child.getParent().deattachNode(child.getParentRel(), child); + } child.setParent(this, relName); children.add(relName, (T) child);