/**
* Copyright (C) 2013 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.financial.target;
import com.opengamma.core.config.ConfigSource;
import com.opengamma.core.config.impl.ConfigItem;
import com.opengamma.engine.target.resolver.AbstractSourceResolver;
import com.opengamma.id.ExternalScheme;
import com.opengamma.id.UniqueIdentifiable;
import com.opengamma.id.VersionCorrection;
import com.opengamma.util.ArgumentChecker;
/**
* A target resolver implementation to connect a config source to the engine framework.
*
* @param <T> the type of the item encoded in configuration
*/
public class ConfigItemTargetResolver<T extends UniqueIdentifiable> extends AbstractSourceResolver<ConfigItem<?>, ConfigSource> {
private static final ExternalScheme DEFAULT_SCHEME = ExternalScheme.of("ConfigSource");
private final Class<T> _itemType;
public ConfigItemTargetResolver(final Class<T> itemType, final ExternalScheme namingScheme, final ConfigSource source) {
super(namingScheme, source);
ArgumentChecker.notNull(itemType, "itemType");
_itemType = itemType;
}
public ConfigItemTargetResolver(final Class<T> itemType, final ConfigSource source) {
this(itemType, DEFAULT_SCHEME, source);
}
protected Class<T> getItemType() {
return _itemType;
}
@Override
protected UniqueIdentifiable lookupByName(final String name, final VersionCorrection versionCorrection) {
return (T) getUnderlying().getSingle(getItemType(), name, versionCorrection);
}
}