Я анализирую файл CSV и создаю объекты домена, используя supercsv . В моем доменном объекте есть одно поле перечисления, например: [
public class TypeWithEnum {
private Type type;
public TypeWithEnum(Type type) {
this.type = type;
}
public Type getType() {
return type;
}
public void setType(Type type) {
this.type = type;
}
}
] Мое перечисление выглядит так:
public enum Type {
CANCEL, REFUND
}
Попытка создать bean-компоненты из этого CSV-файла:
final String[] header = new String[]{ "type" };
ICsvBeanReader inFile = new CsvBeanReader(new FileReader(
getFilePath(this.getClass(), "learning/enums.csv")), CsvPreference.STANDARD_PREFERENCE);
final CellProcessor[] processors =
new CellProcessor[]{ TODO WHAT TO PUT HERE? };
TypeWithEnum myEnum = inFile.read(
TypeWithEnum.class, header, processors);
это не удается с Ошибка при заполнении контекста объекта: null обработчик нарушения: null в org.supercsv.io.CsvBeanReader.fillObject (неизвестный источник) at org.supercsv.io.CsvBeanReader.read (Неизвестный источник)
Есть какие-нибудь подсказки по синтаксическому анализу перечислений? Должен ли я написать для этого свой собственный процессор?
Я уже пытался написать свой собственный процессор, примерно так:
class MyCellProcessor extends CellProcessorAdaptor {
public Object execute(Object value, CSVContext context) {
Type type = Type.valueOf(value.toString());
return next.execute(type, context);
}
}
но он умирает с тем же исключением.
Содержимое моего файла enums.csv очень простое:
CANCEL
ВОЗВРАТ