Thanks for your suggestion Clause but the lookup in the type converter
registry failed to find a type converter. Must be a fallback converter
then. The LafaList class is a JAXB generated class which I assume would
need the fallback converter.

The only other workaround I can think of is to do the type conversion on my
own. Do you have any other suggestions Clause?

/Benk

2012/4/18 Claus Ibsen <claus.ib...@gmail.com>

> On Wed, Apr 18, 2012 at 10:10 AM, Bengt Rodehav <be...@rodehav.com> wrote:
> > BTW, is there a workaround that can be used in Camel 5.9.1?
> >
> > I have this today:
> >
> >    LafaList lafaList = theExchange.getIn().getBody(LafaList.class);
> >
> > I've tried with this:
> >
> >    LafaList lafaList =
> > theExchange.getIn().getMandatoryBody(LafaList.class);
> >
>
> It depends whether the conversion is using a regular type converter or
> a fallback.
>
> If its a regular then you can look it up from the registry, and invoke
> it manually.
> Then the exception will be propagated to you.
>
> TypeConverter tc =
> theExchange.getContext().getTypeConverterRegistry().lookup(LafaList.class,
> theExchange.getIn().getBody.getClass());
> if (tc != null) {
>   .. invoke me manually
>
>
> However for a fallback TC its trickier. And hence why the JAXB
> bug/issue was harder to track down.
>
>
> > In the first case I get null if the type conversion fails (due to an
> > invalid XML message). In the second case I get an exception.
> Unfortunately
> > both cases cause all subesequent conversions to fail even if the XML
> > message is valid.
> >
> > Is there any way I can get this to work without having to wait for a new
> > Camel version?
> >
> > /Bengt
> >
> > 2012/4/18 Bengt Rodehav <be...@rodehav.com>
> >
> >> +1
> >>
> >> I've just spent two days trying to figure out what I did wrong. I  had a
> >> case where all subsequent xml conversions would fail after I tried to
> >> process one xml message in invalid format. Then I found your post. Good
> job
> >> fixing it.
> >>
> >> /Bengt
> >>
> >>
> >> 2012/4/17 Christian Müller <christian.muel...@gmail.com>
> >>
> >>> +1,
> >>>
> >>> and thanks for your hard work...
> >>>
> >>> Best,
> >>> Christian
> >>>
> >>> On Tue, Apr 17, 2012 at 11:38 AM, Claus Ibsen <claus.ib...@gmail.com>
> >>> wrote:
> >>>
> >>> > Hi
> >>> >
> >>> > I am inclined to backport these changes to the 2.9 branch as I think
> >>> > the bug from CAMEL-5164 would bite other people as well.
> >>> > I have a workaround patch for 2.9 branch as work in progress. But I
> >>> > dont feel its an optimal solution, as would the backport of the
> >>> > changes from 2.10.
> >>> >
> >>> > There is only a slight API change in TypeConverter. Most people would
> >>> > use the @Converter for their custom converters, and if so, then they
> >>> > are okay (no problem there). Only for people who implement the
> >>> > TypeConverter directly, and then add that directly to the
> >>> > TypeConverterRegistry API. Frankly I dont see this used at all by end
> >>> > users (The @Converter is mich simpler).
> >>> >
> >>> > However there is a slight change in the API from
> Message.getBody(type)
> >>> > and Message.getHeader(name, Type), as they would now throw a
> >>> > TypeConversionException if failing. Where as beforehand a WARN would
> >>> > be logged and null returned.
> >>> >
> >>> > IMHO the changes from 2.10 is better and also allows end users to be
> >>> > in control of the failure first-hand. And frankly also what I would
> >>> > expect from the call.
> >>> >
> >>> > If nobody scream, then we should get this backported for the next
> 2.9.3
> >>> > release.
> >>> >
> >>> > Any thoughts?
> >>> >
> >>> >
> >>> > PS: I have attached my ugly workaround patch. We can use that as a
> >>> > backup if someone scream really loud.
> >>> >
> >>> >
> >>> >
> >>> > On Tue, Apr 17, 2012 at 7:46 AM, Claus Ibsen <claus.ib...@gmail.com>
> >>> > wrote:
> >>> > > Hi
> >>> > >
> >>> > > Recently I have spent some time to improve the type converters in
> >>> Camel
> >>> > 2.10.
> >>> > >
> >>> > > Most significant is the following changes
> >>> > > a) fix important bug
> >>> > > b) Fail fast
> >>> > > c) tryConvertTo
> >>> > > d) Expose utilization statistics
> >>> > >
> >>> > >
> >>> > > Ad a)
> >>> > > A bug was reported in
> >>> https://issues.apache.org/jira/browse/CAMEL-5164
> >>> > >
> >>> > > In summary if using camel-jaxb that offers a fallback type
> converter,
> >>> > > and a failure occurs during XML marshalling,
> >>> > > then subsequent new XML messages may fail, despite they were okay.
> >>> > >
> >>> > > Ad b)
> >>> > > Due to a we need to detect this faster and better. So now the type
> >>> > > converter system in Camel will fail fast
> >>> > > by throwing a new TypeConversionException (its runtime). That
> allows
> >>> > > Camel to detect the (a) failure faster
> >>> > > from a fallback type converter (regular non fallback would fail
> fast
> >>> > already)
> >>> > >
> >>> > > This means the API is also consistent from caller point of view.
> You
> >>> > > get a TypeConversionException if there
> >>> > > was a failure during a type conversion attempt.
> >>> > >
> >>> > > Ad c)
> >>> > > There is some places in camel-core where we want to only try to
> >>> > > convert. For example with the binary predicates
> >>> > > where you want to compare if X > Y. Then we try to coerce X and Y
> to
> >>> > > numeric values.
> >>> > >
> >>> > > Likewise there is a few other spots where we do this, such as the
> XSLT
> >>> > > component, where we try to use StAX, SAX, before DOM etc.
> >>> > > So we have introduced a tryConvertTo API, which would not fail
> during
> >>> > > type conversion.
> >>> > >
> >>> > > Ad d)
> >>> > > The type converter system is used a lot in Camel during routing
> >>> > > messages. Now we expose utilization statistics,
> >>> > > which allow end users to spot if there is too many missing type
> >>> > > conversion attempts. For example a route may attempt to convert,
> where
> >>> > > there is no suitable type converter. This can now more easily be
> >>> > > spotted, allowing the end user to either. Implement such a missing
> >>> > > type converter, or
> >>> > > correct a mistake in his application or the likes.
> >>> > >
> >>> > > The statistics is exposed in JMX and as well when Camel shutdown
> as a
> >>> > log line.
> >>> > >
> >>> > >
> >>> > >
> >>> > >
> >>> > > On another note I am also hunting down to avoid using the
> >>> > > PropertiesEditorTypeConverter, as it has many flaws
> >>> > > - its not thread safe
> >>> > > - its slow
> >>> > > - and 3rd party projects can add property editors that influence
> >>> > > Camel's type converts (eg ActiveMQ has a String -> List) properties
> >>> > > editor that turns a String into a List of ActiveMQDestination
> >>> > > instances.
> >>> > > - it does not understand generics in List/Collection type, eg the
> >>> > > ActiveMQ example above
> >>> > >
> >>> > > And basically we uses it only in Camel for doing some of the
> simpler
> >>> > > basic conversions: String <-> Numeric. And so forth. But over the
> time
> >>> > > we have added those as type converter directly in Camel, as they
> are
> >>> > > faster as well.
> >>> > >
> >>> > >
> >>> > >
> >>> > >
> >>> > > --
> >>> > > 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/
> >>> >
> >>> >
> >>> >
> >>> > --
> >>> > 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/
> >>> >
> >>>
> >>
> >>
>
>
>
> --
> 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