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

Validation settings do not get applied when no explicit AppDataDictionary is specified

    Details

    • Type: Bug
    • Status: Closed
    • Priority: Default
    • Resolution: Duplicate
    • Affects Version/s: None
    • Fix Version/s: 3.0.0
    • Component/s: None
    • Labels:
      None

      Description

      From mailing list https://sourceforge.net/p/quickfixj/mailman/message/36618317/

      [Quickfixj-users] Session validation settings have no effect for FIXT unless AppDataDictionary is set explicitly
      From: Ilya Kurnosov <kurniliya@gm...> - 2019-03-21 08:50:46

      Hello! I ran into some interesting behavior with quickfixj 2 today. My
      question is if it's intentionally designed this way? And, if yes, if
      someone could explain the reasoning behind it?

      The behavior I see is that all the session validation settings:

      • Session.SETTING_VALIDATE_FIELDS_HAVE_VALUES
        ("ValidateFieldsHaveValues")
      • Session.SETTING_VALIDATE_FIELDS_OUT_OF_ORDER
        ("ValidateFieldsOutOfOrder")
      • Session.SETTING_VALIDATE_UNORDERED_GROUP_FIELDS
        ("ValidateUnorderedGroupFields")
      • Session.SETTING_VALIDATE_USER_DEFINED_FIELDS
        ("ValidateUserDefinedFields")
      • Session.SETTING_ALLOW_UNKNOWN_MSG_FIELDS ("AllowUnknownMsgFields")

      have exactly no effect on the validation of FIXT application messages
      unless one also explicitly sets "AppDataDictionary" option
      (Session.SETTING_APP_DATA_DICTIONARY).
      I observe this behavior in tests, but the code in
      DefaultSessionFactory#processFixtDataDictionaries looks rather unambiguous
      too (
      https://github.com/quickfix-j/quickfixj/blob/QFJ_RELEASE_2_1_1/quickfixj-core/src/main/java/quickfix/DefaultSessionFactory.java#L283).
      It looks like DefaultSessionFactory#createDataDictionary (the only place
      using those Validate* and AllowUnknownMsgFields settings) is called to
      create app dictionary IIF AppDataDictionary is present.

      Is this behavior intentional?

      problem

      The default application dictionary is loaded if it is not specified but the validation settings do not get applied. This would only work if method DefaultSessionFactory#createDataDictionary got called.

        Attachments

          Issue Links

            Activity

              People

              • Assignee:
                chrjohn Christoph John
                Reporter:
                chrjohn Christoph John
              • Votes:
                0 Vote for this issue
                Watchers:
                1 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: