[QFJ-732] Unable to parse messages when the first tag inside the group is another group Created: 05/Mar/13 Updated: 13/May/13 Resolved: 13/May/13 |
|
Status: | Closed |
Project: | QuickFIX/J |
Component/s: | Engine |
Affects Version/s: | 1.5.2 |
Fix Version/s: | None |
Type: | Bug | Priority: | Critical |
Reporter: | Srinivas Kirti Teja Rao | Assignee: | Unassigned |
Resolution: | Duplicate | Votes: | 0 |
Labels: | None | ||
Environment: |
java 6, windows |
Issue Links: |
|
Description |
The function parseGroup(String msgType, StringField field, DataDictionary dd, FieldMap parent) in quickfix.Message.java does not consider a case where the first tag in the group is another group. if (field.getTag() == firstField) { group = new Group(groupCountTag, firstField, groupDataDictionary.getOrderedFields()); I looked at the fix specification to see if that is a valid message, having a group as first tag in another group, I think it is allowed. I am using FIX 4.2 spec for this. The simple but not the best fix is to pull the code out of the else and let is execute for the first field as well. |
Comments |
Comment by Srinivas Kirti Teja Rao [ 05/Mar/13 ] |
by "pull the code out of else" i mean the code to parse the inner group out of the else condition. |
Comment by Grant Birchmeier [ 05/Mar/13 ] |
What is the message that you are trying to parse? Is it a custom message? I'm not sure if the spec forbids it, but I also don't think the default message/field set has any messages where this occurs. |
Comment by Srinivas Kirti Teja Rao [ 05/Mar/13 ] |
It is QuoteAcknowledgement message but our customer does not send any other field in NoQuoteSets except for NoQuoteEntries. <message name="QuoteAcknowledgement" msgcat="app" msgtype="b"> |
Comment by Srinivas Kirti Teja Rao [ 05/Mar/13 ] |
I think you are right, i didnt find with any default message where this occurs but the spec does not forbid it. So it is still a valid message I believe. |
Comment by Christoph John [ 05/Mar/13 ] |
I think the problem is that the first field of a repeating group is always required to be set since it acts as delimeter. Could be difficult in your case. |
Comment by Srinivas Kirti Teja Rao [ 05/Mar/13 ] |
FIX 4.2 spec mandates the first field to be present always. But the first field in my case turned out to be group and it is present always in the message. I didnt find anything that says FIX42 spec forbids this and the above code in parseGroup assumes the first field is not a group. But yeah, i will try and refer the current fix spec and see if i find any clarifications regarding this. |
Comment by Srinivas Kirti Teja Rao [ 07/Mar/13 ] |
I referred to the FIX spec 5 and found nothing that forbids a group being a first field in another group. |
Comment by Srinivas Kirti Teja Rao [ 07/Mar/13 ] |
I have also posted the question on validity of message on FIX general discussion forum (http://fixprotocol.org/discuss/read/0cd64db1) |
Comment by Srinivas Kirti Teja Rao [ 08/Mar/13 ] |
The response the thread says is it is allowed to have a repeating group as first field in another repeating group. PartyRiskLimitsGrp is an example for this construct. There are also concerns of how 35=b message is modeled in my case but then that is the message structure decided by one of our makers and because FIX does not forbid that message structure I do not have enough justification to go back and tell them it is invalid structure . Quickfixj as a fix engine i believe should be able to parse these messages. Can we please look at the fixing the problem? |
Comment by Christoph John [ 13/May/13 ] |
Closed in favour of |