Uploaded image for project: 'QuickFIX/J'
  1. QuickFIX/J
  2. QFJ-263

ConfigError when trying to setup SessionSettings from code by filling out Dictionary object

    Details

    • Type: Other
    • Status: Closed
    • Priority: Major
    • Resolution: Incomplete
    • Affects Version/s: 1.3.0
    • Fix Version/s: None
    • Component/s: Engine
    • Labels:
      None
    • Environment:
      Windows XP Professional with JRE 1.6.0.03 running Eclipse 3.3.1.1 and QuickFix/J 1.3.0

      Description

      I`m new to Java but I hope my stupidness regarding this environment is not the case of this issue I`m having.

      I`m trying to have a QuickFix/J application running. I`m using the same method used in C# with QuickFix.NET: I`m creating the SessionSettings and its configuration Dictionary manually from code. Anyway, the thing is that when I try to assign the Dictionary object to SessionSettings Eclipse tells me I have a ConfigError. I tried different schematics, I even tried with sample config files, still ConfigError. Here is my code:

      import quickfix.ConfigError;
      import quickfix.Message;
      import quickfix.SessionID;

      public class QFApplication extends quickfix.MessageCracker implements quickfix.Application {

      public QFApplication() {
      quickfix.SessionSettings settings = new quickfix.SessionSettings();

      quickfix.Dictionary dictionary = new quickfix.Dictionary("session");
      dictionary.setLong(quickfix.Session.SETTING_HEARTBTINT, 600);
      dictionary.setLong(quickfix.Initiator.SETTING_RECONNECT_INTERVAL, 1);
      dictionary.setString(quickfix.FileStoreFactory.SETTING_FILE_STORE_PATH, "c:/qfstore");
      dictionary.setString(quickfix.FileLogFactory.SETTING_FILE_LOG_PATH, "c:/qfstore/log");
      dictionary.setString(quickfix.Session.SETTING_START_TIME, "00:00:00");
      dictionary.setString(quickfix.Session.SETTING_END_TIME, "00:00:00");
      dictionary.setBool(quickfix.Session.SETTING_USE_DATA_DICTIONARY, true);
      dictionary.setString(quickfix.Session.SETTING_DATA_DICTIONARY, "c:/qfstore/dictionaries/FIX42.xml");
      dictionary.setString("BeginString", quickfix.FixVersions.BEGINSTRING_FIX42);
      dictionary.setString(quickfix.SessionSettings.SENDERCOMPID, "sender");
      dictionary.setString(quickfix.SessionSettings.TARGETCOMPID, "receiver");
      dictionary.setString(quickfix.SessionFactory.SETTING_CONNECTION_TYPE, quickfix.SessionFactory.INITIATOR_CONNECTION_TYPE);
      dictionary.setBool(quickfix.Session.SETTING_RESET_ON_LOGON, false);
      dictionary.setBool(quickfix.Session.SETTING_RESET_ON_LOGOUT, true);
      dictionary.setBool(quickfix.Session.SETTING_RESET_ON_DISCONNECT, true);
      dictionary.setString(quickfix.Initiator.SETTING_SOCKET_CONNECT_HOST, "127.0.0.1");
      dictionary.setLong(quickfix.Initiator.SETTING_SOCKET_CONNECT_PORT, 1025);
      dictionary.setBool(quickfix.Session.SETTING_PERSIST_MESSAGES, true);

      /*
      so I`m setting up the dictionary all ready to be added to session, I need to create a new session with the BeginString identical with the one from Dictionary otherwise QuickFix will not let me add the dictionary to the sessionid and that "settings.set(session, dictionary);" throws exception in the IDE, I can`t get to the source of it though and when the try / catch is there it will not enter the catch part like it did not crash
      */

      quickfix.SessionID session = new quickfix.SessionID(
      new quickfix.field.BeginString("FIX.4.2"),
      new quickfix.field.SenderCompID("sender"),
      new quickfix.field.TargetCompID("receiver")
      );
      try

      { settings.set(session, dictionary); }

      catch (ConfigError e)

      { e.printStackTrace(System.out); }

      quickfix.FileLogFactory logger = new quickfix.FileLogFactory(settings);
      quickfix.FileStoreFactory storer = new quickfix.FileStoreFactory(settings);
      quickfix.MessageFactory messages = new quickfix.DefaultMessageFactory();
      try

      { quickfix.SocketInitiator initiator = new quickfix.SocketInitiator(this, storer, settings, logger, messages); }

      catch (ConfigError e)

      { // TODO Auto-generated catch block e.printStackTrace(System.out); }

      }

      public void onCreate(SessionID sessionID) {}

      public void onLogon(SessionID sessionID) {}

      public void onLogout(SessionID sessionID) {}

      public void toAdmin(Message message, SessionID sessionID) {}

      public void fromAdmin(Message message, SessionID sessionID)
      throws quickfix.FieldNotFound, quickfix.IncorrectDataFormat, quickfix.IncorrectTagValue, quickfix.RejectLogon {}

      public void toApp(Message message, SessionID sessionID)
      throws quickfix.DoNotSend {}

      public void fromApp(Message message, SessionID sessionID)
      throws quickfix.FieldNotFound, quickfix.IncorrectDataFormat, quickfix.IncorrectTagValue, quickfix.UnsupportedMessageType

      { crack(message, sessionID); }

      }

      all the best and I hope I did not upset any Java gurus out there with my stupid newbie code,
      thank you, my respects to you all,
      Ionel Roman

        Attachments

          Activity

          There are no comments yet on this issue.

            People

            • Assignee:
              Unassigned
              Reporter:
              ionel.roman Ionel Roman
            • Votes:
              0 Vote for this issue
              Watchers:
              0 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: