# Class NodeReferenceTable

java.lang.Object
javax.media.j3d.NodeReferenceTable

public class NodeReferenceTable extends Object
The NodeReferenceTable object is used by a leaf node's `updateNodeReferences` method called by the `cloneTree` method. The NodeReferenceTable maps nodes from the original subgraph to the new nodes in the cloned subgraph. This information can then be used to update any cloned leaf node references to reference nodes in the cloned subgraph.

During a `cloneTree` call, after all nodes have been duplicated, each SceneGraphObject's `updateNodeReferences` method is called. This method takes a NodeReferenceTable object as a parameter. The SceneGraphObject's `updateNodeReferences` method can then use the `getNewObjectReference` method from this object to get updated references to objects that have been duplicated in the new cloneTree sub-graph. If a match is found, a reference to the corresponding SceneGraphObject in the newly cloned sub-graph is returned. If no corresponding reference is found, either a DanglingReferenceException is thrown by the `cloneTree` method or a reference to the original SceneGraphObject is returned depending on the value of the `allowDanglingReferences` parameter passed in the `cloneTree` call.

See Also:
  - `SceneGraphObject.updateNodeReferences(NodeReferenceTable)`
  - `Node.cloneTree()`
  - `DanglingReferenceException`

## Constructor Summary

Constructors
Constructor
Description
`NodeReferenceTable()`
Constructs an empty NodeReferenceTable.

## Method Summary

Modifier and Type
Method
Description
`final SceneGraphObject`
`getNewObjectReference(SceneGraphObject oldReference)`
This method is used in conjunction with the `cloneTree` method.

### Methods inherited from class Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Constructor Details

### NodeReferenceTable

public NodeReferenceTable()
Constructs an empty NodeReferenceTable.

Since:
  Java 3D 1.2

## Method Details

### getNewObjectReference

public final SceneGraphObject getNewObjectReference(SceneGraphObject oldReference)
This method is used in conjunction with the `cloneTree` method. It can be used by the `updateNodeReferences` method to see if a SceneGraphObject that is being referenced has been duplicated in the new cloneTree sub-graph.

A SceneGraphObject's `updateNodeReferences` method would use this method by calling it with the reference to the old (existed before the cloneTree operation) object. If the object has been duplicated in the cloneTree sub-graph, the corresponding object in the cloned sub-graph is returned. If no corresponding reference is found, either a DanglingReferenceException is thrown or a reference to the original SceneGraphObject is returned depending on the value of the `allowDanglingReferences` parameter passed in the `cloneTree` call.

Parameters:
  `oldReference` - the reference to the object in the original sub-graph.
Returns:
  A reference to the corresponding object in the cloned sub-graph. If no corresponding object exists, either a DanglingReferenceException will be generated by the `cloneTree` method or a reference to the original object is returned depending on the value of the `allowDanglingReferences` parameter passed in the `cloneTree` call.
See Also:
  - `SceneGraphObject.updateNodeReferences(NodeReferenceTable)`
  - `Node.cloneTree()`
  - `DanglingReferenceException`