/** * Copyright (C) 2013 - present by OpenGamma Inc. and the OpenGamma group of companies * * Please see distribution for license. */ package com.opengamma.financial.target; import java.util.Collection; import java.util.Map; import com.opengamma.core.change.ChangeManager; import com.opengamma.core.config.ConfigSource; import com.opengamma.core.config.impl.ConfigItem; import com.opengamma.engine.DefaultComputationTargetResolver; import com.opengamma.engine.target.ComputationTargetType; import com.opengamma.engine.target.resolver.DeepResolver; import com.opengamma.engine.target.resolver.Resolver; import com.opengamma.id.ExternalIdBundle; import com.opengamma.id.ExternalScheme; import com.opengamma.id.ObjectId; import com.opengamma.id.UniqueId; import com.opengamma.id.UniqueIdentifiable; import com.opengamma.id.VersionCorrection; /** * Target resolver for configuration sourced objects. * * @param <T> type resolved by this resolver */ public class ConfigTargetResolver<T extends UniqueIdentifiable> implements Resolver<T> { private final ConfigItemTargetResolver<T> _underlying; public ConfigTargetResolver(final Class<T> type, final ExternalScheme scheme, final ConfigSource configSource) { _underlying = new ConfigItemTargetResolver<T>(type, scheme, configSource); } public ConfigTargetResolver(final Class<T> type, final ConfigSource configSource) { _underlying = new ConfigItemTargetResolver<T>(type, configSource); } public static <T extends UniqueIdentifiable> void initResolver(final DefaultComputationTargetResolver resolver, final Class<T> clazz, final ConfigSource configSource) { resolver.addResolver(ComputationTargetType.of(clazz), new ConfigTargetResolver<T>(clazz, configSource)); } protected ConfigItemTargetResolver<T> getUnderlying() { return _underlying; } // Resolver @SuppressWarnings("unchecked") @Override public T resolveObject(final UniqueId uniqueId, final VersionCorrection versionCorrection) { final ConfigItem<?> item = getUnderlying().resolveObject(uniqueId, versionCorrection); if (item != null) { return (T) item.getValue(); } return null; } @Override public DeepResolver deepResolver() { return getUnderlying().deepResolver(); } @Override public ChangeManager changeManager() { return getUnderlying().changeManager(); } @Override public UniqueId resolveExternalId(final ExternalIdBundle identifiers, final VersionCorrection versionCorrection) { return getUnderlying().resolveExternalId(identifiers, versionCorrection); } @Override public Map<ExternalIdBundle, UniqueId> resolveExternalIds(final Collection<ExternalIdBundle> identifiers, final VersionCorrection versionCorrection) { return getUnderlying().resolveExternalIds(identifiers, versionCorrection); } @Override public UniqueId resolveObjectId(final ObjectId identifier, final VersionCorrection versionCorrection) { return getUnderlying().resolveObjectId(identifier, versionCorrection); } @Override public Map<ObjectId, UniqueId> resolveObjectIds(final Collection<ObjectId> identifiers, final VersionCorrection versionCorrection) { return getUnderlying().resolveObjectIds(identifiers, versionCorrection); } }