Giving specific location to the emaconfig.xml file

Is there way to give specific location to the emaconfig.xml file instead of using the default location (where the binary is available)

Best Answer

  • In EMA Java, it's hard code to read EmaConfig.xml where the EMA application is run from. The source code is loadFile() of ConfigReader.java in <Elektron SDK java package>\Ema\Src\main\java\impl\com\thomsonreuters\ema\access as shown below:

    image

    You can modify the source code above to read EmaConfig.xml which is not in application run directory. For example to read EmaConfig.xml in D:\workspace:

    protected void loadFile() 
    {
    _configFileName = "EmaConfig.xml";
    _configFileLocation = "D:\\workspace\\";
    errorTracker().append( "reading configuration file [" )
    .append( _configFileName )
    .append( "] from [" ).append( _configFileLocation ).append ("]")
    .create(Severity.INFO);
    XMLConfiguration config = null;
    try
    {
    config = new XMLConfiguration(_configFileLocation+_configFileName);
    }
    catch (ConfigurationException e)
    {
    errorTracker().append(e.getMessage()).create(Severity.ERROR);
    return;
    }

Answers

  • Thanks

    Is this similar in c++.

    We have to modify the source code and build it to give specific path other than binary location

  • @thimalk

    Yes, this is similar in EMA C++. You can find the related source code in the EmaConfigImpl::readXMLconfiguration() function of the EmaConfigImpl.cpp file.

  • Hi @thimalk

    For the C++ version, you may also be interested in "example 421__MarketPrice__ProgrammaticConfig"

    This shows how you can populate the OmmConsumerConfig programmatically - rather than relying on EmaConfig.xml

    As you know if EmaConfig.xml is missing then EMA defaults values - as described in the EMACPP ConfigGuide

    You could then override the defaults programatically using your config values read from another location.

  • The next ESDK release - ESDK release 1.1.1 - will include a feature that allows application developers to supply an optional path to a configuration file. The path may be a directory, in which case the library will load a file named EmaConfig.xml from that directory, or a filename.

    In Java, one will supply this path as an argument to createOmmConsumerConfig; see the example111__MarketPrice__UserSpecifiedFileConfig example for more details. This example is new for this release.

    In C++, one will supply this path as an argument to the OmmConsumerConfig constructor; see the 111__MarketPrice__UserSpecifiedFileConfig example for more details. This example is new for this release.