[QFJ-981] Validation settings do not get applied when no explicit AppDataDictionary is specified Created: 19/Jul/19  Updated: 15/Jun/20  Resolved: 15/Jun/20

Status: Closed
Project: QuickFIX/J
Component/s: None
Affects Version/s: None
Fix Version/s: 3.0.0

Type: Bug Priority: Default
Reporter: Christoph John Assignee: Christoph John
Resolution: Duplicate Votes: 0
Labels: None

Issue Links:
Relates
is related to QFJ-982 Using the same dictionary file with d... Open

 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.



 Comments   
Comment by Christoph John [ 29/Nov/19 ]

Closing since already solved with QFJ-982.

Generated at Sat May 11 22:17:34 UTC 2024 using JIRA 7.5.2#75007-sha1:9f5725bb824792b3230a5d8716f0c13e296a3cae.