/**
* Copyright (C) 2013 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.engine.target.resolver;
import com.opengamma.engine.target.logger.ResolutionLogger;
import com.opengamma.id.UniqueIdentifiable;
/**
* Specialised form of resolver that performs "deep" resolution based on a version/correction timestamp in addition to the primary resolution of the top most object. For example, {@link Position} and
* any other portfolio structure objects gets deep resolved so that the they have securities attached to them rather than just the identifiers that users must then resolve.
*/
public interface DeepResolver {
/**
* Wrap an object instance in an equivalent form that will report any deep resolutions to the supplied logger.
*
* @param underlying the object to wrap, not null
* @param logger the logging service, not null
* @return the wrapped object or null if it is not possible to wrap it
*/
UniqueIdentifiable withLogger(UniqueIdentifiable underlying, ResolutionLogger logger);
}