You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by ge...@apache.org on 2005/05/26 03:48:58 UTC
svn commit: r178565 -
/jakarta/commons/proper/chain/trunk/src/java/org/apache/commons/chain/generic/DispatchCommand.java
Author: germuska
Date: Wed May 25 18:48:57 2005
New Revision: 178565
URL: http://svn.apache.org/viewcvs?rev=178565&view=rev
Log:
Catch InvocationTargetException and throw its cause instead, except when the cause is not an instance of Exception.
Modified:
jakarta/commons/proper/chain/trunk/src/java/org/apache/commons/chain/generic/DispatchCommand.java
Modified: jakarta/commons/proper/chain/trunk/src/java/org/apache/commons/chain/generic/DispatchCommand.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/chain/trunk/src/java/org/apache/commons/chain/generic/DispatchCommand.java?rev=178565&r1=178564&r2=178565&view=diff
==============================================================================
--- jakarta/commons/proper/chain/trunk/src/java/org/apache/commons/chain/generic/DispatchCommand.java (original)
+++ jakarta/commons/proper/chain/trunk/src/java/org/apache/commons/chain/generic/DispatchCommand.java Wed May 25 18:48:57 2005
@@ -2,6 +2,8 @@
import org.apache.commons.chain.Command;
import org.apache.commons.chain.Context;
+
+import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.WeakHashMap;
@@ -30,7 +32,11 @@
* returning a boolean value as interpreted by <code>evaluateResult</code>.
* @param context
* @return
- * @throws Exception
+ * @throws IllegalStateException if neither 'method' nor 'methodKey' properties are defined
+ * @throws Exception if any is thrown by the invocation. Note that if invoking the method
+ * results in an InvocationTargetException, the cause of that exception is thrown instead of
+ * the exception itself, unless the cause is an <code>Error</code> or other <code>Throwable</code>
+ * which is not an <code>Exception</code>.
*/
public boolean execute(Context context) throws Exception {
@@ -40,7 +46,12 @@
Method methodObject = extractMethod(context);
- return evaluateResult(methodObject.invoke(this, getArguments(context)));
+ try {
+ return evaluateResult(methodObject.invoke(this, getArguments(context)));
+ } catch (InvocationTargetException e) {
+ if (e instanceof Exception) throw (Exception) e.getCause();
+ throw e;
+ }
}
/**
---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org