You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by cr...@apache.org on 2002/12/16 03:14:16 UTC

cvs commit: jakarta-commons/digester/src/java/org/apache/commons/digester Digester.java

craigmcc    2002/12/15 18:14:16

  Modified:    digester/src/java/org/apache/commons/digester Digester.java
  Log:
  When an exception is thrown by a Rule, it is normally wrapped in a
  SAXException and rethrown.  Now, if the original exception was actually an
  InvocationTargetException (such as what might be thrown by a property setter
  called via BeanUtils.setProperty()), the InvocationTargetException will be
  unwrapped first before being rewrapped as a SAXException.  This should
  lead to more intelligible stack traces.
  
  PR: Bugzilla #14415
  Submitted by: Karl von Randow <karl at xk72.com>
  
  Revision  Changes    Path
  1.69      +18 -4     jakarta-commons/digester/src/java/org/apache/commons/digester/Digester.java
  
  Index: Digester.java
  ===================================================================
  RCS file: /home/cvs/jakarta-commons/digester/src/java/org/apache/commons/digester/Digester.java,v
  retrieving revision 1.68
  retrieving revision 1.69
  diff -u -r1.68 -r1.69
  --- Digester.java	2 Oct 2002 19:23:12 -0000	1.68
  +++ Digester.java	16 Dec 2002 02:14:15 -0000	1.69
  @@ -70,6 +70,7 @@
   import java.io.IOException;
   import java.io.PrintWriter;
   import java.io.Reader;
  +import java.lang.reflect.InvocationTargetException;
   import java.net.URL;
   import java.net.URLConnection;
   import java.util.ArrayList;
  @@ -2368,6 +2369,13 @@
        * @return the new exception
        */
       protected SAXException createSAXException(String message, Exception e) {
  +        if ((e != null) &&
  +            (e instanceof InvocationTargetException)) {
  +            Throwable t = ((InvocationTargetException) e).getTargetException();
  +            if ((t != null) && (t instanceof Exception)) {
  +                e = (Exception) t;
  +            }
  +        }
           if (locator != null) {
               String error = "Error at (" + locator.getLineNumber() + ", "
                       + locator.getColumnNumber() + ": " + message;
  @@ -2392,6 +2400,12 @@
        * @return the new exception
        */
       protected SAXException createSAXException(Exception e) {
  +        if (e instanceof InvocationTargetException) {
  +            Throwable t = ((InvocationTargetException) e).getTargetException();
  +            if ((t != null) && (t instanceof Exception)) {
  +                e = (Exception) t;
  +            }
  +        }
           return createSAXException(e.getMessage(), e);
       }
   
  
  
  

--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>