[QFJ-647] Out of Order Repeating Group Members Created: 27/Oct/11  Updated: 20/Dec/13  Resolved: 20/Dec/13

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

Type: Bug Priority: Default
Reporter: Jodev Devassy Assignee: Unassigned
Resolution: Cannot Reproduce Votes: 1
Labels: None


 Description   

I am trying to validate an incoming market data.

This is the piece of code that attempts to validate the message :

try

{ System.out.println("Validating MarketData"); DataDictionary dd = new DataDictionary("FIX50.xml"); dd.setCheckUnorderedGroupFields(false); dd.validate(message); System.out.println("Market data validated"); }

catch (Exception e)

{ e.printStackTrace(); }

This is the FIX message :
20111027-14:48:39: 8=FIXT.1.19=22335=Server56=Connection34=2452=20111027-14:10:04.8171021=220203=1268=2279=0269=055=EUR/USD461=RCSXXX63=0270=1.41193271=3000000279=2269=155=EUR/USD461=RCSXXX63=0270=1.41211271=10000000010=209

This is the contents from FIX50.xml :

<message name="MarketDataIncrementalRefresh" msgtype="X" msgcat="app">
<field name="MDReqID" required="N"/>
<field name="MDBookType" required="N"/>
<field name="MDLastIncrementalRefresh" required="N"/>
<component name="MDIncGrp1" required="Y"/>
</message>

<component name="MDIncGrp1">
<group name="NoMDEntries" required="Y">
<field name="MDUpdateAction" required="Y"/>
<field name="MDEntryType" required="N"/>
<field name="Symbol" required="N"/>
<field name="CFICode" required="N"/>
<field name="SettlType" required="N"/>
<field name="MDEntryPx" required="N"/>
<field name="MDEntrySize" required="N"/>
</group>
</component>

This is the part of output :

Validating MarketData
quickfix.FieldException: Out of order repeating group members, field=270
at quickfix.Message.parseGroup(Message.java:617)
at quickfix.Message.parseBody(Message.java:556)
at quickfix.Message.parse(Message.java:467)

Please advise how to process the message.



 Comments   
Comment by Jodev Devassy [ 27/Oct/11 ]

Sorry. I deleted some tags from the FIX message unknowingly. This is a better version of the same :

20111027-14:48:39: 8=FIXT.1.19=22335=X49=Server56=Connection34=2452=20111027-14:10:04.8171021=220203=1268=2279=0269=055=EUR/USD461=RCSXXX63=0270=1.41193271=3000000279=2269=155=EUR/USD461=RCSXXX63=0270=1.41211271=10000000010=209

Comment by James Olsen [ 14/Mar/12 ]

I'm having the same issue via the ValidateUnorderedGroupFields='N' setting. It does not seem to work in 1.5.1. I've read the many related issues and their duplicates that claim this is fixed and that the correct setting to use to turn off out of order group validation is ValidateUnorderedGroupFields='N', however it definitely does not work.

Comment by Christoph John [ 15/Mar/12 ]

@Jodev:
The following code works with QF/J 1.5.2 without problems. The message is validated successfuly. Please note that I have removed the tag 20203 from the original message since it is not part of the FIX5.0 data dictionary.

    public static void main( String[] args )
        throws Exception {

        DataDictionary dd = new DataDictionary( "FIX50.xml" );
        dd.setCheckUnorderedGroupFields( false );
        String messageString = "8=FIXT.1.19=22335=X49=Server56=Connection34=2452=20111027-14:10:04.8171021=2268=2279=0269=055=EUR/USD461=RCSXXX63=0270=1.41193271=3000000279=2269=155=EUR/USD461=RCSXXX63=0270=1.41211271=10000000010=107";
        Message message = new Message();
        message.fromString( messageString, dd, true );
        // double check
        dd.validate( message );
        System.out.println( "validated successfully!");


    }

@James:
Have you tried with QF/J 1.5.2? Do you have a test case that shows the incorrect behaviour?

Comment by Don Rizzo [ 14/Sep/13 ]

messageString does not contain the FIX delimiters, so validation will always fail.

Generated at Fri May 03 23:52:02 UTC 2024 using JIRA 7.5.2#75007-sha1:9f5725bb824792b3230a5d8716f0c13e296a3cae.