quickfix-j / quickfixj

QuickFIX/J is a full featured messaging engine for the FIX protocol. - This is the official project repository.
http://www.quickfixj.org
Other
959 stars 613 forks source link

`MessageFactory` returns null - `create(FIX5.0SP2, AE, 457)` instead of an instance of `NoUnderlyingSecurityAltId` group #822

Open ishabandi67 opened 3 months ago

ishabandi67 commented 3 months ago

Describe the bug quickfix.fix50sp2.MessageFactory.create(FIX5.0SP2, AE, 457) returns null instead of an instance of NoUnderlyingSecurityAltId group

To Reproduce Create a simple Junit to call this method with the above mentioned parameters.

Expected behavior Add case "457" under case "AE" (L617) in the nested switch statements to make sure we return the correct instance because it's valid group for quickfix.fix50sp2.TradeCaptureReport.class i.e. it is clearly defined in FIX50SP2.xml

i.e. (TradeCaptureReport.UnderlyingInstrument.UndSecAltIDGrp.NoUnderlyingSecurityAltID)

system information:

Additional context This issue doesn't seem to exist in fix44 or earlier. Possibly an issue with MessageFactory.xsl and how FIX50SP2 behaves due to the diff in session and app level messages.

Use case: we store fix messages in json format and while converting them back to TradeCaptureReport instance, we use MessageFactory.create(String beginString, String messageType, int correspondingFieldId) to create internal groups. The above bug, returns null and we currently handle it by just skipping the population of this group as it's not of any use to us currently.

chrjohn commented 3 months ago

Could you post a code snippet of how you create the FIX message from JSON? Also, shouldn't you use createGroup to create groups? But maybe I misunderstood what you try to achieve. Code example or unit test would be helpful. Thanks :)