/**
* Copyright (C) 2013 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.engine.function.config;
import com.opengamma.core.change.ChangeManager;
import com.opengamma.core.change.ChangeProvider;
import com.opengamma.id.VersionCorrection;
/**
* Wrapper for a {@link AbstractFunctionConfigurationBean} that supports dynamic configurations by recreating the bean for each version timestamp.
*/
public abstract class BeanDynamicFunctionConfigurationSource extends DynamicFunctionConfigurationSource {
public BeanDynamicFunctionConfigurationSource(final ChangeManager underlying) {
super(underlying);
}
public BeanDynamicFunctionConfigurationSource(final ChangeProvider underlying) {
super(underlying);
}
protected abstract VersionedFunctionConfigurationBean createConfiguration();
@Override
protected FunctionConfigurationBundle getFunctionConfiguration(final VersionCorrection version) {
final VersionedFunctionConfigurationBean factory = createConfiguration();
factory.setVersionCorrection(version);
return factory.createObject().getFunctionConfiguration(version.getCorrectedTo());
}
}