Fixed ApiMethodHelper to throw RuntimeCamelException with API exception on 
InvocationTargetException


Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/5dd9cc0f
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/5dd9cc0f
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/5dd9cc0f

Branch: refs/heads/master
Commit: 5dd9cc0f0981603ea1ac8f0f6ee6dfcb7ad56a26
Parents: dee15fb
Author: Dhiraj Bokde <dhira...@yahoo.com>
Authored: Mon Jun 16 21:21:57 2014 -0700
Committer: Dhiraj Bokde <dhira...@yahoo.com>
Committed: Tue Jun 17 13:51:39 2014 -0700

----------------------------------------------------------------------
 .../java/org/apache/camel/util/component/ApiMethodHelper.java  | 6 ++++++
 1 file changed, 6 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/5dd9cc0f/camel-core/src/main/java/org/apache/camel/util/component/ApiMethodHelper.java
----------------------------------------------------------------------
diff --git 
a/camel-core/src/main/java/org/apache/camel/util/component/ApiMethodHelper.java 
b/camel-core/src/main/java/org/apache/camel/util/component/ApiMethodHelper.java
index 2561adc..7ce841b 100644
--- 
a/camel-core/src/main/java/org/apache/camel/util/component/ApiMethodHelper.java
+++ 
b/camel-core/src/main/java/org/apache/camel/util/component/ApiMethodHelper.java
@@ -17,6 +17,7 @@
 package org.apache.camel.util.component;
 
 import java.lang.reflect.Array;
+import java.lang.reflect.InvocationTargetException;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
@@ -375,6 +376,11 @@ public final class ApiMethodHelper<T extends Enum<T> & 
ApiMethod> {
         try {
             return method.getMethod().invoke(proxy, values);
         } catch (Throwable e) {
+            if (e instanceof InvocationTargetException) {
+                // get API exception
+                final Throwable cause = e.getCause();
+                e = (cause != null) ? cause : e;
+            }
             throw new RuntimeCamelException(
                 String.format("Error invoking %s with %s: %s", 
method.getName(), properties, e.getMessage()), e);
         }

Reply via email to