Configuring
Runtime behavior is controlled by DecoderSettings. You can pass settings to ByteDecoderFactory when you create ByteDecoder.
Custom composite classes
If the template contains custom composites, provide Java interfaces/classes for them:
- pass classes directly to
ByteDecoderFactory.create(...); - or set them in
DecoderSettings.setCustomCompositeClasses(...).
Value narrowing
Narrowing is numeric conversion between different integer widths or between signed/unsigned types.
Examples: int32 -> int16, uint32 -> int16, int64 -> uint32.
Use narrowing only when you clearly control source ranges. For details, see Advanced: Value narrowing.
Write narrowing
setEnableNarrowingOnWrite(...) / enableNarrowingOnWrite()
Turns write narrowing on or off. Default: false.
setValidateNarrowingOnWrite(...) / validateNarrowingOnWrite()
Turns runtime range validation on write narrowing on or off. Default: false.
Read narrowing
setEnableNarrowingOnRead(...) / enableNarrowingOnRead()
Turns read narrowing on or off. Default: false.
setValidateNarrowingOnRead(...) / validateNarrowingOnRead()
Turns runtime range validation on read narrowing on or off. Default: false.
Null data behavior
setEnableNullDataReturn(...) / enableNullDataReturn()
This option controls behavior of getters for optional fields when field value is SBE null:
true(default): getters return null representation;false: getters throw NullValueException.
When disabled, prefer tryGetInt(...) and tryGetString(...) style methods to test presence before reading value.
Range checking
setValidateValueRanges(...) / validateValueRanges()
When enabled, decoder validates values against minValue and maxValue from schema (if defined):
- on write, while setter methods are called;
- on read, while wire data is converted by getters.
If value is outside range, decoder throws WrongValueException.
Default: false.
Custom class loader
setParentLoader(...) / getParentLoader()
Sets parent class loader for generated classes.
Default is null, which means system class loader.
Default presets
Two presets are available:
- Default: backward-compatible behavior and minimal runtime checks.
- Full control: strict runtime checks for read/write operations.
Use DecoderSettings.createFullControlSettings() to get the strict preset.
| Setting name | Default | Full control |
|---|---|---|
validateValueRanges |
false |
true |
enableNullDataReturn |
true |
false |
enableNarrowingOnWrite |
false |
true |
validateNarrowingOnWrite |
false |
true |
enableNarrowingOnRead |
false |
true |
validateNarrowingOnRead |
false |
true |
Example:
Default preset:
DecoderSettings defaultSettings = new DecoderSettings();
ByteDecoder decoderWithDefaults = factory.create(defaultSettings, schema);
Full-control preset:
DecoderSettings fullControl = DecoderSettings.createFullControlSettings();
ByteDecoder decoderWithFullControl = factory.create(fullControl, schema);
Java SBE Decoder