Node controller classes

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:

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:

Class nameDescription
com.metrici.xerula.NodeController The base node controller class.
com.metrici.xerula.CustomNodeControllerAllowDuplicates For a member type, allows duplicate members. This node controller class is deprecated in favour of setting Duplicate rule.
com.metrici.xerula.CustomNodeControllerInheritFrom Provides behaviour for the Inherit From (system.INHERIT_FROM) member type, to implement inheritance.
com.metrici.xerula.CustomNodeControllerMemberTypeList 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.
com.metrici.xerula.CustomNodeControllerNodeControllerClass Used by Type Node Controller Class and Instance Node Controller Class to validate node controller classes.
com.metrici.xerula.CustomNodeControllerSystemAuthorised 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.)
com.metrici.xerula.CustomNodeControllerUniqueValues 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.
com.metrici.xerula.CustomNodeControllerUniqueMembers 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.
com.metrici.xerula.CustomNodeControllerUser 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:
  • Allows the development version of the node to be used always.
  • Allows user permissions to be used to access the node, as well as node permissions.
  • Validates that the node reference is based on the user logon reference.
com.metrici.xerula.CustomNodeControllerUserDerivation 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.
com.metrici.xerula.CustomNodeControllerUserType 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)
com.metrici.xerula.CustomNodeControllerWithExtensionScripts 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.