📄️ ISO Message Packing
ISO-8583 is a binary interchange standard for financial messages. Unlike JSON or XML, where the structure is self-describing, an ISO-8583 message is a compact byte stream. To read it you need the spec — and to implement the spec you need the packager layer.
📄️ ISOComponent: Composite Pattern
The entire jPOS message model is built on a single abstract class: ISOComponent.
📄️ Field Packagers
ISOFieldPackager is the abstract base for everything that knows how to convert a single ISOComponent to and from bytes:
📄️ Bitmaps
The bitmap is ISO-8583's field-presence indicator. Instead of encoding field tags in the wire stream (as TLV formats do), ISO-8583 uses a compact bit array: bit N set means field N is present in the message body that follows.
📄️ GenericPackager
After writing several Java packager classes and noticing they were all the same boilerplate — an array of ISOFieldPackager objects, one per field — jPOS developer Eoin Flood wrote GenericPackager: a packager that reads field descriptions from an XML file and instantiates the right field packagers at startup.
📄️ ISOUtil: Byte Manipulation Helpers
ISOUtil is the Swiss Army knife of jPOS low-level byte manipulation. It lives in org.jpos.iso.ISOUtil and is a static utility class — no instantiation, all static methods.