/**
* Copyright (C) 2014 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.core.link;
import com.opengamma.DataNotFoundException;
/**
* Responsible for actually performing the resolve operation
* for a {@link Link} instance.
*
* @param <I> the identifier for the linked object
* @param <T> the type of object provided by the resolver
*/
public interface LinkResolver<I, T> {
/**
* Resolves the contents of a Link returning a concrete
* instance of the required type. If the link has been
* misconfigured and no instance can be found, then an
* exception will be thrown.
*
* @param identifier the identifier for the linked object
* @return an instance of the type a Link actually points to
* @throws DataNotFoundException if the link cannot be resolved
*/
T resolve(LinkIdentifier<I, T> identifier);
}