0

bindy を使用しているときに、無効な CSV 入力を提供するテストを作成しました。ドキュメント ( http://camel.apache.org/bindy.html ) を見ると、次のように記載されています。

If this field is not present in the record, than an error will be raised by the parser with the following information :
Some fields are missing (optional or mandatory), line :

しかし、テストを実行すると、無効な行は単に無視され、エラーは発生しません。3 つの必須フィールドを宣言しているので、エラーが発生することが予想されます.... 何が間違っていますか?

バリー

明確にするためのコードスニペットを次に示します

ルート

@Override
protected RouteBuilder createRouteBuilder() throws Exception {
    return new RouteBuilder() {
        @Override
        public void configure() throws Exception {

            JaxbDataFormat xmlFormat = new JaxbDataFormat();
            xmlFormat.setContextPath("be.smals.dp.asktutor.response");
            BindyCsvDataFormat csvFormat = new BindyCsvDataFormat ("be.smals.dp.asktutor.response");
            context.setTracing(true);

            from("direct:marshall")
                    .wireTap("log:test")
                    .unmarshal(csvFormat)
                    .to("mock:marshall");

            from("direct:unmarshall")
                    .marshal(xmlFormat)
                    .wireTap("log:test")
                    .to("mock:unmarshall");

        }
    };
}

私のテストの一部

@Test
public void testTransformFromCSVToXML() throws Exception {

    // Create CSV input and process it
    String payload = AskTutorResponseCSVMother.getInvalidCSVLines();
    template.sendBody("direct:marshall", payload);

    AskTutorsResponse askTutorsResponse = 
        ExchangeToObjectHelper.getAskTutorsResponseObjectFromExchange(
            mockMarshall.getExchanges().get(0));
    assertEquals("00000000123", askTutorsResponse.getAskTutorResponses().get(0).getSsinChild());

入力 csv 文字列

public static String getInvalidCSVLines () {
    String payload = "";
    payload += "00000000321;20121212" + NEWLINE;
    payload += "10000000123;10000000321;20131010" + NEWLINE;
    payload += "20000000123;20000000321;20100909" + NEWLINE;
    return payload;        
}

そして私の(簡単な)バインディング:

@XmlType
@XmlAccessorType(XmlAccessType.NONE)
@CsvRecord(separator = ";", skipFirstLine = false)
public class AskTutorResponse {

    @DataField(pos = 1, required = true)
    @XmlElement(name = "SINNChild", required = true)
    private String ssinChild;

    @DataField(pos = 2)
    @XmlElement(name = "SINNTutor", required = true)
    private String ssinTutor;

    @DataField(pos = 3)
    @XmlElement(name = "date", required = true)
    private String date;
4

1 に答える 1