package org.jbehave.examples.core.converters;
import java.lang.reflect.Type;
import org.jbehave.core.steps.ParameterConverters.ParameterConvertionFailed;
import org.jbehave.core.steps.ParameterConverters.ParameterConverter;
import org.jbehave.examples.core.model.Trader;
import org.jbehave.examples.core.persistence.TraderPersister;
public class TraderConverter implements ParameterConverter {
private TraderPersister persister;
public TraderConverter(TraderPersister persister) {
this.persister = persister;
}
public boolean accept(Type type) {
if (type instanceof Class<?>) {
return Trader.class.isAssignableFrom((Class<?>) type);
}
return false;
}
public Object convertValue(String value, Type type) {
Trader trader = persister.retrieveTrader(value);
if (trader == null) {
throw new ParameterConvertionFailed("Trader not found for name " + value, null);
}
return trader;
}
}