XRPLF/xrpl4j

Consolidate String to UnsignedLong conversions in `UIntType` classes

Opened this issue · 0 comments

Currently, UIntType has a Constructor that takes an UnsignedLong, which works mostly well.

However, in this hierarchy of calls, the UnsignedLong is converted into a hex-string so that it can be converted into a UnsignedByteArray.

In other places in the code (e.g., JSON deserialization), we start with a hex string, convert to an UnsignedLong, then pass this value up the constructor chain only to be converted back into a String and then to a ByteArray.

We should be able to make this more efficient, such as by creating a set of protected constructors in UIntType that allows a hex-string to be suppllied, and then coverted to an UnsignedByteArray, potentially skipping the conversion into an UnsignedLong.

However, to be safe, we should test a variety of inputs here to make sure that the intermediate conversion to UnsignedLong isn't actually doing something useful that's required before conversion to an UnsignedByteArray.