The decoder package holds the reference implementation for the OpenLR decoder according to the OpenLR whitepaper. This decoder takes an OpenLR location reference and finds back the location in the decoder map database. The location reference is map independent and can be generated by the OpenLR encoder. Encoder and decoder map might differ in version and might also rely on different map vendors.
The decoder package requires the OpenLR data and map package. The interfaces in the map package must also be implemented in order to access the application map database. The data package provides a PhysicalDecoder interface so that different physical formats can be used. The implementation of this interface needs to be registered as a service and the decoder will find the corresponding physical decoder automatically during runtime. The decoder is capable to decode a single location reference as well as a set of location references in a row (see Code example). The decoding process is configurable using decoder properties (see Configure the decoding process).
The implementation also offers logging functionality (log4j) which can be configured using the logging.properties file provided in the package or you need to put a file name log4j.properties in your classpath.
Further details of the decoding steps can be found in the OpenLR whitepaper and also in the code documentation.