You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by kk...@apache.org on 2011/11/14 02:10:52 UTC
svn commit: r1201568 - in /tomcat/trunk: java/org/apache/catalina/core/
java/org/apache/tomcat/util/ java/org/apache/tomcat/util/digester/
test/org/apache/catalina/tribes/demos/
Author: kkolinko
Date: Mon Nov 14 01:10:51 2011
New Revision: 1201568
URL: http://svn.apache.org/viewvc?rev=1201568&view=rev
Log:
Improve processing of errors that are wrapped into InvocationTargetException.
Rethrow errors that must be rethrown.
Modified:
tomcat/trunk/java/org/apache/catalina/core/ApplicationContextFacade.java
tomcat/trunk/java/org/apache/tomcat/util/IntrospectionUtils.java
tomcat/trunk/java/org/apache/tomcat/util/digester/Digester.java
tomcat/trunk/test/org/apache/catalina/tribes/demos/IntrospectionUtils.java
Modified: tomcat/trunk/java/org/apache/catalina/core/ApplicationContextFacade.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/core/ApplicationContextFacade.java?rev=1201568&r1=1201567&r2=1201568&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/core/ApplicationContextFacade.java (original)
+++ tomcat/trunk/java/org/apache/catalina/core/ApplicationContextFacade.java Mon Nov 14 01:10:51 2011
@@ -191,6 +191,7 @@ public class ApplicationContextFacade im
return (URL) invokeMethod(context, "getResource",
new Object[]{path});
} catch(Throwable t) {
+ ExceptionUtils.handleThrowable(t);
if (t instanceof MalformedURLException){
throw (MalformedURLException)t;
}
@@ -765,6 +766,7 @@ public class ApplicationContextFacade im
try{
return invokeMethod(context, methodName, params);
}catch(Throwable t){
+ ExceptionUtils.handleThrowable(t);
throw new RuntimeException(t.getMessage(), t);
}
}
@@ -870,8 +872,10 @@ public class ApplicationContextFacade im
}
if (ex instanceof InvocationTargetException) {
- realException =
- ((InvocationTargetException) ex).getTargetException();
+ realException = ex.getCause();
+ if (realException == null) {
+ realException = ex;
+ }
} else {
realException = ex;
}
Modified: tomcat/trunk/java/org/apache/tomcat/util/IntrospectionUtils.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/IntrospectionUtils.java?rev=1201568&r1=1201567&r2=1201568&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/util/IntrospectionUtils.java (original)
+++ tomcat/trunk/java/org/apache/tomcat/util/IntrospectionUtils.java Mon Nov 14 01:10:51 2011
@@ -264,6 +264,7 @@ public final class IntrospectionUtils {
log.debug("IntrospectionUtils: IllegalAccessException for " +
o.getClass() + " " + name + "=" + value + ")", iae);
} catch (InvocationTargetException ie) {
+ ExceptionUtils.handleThrowable(ie.getCause());
if (log.isDebugEnabled())
log.debug("IntrospectionUtils: InvocationTargetException for " +
o.getClass() + " " + name + "=" + value + ")", ie);
@@ -312,6 +313,7 @@ public final class IntrospectionUtils {
log.debug("IntrospectionUtils: IllegalAccessException for " +
o.getClass() + " " + name + ")", iae);
} catch (InvocationTargetException ie) {
+ ExceptionUtils.handleThrowable(ie.getCause());
if (log.isDebugEnabled())
log.debug("IntrospectionUtils: InvocationTargetException for " +
o.getClass() + " " + name + ")");
@@ -454,7 +456,12 @@ public final class IntrospectionUtils {
if (m == null)
throw new NoSuchMethodException(target.getClass().getName() + " "
+ methodN);
- return m.invoke(target, new Object[] { param1 });
+ try {
+ return m.invoke(target, new Object[] { param1 });
+ } catch (InvocationTargetException ie) {
+ ExceptionUtils.handleThrowable(ie.getCause());
+ throw ie;
+ }
}
/**
@@ -478,7 +485,12 @@ public final class IntrospectionUtils {
if (m == null)
throw new NoSuchMethodException(target.getClass().getName() + " "
+ methodN);
- return m.invoke(target, emptyArray);
+ try {
+ return m.invoke(target, emptyArray);
+ } catch (InvocationTargetException ie) {
+ ExceptionUtils.handleThrowable(ie.getCause());
+ throw ie;
+ }
}
/**
@@ -497,21 +509,27 @@ public final class IntrospectionUtils {
" in " + target + " CLASS " + target.getClass());
return null;
}
- Object o = m.invoke(target, params);
+ try {
+ Object o = m.invoke(target, params);
- if (log.isDebugEnabled()) {
- // debug
- StringBuilder sb = new StringBuilder();
- sb.append("" + target.getClass().getName() + "." + methodN + "( ");
- for (int i = 0; i < params.length; i++) {
- if (i > 0)
- sb.append(", ");
- sb.append(params[i]);
+ if (log.isDebugEnabled()) {
+ // debug
+ StringBuilder sb = new StringBuilder();
+ sb.append(target.getClass().getName()).append('.')
+ .append(methodN).append("( ");
+ for (int i = 0; i < params.length; i++) {
+ if (i > 0)
+ sb.append(", ");
+ sb.append(params[i]);
+ }
+ sb.append(")");
+ log.debug("IntrospectionUtils:" + sb.toString());
}
- sb.append(")");
- log.debug("IntrospectionUtils:" + sb.toString());
+ return o;
+ } catch (InvocationTargetException ie) {
+ ExceptionUtils.handleThrowable(ie.getCause());
+ throw ie;
}
- return o;
}
public static Object convert(String object, Class<?> paramType) {
Modified: tomcat/trunk/java/org/apache/tomcat/util/digester/Digester.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/digester/Digester.java?rev=1201568&r1=1201567&r2=1201568&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/util/digester/Digester.java (original)
+++ tomcat/trunk/java/org/apache/tomcat/util/digester/Digester.java Mon Nov 14 01:10:51 2011
@@ -2669,8 +2669,14 @@ public class Digester extends DefaultHan
public SAXException createSAXException(String message, Exception e) {
if ((e != null) &&
(e instanceof InvocationTargetException)) {
- Throwable t = ((InvocationTargetException) e).getTargetException();
- if ((t != null) && (t instanceof Exception)) {
+ Throwable t = e.getCause();
+ if (t instanceof ThreadDeath) {
+ throw (ThreadDeath) t;
+ }
+ if (t instanceof VirtualMachineError) {
+ throw (VirtualMachineError) t;
+ }
+ if (t instanceof Exception) {
e = (Exception) t;
}
}
@@ -2699,8 +2705,14 @@ public class Digester extends DefaultHan
*/
public SAXException createSAXException(Exception e) {
if (e instanceof InvocationTargetException) {
- Throwable t = ((InvocationTargetException) e).getTargetException();
- if ((t != null) && (t instanceof Exception)) {
+ Throwable t = e.getCause();
+ if (t instanceof ThreadDeath) {
+ throw (ThreadDeath) t;
+ }
+ if (t instanceof VirtualMachineError) {
+ throw (VirtualMachineError) t;
+ }
+ if (t instanceof Exception) {
e = (Exception) t;
}
}
Modified: tomcat/trunk/test/org/apache/catalina/tribes/demos/IntrospectionUtils.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/test/org/apache/catalina/tribes/demos/IntrospectionUtils.java?rev=1201568&r1=1201567&r2=1201568&view=diff
==============================================================================
--- tomcat/trunk/test/org/apache/catalina/tribes/demos/IntrospectionUtils.java (original)
+++ tomcat/trunk/test/org/apache/catalina/tribes/demos/IntrospectionUtils.java Mon Nov 14 01:10:51 2011
@@ -164,6 +164,13 @@ public final class IntrospectionUtils {
log.debug("IntrospectionUtils: IllegalAccessException for " +
o.getClass() + " " + name + "=" + value + ")", iae);
} catch (InvocationTargetException ie) {
+ Throwable cause = ie.getCause();
+ if (cause instanceof ThreadDeath) {
+ throw (ThreadDeath) cause;
+ }
+ if (cause instanceof VirtualMachineError) {
+ throw (VirtualMachineError) cause;
+ }
if (log.isDebugEnabled())
log.debug("IntrospectionUtils: InvocationTargetException for " +
o.getClass() + " " + name + "=" + value + ")", ie);
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org