Repository: camel Updated Branches: refs/heads/master 7d36d5260 -> 45a3c047b
Bean component should use try .. catch to ensure the callback is invoked. Polished Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/6f5bee10 Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/6f5bee10 Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/6f5bee10 Branch: refs/heads/master Commit: 6f5bee10d09467d36a005044592fa4a853849532 Parents: 7d36d52 Author: Claus Ibsen <[email protected]> Authored: Tue May 19 20:34:10 2015 +0200 Committer: Claus Ibsen <[email protected]> Committed: Tue May 19 20:34:10 2015 +0200 ---------------------------------------------------------------------- .../apache/camel/component/bean/BeanProcessor.java | 14 ++++++++++---- .../apache/camel/component/bean/PojoProxyHelper.java | 1 + 2 files changed, 11 insertions(+), 4 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/camel/blob/6f5bee10/camel-core/src/main/java/org/apache/camel/component/bean/BeanProcessor.java ---------------------------------------------------------------------- diff --git a/camel-core/src/main/java/org/apache/camel/component/bean/BeanProcessor.java b/camel-core/src/main/java/org/apache/camel/component/bean/BeanProcessor.java index bf8ddbe..a273162 100644 --- a/camel-core/src/main/java/org/apache/camel/component/bean/BeanProcessor.java +++ b/camel-core/src/main/java/org/apache/camel/component/bean/BeanProcessor.java @@ -94,7 +94,7 @@ public class BeanProcessor extends ServiceSupport implements AsyncProcessor { Processor processor = getProcessor(); if (processor == null) { // so if there is a custom type converter for the bean to processor - processor = exchange.getContext().getTypeConverter().convertTo(Processor.class, exchange, bean); + processor = exchange.getContext().getTypeConverter().tryConvertTo(Processor.class, exchange, bean); } if (processor != null) { LOG.trace("Using a custom adapter as bean invocation: {}", processor); @@ -131,9 +131,15 @@ public class BeanProcessor extends ServiceSupport implements AsyncProcessor { LOG.debug("BeanHolder bean: {} and beanInvocation bean: {} is same instance: {}", new Object[]{bean.getClass(), clazz, sameBean}); } if (sameBean) { - beanInvoke.invoke(bean, exchange); - // propagate headers - exchange.getOut().getHeaders().putAll(exchange.getIn().getHeaders()); + try { + beanInvoke.invoke(bean, exchange); + if (exchange.hasOut()) { + // propagate headers + exchange.getOut().getHeaders().putAll(exchange.getIn().getHeaders()); + } + } catch (Throwable e) { + exchange.setException(e); + } callback.done(true); return true; } http://git-wip-us.apache.org/repos/asf/camel/blob/6f5bee10/camel-core/src/main/java/org/apache/camel/component/bean/PojoProxyHelper.java ---------------------------------------------------------------------- diff --git a/camel-core/src/main/java/org/apache/camel/component/bean/PojoProxyHelper.java b/camel-core/src/main/java/org/apache/camel/component/bean/PojoProxyHelper.java index 8a3d6aa..98964e6 100644 --- a/camel-core/src/main/java/org/apache/camel/component/bean/PojoProxyHelper.java +++ b/camel-core/src/main/java/org/apache/camel/component/bean/PojoProxyHelper.java @@ -27,6 +27,7 @@ import org.apache.camel.util.ServiceHelper; * receives a reply. Unlike the ProxyHelper this works only with methods that have only one parameter. */ public final class PojoProxyHelper { + private PojoProxyHelper() { }
