0

I am working on an application using QuickFIX for .NET (ver 1.7). Due to the large amount of custom fields defined in our counterparty's data dictionary which are rejected by our FIX app, I decided to simply use their data dictionary.

However, they have a custom field type "TENOR" which caused exception so I followed the suggestion from this forum: QuickFIX counterparty DataDictionary gieves invalid type exception

and replaced TENOR type with STRING like this:

 <field number="12345" name="tenor" type="STRING"/> 

It was <field number="12345" name="tenor" type="TENOR"/>

But again when our app tried to log on to FIX host, it threw exception:"Object reference not set to an instance of an object."

Any idea how to fix this? Thank you.

[here are more stack trace from the exception:]

at QuickFix.DataDictionary.DataDictionary.parseMsgEl(XmlNode node, DDMap ddmap, Nullable`1 componentRequired)
at QuickFix.DataDictionary.DataDictionary.Load(Stream stream)
at QuickFix.SessionFactory.createDataDictionary(SessionID sessionID, Dictionary settings, String settingsKey, String beginString)
at QuickFix.SessionFactory.ProcessFixTDataDictionaries(SessionID sessionID, Dictionary settings, DataDictionaryProvider provider)
at QuickFix.SessionFactory.Create(SessionID sessionID, Dictionary settings)
at QuickFix.AbstractInitiator.CreateSession(SessionID sessionID, Dictionary dict)
at QuickFix.AbstractInitiator.Start()
Community
  • 1
  • 1
YCYC
  • 1
  • 1
  • 1
    Not enough here to go on. Got a stacktrace? – Grant Birchmeier Mar 01 '17 at 19:02
  • Unfortunately, the only stack trace is this "Object reference not set to an instance of an object.". How did you guys fix this issue? – YCYC Mar 01 '17 at 19:31
  • Grant, how did you replace TENOR with STRING? Like this: ? – YCYC Mar 01 '17 at 19:43
  • I think that should work. (I don't think I have firsthand exp with doing that, but it should work.) And I'm sure there's a stacktrace; that error message should be traced to a line or at least a function name. You got anyone nearby who might be able to help you with VisualStudio? – Grant Birchmeier Mar 01 '17 at 20:34
  • Grant, I added stack trace-see above. It happens when the app calls initiator.start() to start the session. Thanks. – YCYC Mar 01 '17 at 21:49
  • what was the error before you replaced the TENOR with STRING? – rupweb Mar 02 '17 at 10:06

1 Answers1

0

Sorry, I was sidetracked by other tasks. I worked on this issue again yesterday and made it work. As you know, starting from FIX 5, the convention is to keep app and session messages in two different data dictionaries. The counterparty's data dictionary has both session and app level messages. So I initially decided to clean it up and tried to remove the session level messages from application DD but obviously I didn't do a clean job - this is the reason I got this "Object reference not set to an instance of an object." exception.

When I simply used counterparty's DD as is, and replaced TENOR type with STRING, the application stopped crashing and logged on FIX host.

Grant, it seems your Java version does support TENOR type. When do you plan to upgrade .NET version to support it as well? Thank you.

YCYC
  • 1
  • 1