InstantiationException при демаршалировании csv с помощью BindyCsvDataFormat и @CsvRecord с использованием Camel

Используя Camel, я отправляю строку с CSV в очередь, где ее нужно распаковать в список карт, используя BindyCsvDataFormat. Мой вопрос просто, почему я получаю InstantiationException здесь? Что-то не так с CSV-форматированием или тем, как я могу установить, к какому классу привязываться?

Маршрутизация выглядит так:

@Override
public void setupRoutes() throws Exception {

    BindyCsvDataFormat bindy  = new BindyCsvDataFormat(Kostnadssted.class);
    bindy.setClassType(Kostnadssted.class);
        from("activemq:prk.kostnadssted.importer-kostnadssteder-fra-agresso")
                .unmarshal(bindy)
                .bean(kostnadsstedService)
                .end();

}

И Костнадсстед выглядит так:

import org.apache.camel.dataformat.bindy.annotation.CsvRecord;
import org.apache.camel.dataformat.bindy.annotation.DataField;

@CsvRecord(separator = ";", crlf = "UNIX", autospanLine = true)
public class Kostnadssted implements Comparable<Kostnadssted> {

@DataField( pos = 1)
private String AOR_KOSTSTED_ID;
@DataField( pos = 2)
private String AOR_KOSTSTED_NAVN;
@DataField( pos = 3)
private String AOR_FIRMA_ID;
@DataField( pos = 4)
private String AOR_FIRMA_NAVN;
@DataField( pos = 5)
private String AOR_FIRMA_ORGNR;
@DataField( pos = 6)
private String AOR_STATUS;
@DataField( pos = 7)
private String AOR_FRA_PERIODE;
@DataField( pos = 8)
private String AOR_TIL_PERIODE;

public Kostnadssted(String AOR_KOSTSTED_ID, String AOR_KOSTSTED_NAVN, String AOR_FIRMA_ID, String AOR_FIRMA_NAVN, String AOR_FIRMA_ORGNR, String AOR_STATUS, String AOR_FRA_PERIODE, String AOR_TIL_PERIODE) {

    this.AOR_KOSTSTED_ID = AOR_KOSTSTED_ID;
    this.AOR_KOSTSTED_NAVN = AOR_KOSTSTED_NAVN;
    this.AOR_FIRMA_ID = AOR_FIRMA_ID;
    this.AOR_FIRMA_NAVN = AOR_FIRMA_NAVN;
    this.AOR_FIRMA_ORGNR = AOR_FIRMA_ORGNR;
    this.AOR_STATUS = AOR_STATUS;
    this.AOR_FRA_PERIODE = AOR_FRA_PERIODE;
    this.AOR_TIL_PERIODE = AOR_TIL_PERIODE;
}

Я отправляю в очередь так:

Ublic класс KostnadsstedRoutingTest {

@Autowired
private KostnadsstedRouting kostnadsstedRoute;

private final String FAKE_BODY =    "NO;937354521012;DEMO ASA;100;Administrasjon;N;0;209911"+System.getProperty("line.separator")+
                                    "NO;983554321012;DEMO ASA;100;Administrasjon;N;0;206912";

@Produce(uri = "activemq:prk.kostnadssted.importer-kostnadssteder-fra-agresso")
ProducerTemplate producer;

@Test
public void firstTest() throws InterruptedException{
    producer.sendBody(FAKE_BODY);
}

}

И я получаю:

org.apache.camel.RuntimeCamelException: java.lang.InstantiationException:                                                                no.ok.prk.kostnadssted.domene.modell.Kostnadssted

1 ответ

Оказывается, что записи, определенные с аннотацией @CsvRecord, не будут работать, если у них есть явно определенные конструкторы. Удаление конструктора решило проблему.

Другие вопросы по тегам