/**
* Copyright (C) 2015 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.sesame.marketdata.scenarios;
import com.opengamma.sesame.marketdata.MarketDataId;
/**
* Marker interface for types holding the details of the match when a {@link MarketDataFilter} is applied.
* <p>
* Match details are required for complex market data values where different parts of the object can
* be independently perturbed. For example, the curves in a curve bundle can be independently shocked
* although they share a single {@code MarketDataId}.
* <p>
* In this case, the match details might be the name of the curve within the bundle. This allows the
* builder applying the perturbation to choose the correct curve.
* <p>
* Each type of market data should be associated with a single type of match details. If different perturbation
* implementations for the same piece of market data used a different type of match details, it wouldn't be possible
* to keep track of what market data had been perturbed.
* <p>
* Factory methods for match details implementations for the standard market data types are provided
* in {@link StandardMatchDetails}.
* <p>
* The majority of market data types are identified by their {@link MarketDataId} alone and don't need
* to communicate any details about a match. They should use {@link StandardMatchDetails#MATCHES}.
* <p>
* This type is an unfortunate necessity because of our curve model. Functions, and therefore market data environment
* and market data IDs, are written to use curve bundles. Users think in terms of individual curves, and this
* is reflected in the scenario framework. The mismatch between these two models makes this type necessary.
* Once the curve model is fixed this should be deleted and {@link MarketDataId} alone should be used to identify
* all types of market data.
*/
public interface MatchDetails {
}