From: Andrew M. <mun...@gm...> - 2019-07-11 17:46:40
|
The DD is the one being used. If I rename it temporarily I get Exception in thread "main" quickfix.ConfigError: Could not find data dictionary: ./etc/FIX44.modified.xml tags are present: $ grep NoNotes2 FIX44.modified.xml <group name="NoNotes2" required="N"> <field number="9610" name="NoNotes2" type="NUMINGROUP"/> I tried renaming the group to NoNotes2 in case there was some naming collision. Could this error be caused by some other field or group naming collision elsewhere in the DD I was given? Everything looks ok but I must be overlooking something. Can I just in-line the Group into the ExecutionReport msg definition or must Groups live in Components? On Thu, Jul 11, 2019 at 12:35 PM Grant Birchmeier <gbi...@co...> wrote: > QuickFIX/J Documentation: http://www.quickfixj.org/documentation/ > QuickFIX/J <http://www.quickfixj.org/documentation/QuickFIX/J> Support: > http://www.quickfixj.org/support/ > > > Regarding your question about components, please read my SO answer here: > https://stackoverflow.com/a/29774713/650475 > I think that will clarify the concept. > > I don't see anything obviously wrong in your message or DD definitions. > 9610 is ok to appear in any top-level (not in another group) part of the > message, and must be immediately followed by 9611 and then optionally > 9612/13 (I'm sure you know all this already). > > My gut says your engine isn't reading the right config. I mean, what > you've posted all looks right. Are you sure you copied the new DD to /etc/FIX44.modified.xml > ? > > > On Thu, Jul 11, 2019 at 10:22 AM Andrew Munn <mun...@gm...> wrote: > >> QuickFIX/J Documentation: http://www.quickfixj.org/documentation/ >> QuickFIX/J <http://www.quickfixj.org/documentation/QuickFIX/J> Support: >> http://www.quickfixj.org/support/ >> >> >> Adding subject >> >> >> On Thu, Jul 11, 2019 at 11:05 AM Andrew Munn <mun...@gm...> wrote: >> >>> QuickFIX/J Documentation: http://www.quickfixj.org/documentation/ >>> QuickFIX/J <http://www.quickfixj.org/documentation/QuickFIX/J> Support: >>> http://www.quickfixj.org/support/ >>> >>> >>> I'm receiving FIX 4.4 ExecutionReport msgs from Bloomberg and rejecting >>> them with: >>> >>> "Rejecting invalid message: quickfix.FieldException: Tag not defined for >>> this message type, field=9610" >>> >>> I'm using the DataDictionary Bloomberg provided. >>> >>> I've rebuilt QF/J 2.1.1 on Windows using the provided DD. My process to >>> rebuild is: >>> - delete all instances of FIX44.modified.xml in the QF directory tree >>> - copy the provided DD to >>> c:\java\qfj-2.1.1-bloomberg-map\quickfixj-messages\quickfixj-messages-fix44\src\main\resources\FIX44.modified.xml >>> - do not modify FIX44.xml >>> - mvn clean package -Dmaven.javadoc.skip=true -DskipTests >>> -PskipBundlePlugin -DskipAT=true >>> >>> Directory of >>> c:\java\qfj-2.1.1-bloomberg-map\quickfixj-messages\quickfixj-messages-fix44\src\main\resources >>> 2019-07-11 09:16 AM 287,770 FIX44.modified.xml >>> 2018-11-12 02:11 PM 336,023 FIX44.xml >>> >>> I get warnings like these. In the past I was able to ignore then when >>> building for other counterparties. >>> >>> [WARNING] quickfixj-all-2.1.1.jar, quickfixj-messages-all-2.1.1.jar >>> define 7190 overlapping classes: >>> [WARNING] quickfixj-all-2.1.1.jar, quickfixj-codegenerator-2.1.1.jar >>> define 5 overlapping classes: >>> [WARNING] quickfixj-core-2.1.1.jar, quickfixj-all-2.1.1.jar define 238 >>> overlapping classes: >>> [WARNING] quickfixj-dictgenerator-2.1.1.jar, quickfixj-all-2.1.1.jar >>> define 13 overlapping classes: >>> [WARNING] quickfixj-core-2.1.1.jar, quickfixj-all-2.1.1.jar, >>> quickfixj-messages-all-2.1.1.jar define 2530 overlapping classes: >>> [WARNING] maven-shade-plugin has detected that some class files are >>> [WARNING] present in two or more JARs. When this happens, only one >>> [WARNING] single version of the class is copied to the uber jar. >>> [WARNING] Usually this is not harmful and you can skip these warnings, >>> [WARNING] otherwise try to manually exclude artifacts based on >>> [WARNING] mvn dependency:tree -Ddetail=true and the above output. >>> [WARNING] See http://maven.apache.org/plugins/maven-shade-plugin/ >>> >>> FIX44.modified.xml has: >>> >>> <message name="ExecutionReport" msgtype="8" >>> msgcat="SingleGeneralOrderHandling"> >>> ... >>> <component name="Notes" required="N"/> >>> </message> >>> >>> <component name="Notes"> >>> <group name="NoNotes" required="N"> >>> <field name="NoteType" required="N"/> >>> <field name="NoteLabel" required="N"/> >>> <field name="NoteText" required="N"/> >>> </group> >>> </component> >>> >>> <field number="9610" name="NoNotes" type="NUMINGROUP"/> >>> <field number="9611" name="NoteType" type="STRING"> >>> <value enum="C" description="CustomerNote"/> >>> <value enum="D" description="DealerNote"/> >>> <value enum="I" description="PrivateOrInternalNote"/> >>> </field> >>> <field number="9612" name="NoteLabel" type="STRING"/> >>> <field number="9613" name="NoteText" type="STRING"/> >>> >>> (cfg file) >>> [DEFAULT] >>> AllowUnknownMsgFields=Y >>> UseDataDictionary=Y >>> AppDataDictionary=./etc/FIX44.modified.xml >>> ValidateFieldsOutOfOrder=Y >>> >>> I can successfully parse the ExecutionReport String they send to XML >>> like this: >>> >>> void parseSingleBlbExec(String data) throws InvalidMessage, ConfigError { >>> DataDictionary sessionDictionary = new >>> DataDictionary("c:\\temp\\FIX44.modified.xml"); >>> appDictionary = new >>> DataDictionary("c:\\temp\\FIX44.modified.xml"); >>> appDictionary.setCheckFieldsOutOfOrder(true); >>> appDictionary.setAllowUnknownMessageFields(false); >>> appDictionary.setCheckUserDefinedFields(true); >>> appDictionary.setCheckUnorderedGroupFields(true); >>> quickfix.fix44.ExecutionReport message = new >>> quickfix.fix44.ExecutionReport(); >>> message.fromString(data, sessionDictionary, appDictionary, true); >>> System.out.println(message.toXML(appDictionary)); >>> } >>> >>> But when the message arrives on a live session I generate a reject. >>> >>> Messages are like this: >>> >>> 8=FIX.4.4|9=1400|35=8|49=BLP_MAP_PROD3|56=XXX_PROD3|34=780|128=914171|347=UTF-8|142=Voice|144=FI|115=DCSVC_278_4|43=Y|122=20190711-11:18:25|52=20190711-14:10:12|30=XOFF|60=20190710-21:38:48.671|150=F|1950=8|31=123.456|151=0|541=20290515|32=99999|423=1|64=20190712|6=123.456|37=VCON:20190710:9999:9|157=58|38=99999|39=2|159=99999.99|669=123.456|460=6|223=0.123|14=999999|854=0|15=USD|75=20190710|106=US >>> TREASURY >>> N/B|17=VCON:20190710:xxxx:x:xx|167=XXXXXX|48=XXXXX86T2|198=3739:20190710:XXXXX:X|470=US|1430=V|381=123456.31|22=1|1913=0|54=2|7014=21|55=[N/A]|236=0.99|118=9999999.49|453=6|448=GS|447=D|452=1|802=2|523=3788|803=4014|523=N|803=4069|448=XXXXXXXXXXX:99999999|447=D|452=11|802=4|523=14|803=4|523=XXX >>> XXXXX|803=9|523=NEW >>> YORK|803=34|523=US|803=38|448=XXXXXXXXX:99999999|447=D|452=12|802=3|523=XXX >>> XX|803=9|523=NEW >>> YORK|803=34|523=US|803=38|448=XXXX|447=D|452=13|802=2|523=99999|803=9999|523=N|803=9999|448=BXT|447=D|452=16|448=XXXXXX:9999999|447=D|452=36|802=3|523=XXXX >>> XXXX|803=9|523=NEW >>> YORK|803=34|523=US|803=38|9610=3|9611=C|9612=Group|9613=XXX.XXX|9611=C|9612=Spread|9613=0|9611=C|9612=Prime|9613=XXX|454=4|455=USXXXXXXXXX|456=4|455=999999999|456=1|455=999999999|456=A|455=T|456=8|768=3|769=20190710-21:38:48.671|770=1|769=20190710-21:39:54.335|770=2|769=20190711-11:18:25.539|770=113|2529=1|2530=100|2531=9.9999999|10=210 >>> >>> 8=FIX.4.4|9=195|35=3|34=4|49=XXX_PROD3|52=20190711-14:10:12.422|56=BLP_MAP_PROD3|115=914171|128=DCSVC_278_4|143=Voice|145=FI|45=780|58=Tag >>> not defined for this message type, field=9610|371=9610|372=8|373=2|10=237| >>> >>> Must <component> blocks in the dictionary's message definition appear in >>> the same order that the repeating groups arrive in? >>> >>> What am I overlooking here? >>> >>> Thanks >>> _______________________________________________ >>> Quickfixj-users mailing list >>> Qui...@li... >>> https://lists.sourceforge.net/lists/listinfo/quickfixj-users >>> >> _______________________________________________ >> Quickfixj-users mailing list >> Qui...@li... >> https://lists.sourceforge.net/lists/listinfo/quickfixj-users >> > > > -- > Grant Birchmeier > *Connamara Systems, LLC* > *Made-To-Measure Trading Solutions.* > Exactly what you need. No more. No less. > http://connamara.com > _______________________________________________ > Quickfixj-users mailing list > Qui...@li... > https://lists.sourceforge.net/lists/listinfo/quickfixj-users > |