Architecture

The RET Adapter Toolkit is a Java framework for developing a suite of adapters to connect the Caplin Platform to a Refinitiv Electronic Trading backend. The framework includes well defined extension points to allow easy customisation, and the toolkit includes a suite of example adapters to help you get started.

Deployment architecture

The diagram below shows how Adapters created using the RET Adapter Toolkit connect to the Caplin Platform and to RET:

RET Adapter Architecture

Terms used in the diagram:

Liberator

Liberator is Caplin’s high-performance internet streaming server. It supports live subscriptions and private, bi-directional messaging channels between web clients and data sources on the Caplin Platform.

Client applications use Caplin’s StreamLink library to connect to Liberator. Data sources on the Caplin Platform, including Transformer, use Caplin’s DataSource library to connect to Liberator.

PAM

The Permissioning and Authentication Module (PAM) of Caplin’s Permissioning Service is a Liberator auth module that subscribes to permissioning data from one or more adapters. For more information on Liberator authentication, see User authentication and permissioning.

Transformer

Transformer is Caplin’s application server. Hosts application modules written in Lua, JavaScript, Java, and C. Caplin sell a range of modules that provide services for data transformation, client notifications, watchlists, and charting.

RET Permissioning Adapter

A Caplin DataSource, built using the PermissioningAdapter class, that connects to a central source in your backend system for user authorisation data. For more information, see Permissioning adapter.

RET Calendar Adapter

A Caplin DataSource, built using the CalendarAdapter class, that provides tenor and settlement dates. For more information, see Calendar adapter.

RET FX Trading Adapter

A Caplin DataSource, built using the TradingAdapter class, that provides FX trading functionality. For more information, see FX trading adapter.

RET Orders Adapter

A Caplin DataSource, built using the LimitOrderAdapter class, that provides FX order management functionality. For more information, see Limit order adapter.

RET LBN Adapter

A Caplin DataSource, built using the LBNAdapter class, that provides historical trading data. For more information, see LBN adapter.

RET Pricing Adapter

A Caplin DataSource, built using the PricingAdapter class, that provides live streaming prices. For more information, see Pricing adapter.

SCS Relay

Refinitiv Secure Communication Server (SCS) Relay. Provides a secure channel for communication with Refinitiv Electronic Trading.

Class framework

The RET Adapter Toolkit contains over 100 packages, with six entry points:

com.caplin.motif.fx.retCalendarfxtradinglbnorderspermissioningpricingCalendarAdapterFxTradingAdapterLBNAdapterLimitOrderAdapterPermissioningAdapterPricingAdapter
Entry points to the RET Adapter Toolkit’s class framework

For a list of features supported by each of the adapter classes above, see Adapter features.

Extension points

The constructor of each RET adapter class takes a configuration object that provides extension points to help you customise the adapter for your environment.

For example, the constructor for the LBNAdapter class takes an instance of LBNConfiguration, which is built using an instance of LBNConfigurationBuilder:

com.caplin.motif.fx.ret.lbnconfigLBNAdapterLBNAdapter(LBNConfiguration)start()LBNConfigurationgetAdapterConfigurationManager()getBlotterCriteriaFactory()getBlotterRecordFactory()getBlotterRecordIdFactory()getBlotterTypes()getConfigurationLoader()getCustomFieldValuesSerialiser()getDataSource()getLBNCustomFieldsFactory()getUserManager()newAdapterConfiguration()newConfigurationBuilder()LBNConfigurationBuilderaddBlotterType()build()setAdapterConfigurationListener()setBlotterCriteriaFactory()setBlotterRecordFactory()setBlotterRecordIdFactory()setConfigurationLoader()setCustomFieldValuesSerialiser()setDataSource()setLBNCustomFieldsFactory()setUserManager()consumesbuilds

The source code below shows the creation of an LBN adapter, extended with a custom UserManager and custom BlotterRecordIdFactory:

Example LBN adapter, with extensions highlighted
public class MyLBNAdapter
{
  public static void main(String[] args)
  {
    try {
      // Create configuration object
      LBNConfiguration configuration = LBNConfiguration.newConfigurationBuilder()
      .setUserManager(new MyUserManager())
      .setBlotterRecordIdFactory(new MyRecordIdFactory())
      .build();

      // Initialise Apache Log4J
      final ConfigurationLoader configurationLoader =
        configuration.getConfigurationLoader();
      final Log4jConfiguration log4jConfiguration =
        Log4jConfiguration.newDefaultConfiguration().build();
      log4jConfiguration.initialise(configurationLoader);

      // Create and start the adapter
      LBNAdapter adapter = new LBNAdapter(configuration);
      adapter.start();
    } catch (Exception ex) {
      ex.printStackTrace();
      System.exit(1);
    }
  }
}