Most nodes use a standard node controller java class to control access to the node store.
Nodes can use alternative node controller classes. These can be specified in one of two ways:
- In the Type Node Controller Class (system.TYPE_NODE_CONTROLLER_CLASS) member on the node's type.
- In the Instance Node Controller Class (system.INSTANCE_NODE_CONTROLLER_CLASS) member of the node itself.
If both are specified, the instance takes precedence.
The classes are specified by using the full Java class name, and they are validated to make sure that they are permitted.
The following node controller classes are available:
|The base node controller class.
|For a member type, allows duplicate members. This node controller class is deprecated in favour of setting Duplicate rule.
|Provides behaviour for the Inherit From (system.INHERIT_FROM) member type, to implement inheritance.
|Provides behaviour for the Member Type List (system.MEMBER_TYPE_LIST) member type. Specifically, it calculates the impacts of deleting member types from a member type list.
|Used by Type Node Controller Class and Instance Node Controller Class to validate node controller classes.
|Allows the internal system user to perform any action on the node. This is used by internally-generated nodes which must be maintained outside of direct user control. (There is no risk in using this for other nodes, but it makes it clearer which nodes are being managed by the system, and is marginally more efficient not to put the additional checks for the system user in the general node class.)
|For a member type, allows duplicate targets, but disallows duplicate values. This is the opposite of the base node controller, which allows duplicate value but not duplicate targets. Used for Bindings (system.BINDINGS). This node controller class is deprecated in favour of setting Duplicate rule.
|For a member type, disallows duplicates of the same combination of value, scale and target. This node controller class is deprecated in favour of setting Duplicate rule.
|Supports User nodes of type USER_TYPE (system.USER_TYPE), which mirror user definitions. It is an extension of the system authorised node controller, and additionally:
|Used by the User Derivation (system.USER_DERIVATION) member type (which is a member type on USER_TYPE (system.USER_TYPE) that is not shown) to derive the user node name from the user name.
|Supports the node type USER_TYPE, and enforces that only the system user can create nodes of this type.
(Possibly this should be renamed CustomNodeControllerSystemUseOnly)
|Supports extension scripts. Any nodes or member types with extension scripts should use this custom node controller.
All node controller classes are considered safe, i.e. they can be used for any node without compromising security. However, they may not give the intended results, and may not be as efficient.