Migration notes 1.1

This page explains the changes required to migrate to the stated version of the Atoti Market Data.

Migrate to 1.1.0

Upgrading from Atoti Market Data 1.0.1 - See Atoti Market Data 1.1.0 Release Notes.

Summary

  • Standalone interpolation services: All interpolation logic has been moved to standalone interpolation services.
  • ConcurrentMap caching: Caching in Atoti Market Data now uses ConcurrentMap<Object, Object> caches instead of IQueryCache specifically.
  • Context-aware caching: Cache key creation can now make use of the retrieval context.
  • Cache key improvements: The CompositeKey class has new merge(CompositeKey other) and merge(Object... values) methods that let you concatenate keys or individual objects.
  • Automated Registry injection: Registry injection for post-processors is now automated through the Spring Boot Starter.
  • Removed retriever factories: Removed the IContextualMarketDataRetrieverFactory interface and all remaining implementations.
  • Removed extra method from FX retrievers: The getAvailableCurrencies() method in the FX retrievers has been removed.

Standalone interpolation services

Interpolation logic is now fully encapsulated within standalone interpolation services. The following changes have been made to support this move:

  • Dropped mapping from data classes:
    • CurveMarketData and SurfaceMarketData no longer provide mapping methods.
    • ICurveMarketData and ISurfaceMarketData interfaces have been removed.
  • Converted mapping from functional interfaces to simple mapping objects:
    • The MapperFactory interface has been removed without a replacement. Mapper implementations can no longer be tied to other coordinates.
    • The CoordinateMapper interface has been replaced by ITenorMapper and IMoneynessMapper.
    • Default implementations for mapping String objects to Double values are provided for tenors and moneyness values (in the DefaultStringToDoubleTenorMapper and DefaultStringToDoubleMoneynessMapper classes).
  • Interpolator constructors take the coordinate modification strategy as the first parameter.
  • Added NONE to the InterpolationMode options.
  • Removed ICachingInterpolationService, replaced with an IInterpolatorBuilderService, which builds IInterpolator objects without a cache.
  • Changed IInterpolationService to directly interpolate a value for a cache key, mode, known data, and requested point.
  • Added default implementations of the IInterpolatorBuilderService and IInterpolationService for curves and surfaces.
  • Removed the InterpolationFunction class.
  • Measure builder classes take ITenorMapper and IMoneynessMapper objects instead of MapperFactory objects. Both mapper types are optional.

ConcurrentMap caching

We have replaced all API usages of IQueryCache with ConcurrentMap<Object, Object>. As IQueryCache is an extension of ConcurrentMap<Object, Object>, using those implementations in API calls will still work, but is no longer mandatory.

Context-aware caching

The abstract createCacheKey(C translatedCoordinates) method in the AContextualMarketDataRetriever class is now createCacheKey(C translatedCoordinates, MarketDataRetrieverContext context). Default implementations of this method have also been added to the InterpolatedCurveMarketDataRetriever and InterpolatedSurfaceMarketDataRetriever implementations, which add the InterpolationMode to the cache key.

Cache key improvements

The CompositeKey class has new merge(CompositeKey other) and merge(Object... values) methods that let you concatenate keys or individual objects.

Automated Registry injection

Post-processor instance variables that required Registry injection in the project using Atoti Market Data are now injected automatically when using the Spring Boot Starter. The configuration classes used for this injection are imported into the respective retrieval configuration classes (e.g. FxMarketDataPostProcessorInjectionConfig is imported into FxRateMarketDataRetrievalConfig and executed automatically.)

Removed retriever factories

The IContextualMarketDataRetrieverFactory interface has been removed. The following related classes have also been removed:

  • FxMarketDataRetrieverFactory: a factory for FX retrievers.
  • IFxMarketDataRetrieverFactoryAware: an interface for Registry injection into post-processors.
  • FactoryFxRateMarketDataPostProcessor: a post-processor using the FxMarketDataRetrieverFactory.
  • FactoryFxRateMarketDataMeasureBuilder: a builder for measures using the FactoryFxRateMarketDataPostProcessor.

Removed extra method from FX retrievers

The getAvailableCurrencies() method in the FX retrievers has been removed. To retrieve the available currencies from the FX Rate store, use the Atoti Server Database API.