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() {
     }
 

Reply via email to