===== Disposable Nodes/Fields ===== A Node is considered deleted when it is removed from the graph. The Node is made "transient", //i.e.// it is not handled by the [[https://javadoc.grogra.de/graph/de/grogra/persistence/PersistenceManager.html|persistence manager]] anymore. Once a Node is "transient" it will be automatically garbage collected by Java. However, a Node can have attributes (fields in java) that require a specific dispose method (e.g [[:groimp-platform:pointcloud|cloud]] objects, or [[:groimp-platform:graphexplorerstructure|secondary graph]]). In most cases, the nodes are not "informed" that they are made transient, thus it is not convenient to add a listener on them (see the GraphManager's [[:dev-guide:base-objects:graph-listeners|listeners]]). Indeed, when a Node is deleted, if it has connected edges of Node that are not connected to the graph anymore, they all are deleted. But only the first one is visited. To ensure an object (that can be used as a Node's attribute) is disposed properly it should implements the [[https://javadoc.grogra.de/graph/de/grogra/persistence/DisposableField.html|DisposableField]] interface. ==== DisposableField interface ==== In order to make the GraphManager dispose an attribute of a Node it (the field) simply needs to implement DisposableField.