It is possible to define user defined Ultra field types to use with an external block. A new Ultra field plugin is defined by extending DRUltraFieldPlugin. The code server will locate all such classes and make the field types available within the Ultra format system.
The plugin class defines which classes to use for encoding and decoding. Both encoding and decoding are optional operations, but if no decoder class is supplied, it will be impossible to decode the field type (and vice versa).
It is important to note that both the field decoder and encoder classes must be stateless to work properly. The reason is that each UDR decoder or encoder only keeps a single instance of the corresponding field decoder or encoder class.
A DRUltraFieldDecoder object is instantiated by the UDR decoder to handle all decoding of fields of the corresponding type.
A DRUltraFieldEncoder object is instantiated by the UDR encoder to handle all encoding of fields of the corresponding type.