Sure, I can create a JIRA ticket for it.
Will have to set up my dev-environment properly to be able to patch it
though.
It is in my plan to do anyway but since I am on paternity leave it will
take a few days since I only have a few hours every day to stuff like this.
I will migrate a legacy integration platform from in-house framework to
Camel so I will finally get to spend a lot more time to get familiar with
the details of Camel.

Anyway, not sure how to patch it.

The problem occurs only when separator is considered a whitespace character.
Could be tested via Character.isWhitespace(separator)
The other way around is to remove the trim(), I don't see the point in
trimming the read line, but then I could jeopardize working code.
Or maybe only trim if Character.isWhitespace(separator) == false?

Perhaps such questions is better placed on the dev-list (not subscribing to
that one yet)?

Kind regards, Magnus


Den 31 mars 2012 12:05 skrev Claus Ibsen <claus.ib...@gmail.com>:

> 2012/3/29 Magnus Palmér <magnus.palmer.w...@gmail.com>:
> > I can confirm, I get the same error as you do when I remove the two last
> > fields at the end of the line as you did.
> >
> > I think this is the where it starts to get wrong:
> > BindyCsvDataFormat.java
> >
> >  138               // Read the line
> >  139              String line = scanner.nextLine().trim();
> >
> > String.trim() trims all the remaining tabs...
> >
>
> Well spotted. Do you mind created a JIRA ticket? And patches is welcome.
>
>
> > Den 29 mars 2012 11:17 skrev Aida <ai.d...@gmail.com>:
> >
> >> Hi again, thank you for the quick answers.
> >>
> >> I think I have been able to replicate the problem in an easy way. I have
> >> built some test cases and I have found the one in which I'm having
> trouble.
> >> The "required=false" option is working for me always except in one case.
> >>
> >> This case is when the two missing fields occur at the end of a line at
> the
> >> same time. I'm going to explain it with my test cases.
> >>
> >> I have built a simple route for my unitary tests:
> >>
> >> from(URI_START_PROCESS)
> >>      .unmarshal().bindy(BindyType.Csv, "com.mypackage")
> >>              .to(URI_END_PROCESS_MOCK);
> >>
> >>
> >> My class (I have only one) in "com.mypackage" has the following
> >> annotations:
> >> @CsvRecord(separator="\t")
> >> from positions 1 to 5: @DataField(pos = N, required = true)
> >> for positions 6 and 7 : @DataField(pos = N, required = false)  (so
> fields 6
> >> and 7 are optional)
> >>
> >> Test Cases:
> >>
> >> Case 1: Processing two lines with ALL the fields    (Works like a charm)
> >> String data2Process = "data1\t14700\t2011-10-04
> >> 04:00\t5\t1\t5\t9\ndata2\t14700\t2011-10-04 05:00\t49\t2\t5";
> >>
> >> Case 2: Processing two lines. In the first line the 6th field is missing
> >> (works perfectly)
> >> String data2Process = "data1\t14700\t2011-10-04
> >> 04:00\t5\t0*\t\t*0\ndata2\t14700\t2011-10-04 05:00\t149\t0\t0";
> >>
> >> Case 3: Processing two lines. In the first line the 7th field is missing
> >> (works perfectly)
> >> String data2Process = "data1\t14700\t2011-10-04
> >> 04:00\t5\t0\t0*\t\n*data2\t14700\t2011-10-04 05:00\t149\t0\t0";
> >>
> >> Case 4: Processing two lines. In the first line, both 6th and 7th field
> are
> >> missing (is not working)
> >> String data2Process = "data1\t14700\t2011-10-04
> >> 04:00\t5\t0*\t\t\n*data2\t14700\t2011-10-04 05:00\t149\t0\t0";
> >>
> >>
> >> I also tried a variation of Case 4, in which I made field 5 also not
> >> required and the missing fields were 5th and 6th, in this case there
> were
> >> no
> >> problems.
> >>
> >> The exception is the one I said before: "Some fields are missing
> (optional
> >> or mandatory), line:1"
> >>
> >>
> >>
> >> --
> >> View this message in context:
> >>
> http://camel.465427.n5.nabble.com/Bindy-Having-trouble-with-the-required-field-tp5597196p5603131.html
> >> Sent from the Camel - Users mailing list archive at Nabble.com.
> >>
>
>
>
> --
> Claus Ibsen
> -----------------
> CamelOne 2012 Conference, May 15-16, 2012: http://camelone.com
> FuseSource
> Email: cib...@fusesource.com
> Web: http://fusesource.com
> Twitter: davsclaus, fusenews
> Blog: http://davsclaus.blogspot.com/
> Author of Camel in Action: http://www.manning.com/ibsen/
>

Reply via email to