Fixed the null child check to throw IllegalArgumentException instead of NullPointerException

because user code should never throw NullPointerException.
Also made trying to add a child to itself an error instead of a no-op.  Attempting
to do something like guiNode.attachChild(guiNode) will now throw an IllegalArgumentException.
fix-openal-soft-deadlink
Paul Speed 5 years ago
parent c23f28b51c
commit c73fd99dd6
  1. 11
      jme3-core/src/main/java/com/jme3/scene/Node.java

@ -345,10 +345,13 @@ public class Node extends Spatial {
* @throws NullPointerException if child is null. * @throws NullPointerException if child is null.
*/ */
public int attachChildAt(Spatial child, int index) { public int attachChildAt(Spatial child, int index) {
if (child == null) if (child == null) {
throw new NullPointerException(); throw new IllegalArgumentException("child cannot be null");
}
if (child.getParent() != this && child != this) { if (child == this) {
throw new IllegalArgumentException("Cannot add child to itself");
}
if (child.getParent() != this) {
if (child.getParent() != null) { if (child.getParent() != null) {
child.getParent().detachChild(child); child.getParent().detachChild(child);
} }

Loading…
Cancel
Save