Hi Claus, It is not a timeout. The null body is the response from the endpoint (a bean method in my case). I think it would be great, alt least for this use-case, to allow null body from an endpoint to be handled by a POJO aggregator.
Thanks, Radu B. On Thu, May 29, 2014 at 4:26 PM, Claus Ibsen <[email protected]> wrote: > On Fri, May 23, 2014 at 3:32 PM, Radu Badita <[email protected]> wrote: >> Checked the documentation and understood. Basically the attribute >> AggregationStrategyBeanAdater.allowNullNewExchange has to be true. But >> it doesn't work since the newExchange is not null, instead only its >> in-message body is null. Therefore the following: >> if (!allowNullNewExchange && newExchange == null) { >> return oldExchange; >> } >> is not is not executed and it still continues to attempt to extract >> and convert the in-body (which fails). >> > > Hi > > Did your enrich hit a timeout, or is the null body indeed a response > from the enrich endpoint you used? > > We could look into adding an option to allow null body as a valid response. > > >> On Fri, May 23, 2014 at 4:13 PM, Claus Ibsen <[email protected]> wrote: >>> Hi >>> >>> See bottom of this page about no data >>> http://camel.apache.org/aggregator2 >>> >>> On Fri, May 23, 2014 at 3:06 PM, Radu Badita <[email protected]> wrote: >>>> Thanks for the reply, but allowNullBody is not under user control as >>>> it is set in AggregationStrategyBeanInfo(99) when calling: >>>> Expression newBody = ExpressionBuilder.mandatoryBodyExpression(newType); >>>> because mandatoryBodyExpression() just calls >>>> mandatoryBodyExpression(type, false) where the second param is >>>> nullBodyAllowed. >>>> I don't see any attribute to control >>>> AggregationStrategyBeanInfo.createMethodInfo()'s behavior at that >>>> point, so either default should not ask for mandatory body, or it >>>> should be configurable somehow. >>>> >>>> On Fri, May 23, 2014 at 12:39 PM, Claus Ibsen <[email protected]> >>>> wrote: >>>>> You need to turn on allowNullBody or something like that >>>>> >>>>> >>>>> On Fri, May 23, 2014 at 11:33 AM, Radu Badita <[email protected]> >>>>> wrote: >>>>>> Hi all, >>>>>> I'm fairly new Camel user, but I'm pretty sure this is an issue: >>>>>> I'm using a POJO Aggregator to aggregate the response from an Enrich >>>>>> EAI. The strategy method has two parameters, one for the 'oldExchange' >>>>>> message body and the other for the 'newExchange' message body; in my >>>>>> case a Map and an Object respectively. >>>>>> The problem is that when the response is null, before my aggregation >>>>>> strategy method is invoked, message body has to be obtained from the >>>>>> 'newExchange' which is not null, but the in-message body is. The >>>>>> object is extracted with "mandatoryBodyExpression" which throws >>>>>> exception: >>>>>> "InvalidPayloadException: No body available of type: java.lang.Object >>>>>> on: Message: [Body is null]." >>>>>> Is there a reason to require mandatory body in response? In this case >>>>>> I guess null responses cannot be handled, so probably it shouldn't. >>>>>> Regards, >>>>>> Radu B >>>>> >>>>> >>>>> >>>>> -- >>>>> Claus Ibsen >>>>> ----------------- >>>>> Red Hat, Inc. >>>>> Email: [email protected] >>>>> Twitter: davsclaus >>>>> Blog: http://davsclaus.com >>>>> Author of Camel in Action: http://www.manning.com/ibsen >>>>> hawtio: http://hawt.io/ >>>>> fabric8: http://fabric8.io/ >>> >>> >>> >>> -- >>> Claus Ibsen >>> ----------------- >>> Red Hat, Inc. >>> Email: [email protected] >>> Twitter: davsclaus >>> Blog: http://davsclaus.com >>> Author of Camel in Action: http://www.manning.com/ibsen >>> hawtio: http://hawt.io/ >>> fabric8: http://fabric8.io/ > > > > -- > Claus Ibsen > ----------------- > Red Hat, Inc. > Email: [email protected] > Twitter: davsclaus > Blog: http://davsclaus.com > Author of Camel in Action: http://www.manning.com/ibsen > hawtio: http://hawt.io/ > fabric8: http://fabric8.io/
