Uploaded image for project: 'QuickFIX/J'
  1. QuickFIX/J
  2. QFJ-962

FieldMap.setField(int key, Field<?> field) does not properly convert values

    Details

    • Type: Bug
    • Status: Open
    • Priority: Default
    • Resolution: Unresolved
    • Affects Version/s: 2.1.0
    • Fix Version/s: 3.0.0
    • Component/s: Engine
    • Labels:
      None

      Description

      QFJ-428 made the generic setField(int key, Field<?> field) method public, claiming this will avoid having to use a switch statement and call each type-specific overload explicitly.

      However, this is misleading and introduces a bug, since the two are not equivalent.

      Specifically, the type-specific overloads do proper type conversions on the value, while the generic setField does not. For example, if you pass a DoubleField with a very large or small value, it will convert it into a string in scientific notation (with exponent) which is invalid in the FIX protocol, whereas calling the type-specific setField(DoubleField field) will properly use the DoubleConverter to convert it correctly.

      When this method was non-public this was less of a problem, assuming its internal usages are correct (I don't know if this is the case, but assume it is). However making it public now creates a pitfall for anyone using this method in client code which will likely result in a bug on some data.

      The solution would be to either implement it fully with proper type conversion (e.g. using the switch statement from QFJ-428), or at the very least, to add a javadoc to this method that warns about using it and clearly states that it does not do proper type conversion, so users will be able to decide whether this is what they really intend to do or not.

        Attachments

          Issue Links

            Activity

              People

              • Assignee:
                Zano Wojciech Zankowski
                Reporter:
                amichair amichair
              • Votes:
                0 Vote for this issue
                Watchers:
                3 Start watching this issue

                Dates

                • Created:
                  Updated: