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/
