You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@turbine.apache.org by dl...@apache.org on 2001/08/08 09:51:06 UTC

cvs commit: jakarta-turbine-fulcrum/src/core/java/org/apache/fulcrum ServiceException.java ServiceRuntimeException.java

dlr         01/08/08 00:51:06

  Modified:    src/core/java/org/apache/fulcrum ServiceException.java
                        ServiceRuntimeException.java
  Added:       lib      commons-util-0.1-dev.jar
  Log:
  Integrated aspiring commons-util JAR.
  
  Revision  Changes    Path
  1.1                  jakarta-turbine-fulcrum/lib/commons-util-0.1-dev.jar
  
  	<<Binary file>>
  
  
  1.2       +10 -257   jakarta-turbine-fulcrum/src/core/java/org/apache/fulcrum/ServiceException.java
  
  Index: ServiceException.java
  ===================================================================
  RCS file: /home/cvs/jakarta-turbine-fulcrum/src/core/java/org/apache/fulcrum/ServiceException.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -u -r1.1 -r1.2
  --- ServiceException.java	2001/07/31 14:35:41	1.1
  +++ ServiceException.java	2001/08/08 07:51:06	1.2
  @@ -26,7 +26,7 @@
    *    if and wherever such third-party acknowledgments normally appear.
    *
    * 4. The names "Apache" and "Apache Software Foundation" and 
  - *    "Apache Fulcrum" must not be used to endorse or promote products 
  + *    "Apache Turbine" must not be used to endorse or promote products 
    *    derived from this software without prior written permission. For 
    *    written permission, please contact apache@apache.org.
    *
  @@ -54,279 +54,32 @@
    * <http://www.apache.org/>.
    */
   
  -import java.io.OutputStream;
  -import java.io.PrintStream;
  -import java.io.PrintWriter;
  -import java.io.StringWriter;
  -import java.io.Writer;
  -import java.util.LinkedList;
  -import java.util.StringTokenizer;
  +import org.apache.commons.util.exception.NestableException;
   
   /**
  - * The base class of all exceptions thrown by Fulcrum.
  + * The base class of all regular exceptions thrown by Fulcrum.
    *
  - * It is intended to ease the debugging by carrying on the information
  - * about the exception which was caught and provoked throwing the 
  - * current exception. Catching and rethrowing may occur multiple
  - * times, and provided that all exceptions except the first one
  - * are descendands of <code>FulcrumException</code>, when the 
  - * exception is finally printed out using any of the <code>
  - * printStackTrace()</code> methods, the stacktrace will contain 
  - * the information about all exceptions thrown and caught on
  - * the way.
  - * <p> Running the following program
  - * <p><blockquote><pre>
  - *  1 import org.apache.fulcrum.FulcrumException;
  - *  2
  - *  3 public class Test {
  - *  4     public static void main( String[] args ) {
  - *  5         try {
  - *  6             a();
  - *  7         } catch(Exception e) {
  - *  8             e.printStackTrace();
  - *  9         }
  - * 10      }
  - * 11  
  - * 12      public static void a() throws Exception {
  - * 13          try {
  - * 14              b();
  - * 15          } catch(Exception e) {
  - * 16              throw new FulcrumException("foo", e);
  - * 17          }
  - * 18      }
  - * 19  
  - * 20      public static void b() throws Exception {
  - * 21          try {
  - * 22              c();
  - * 23          } catch(Exception e) {
  - * 24              throw new FulcrumException("bar", e);
  - * 25          }
  - * 26      }
  - * 27   
  - * 28      public static void c() throws Exception {
  - * 29          throw new Exception("baz");
  - * 30      }
  - * 31 }
  - * </pre></blockquote>
  - * <p>Yields the following stacktrace:
  - * <p><blockquote><pre>
  - * java.lang.Exception: baz: bar: foo
  - *    at Test.c(Test.java:29)
  - *    at Test.b(Test.java:22)
  - * rethrown as FulcrumException: bar
  - *    at Test.b(Test.java:24)
  - *    at Test.a(Test.java:14)
  - * rethrown as FulcrumException: foo
  - *    at Test.a(Test.java:16)
  - *    at Test.main(Test.java:6)
  - * </pre></blockquote><br>
  - *
  - * @author <a href="mailto:Rafal.Krzewski@e-point.pl">Rafal Krzewski</a>
  - * @author <a href="mailto:kav@kav.dk">Kasper Nielsen</a>
  + * @author <a href="mailto:jvz@apache.org">Jason van Zyl</a>
  + * @author <a href="mailto:dlr@finemaltcoding.com">Daniel Rall</a>
    */
  -public class ServiceException extends Exception
  +public class ServiceException extends NestableException
   {
  -    /** 
  -     * Holds the reference to the exception or error that caused
  -     * this exception to be thrown.
  -     */
  -    private Throwable nested = null;
  - 
  -    /**
  -     * Constructs a new <code>ServiceException</code> without specified 
  -     * detail message.
  -     */
       public ServiceException()
       {
  -        super();
       }
   
  -    /**
  -     * Constructs a new <code>ServiceException</code> with specified 
  -     * detail message.
  -     *
  -     * @param msg The error message.
  -     */
       public ServiceException(String msg)
       {
           super(msg);
       }
  - 
  -    /**
  -     * Constructs a new <code>ServiceException</code> with specified 
  -     * nested <code>Throwable</code>.
  -     *
  -     * @param nested The exception or error that caused this exception 
  -     *               to be thrown.
  -     */
  -    public ServiceException(Throwable nested)
  -    {
  -        super();
  -        this.nested = nested;
  -    }
  - 
  -    /**
  -     * Constructs a new <code>ServiceException</code> with specified 
  -     * detail message and nested <code>Throwable</code>.
  -     *
  -     * @param msg    The error message.
  -     * @param nested The exception or error that caused this exception 
  -     *               to be thrown.
  -     */
  -    public ServiceException(String msg, Throwable nested)
  -    {
  -        super(msg);
  -        this.nested = nested;
  -    }
  - 
  -    /**
  -     * Returns the error message of this and any nested <code>Throwable</code>.
  -     *
  -     * @return The error message.
  -     */
  -    public String getMessage()
  -    {
  -        StringBuffer msg = new StringBuffer();
  -        String ourMsg = super.getMessage();
  -        if (ourMsg != null)
  -        {
  -            msg.append(ourMsg);
  -        }
  -        if (nested != null)
  -        {
  -            String nestedMsg = nested.getMessage();
  -            if (nestedMsg != null)
  -            {
  -                if (ourMsg != null)
  -                {
  -                    msg.append(": ");
  -                }
  -                msg.append(nestedMsg);
  -            }
  -            
  -        }
  -        return (msg.length() > 0 ? msg.toString() : null);
  -    }
   
  -    /**
  -     * Prints the stack trace of this exception the the standar error 
  -     * stream.
  -     */
  -    public void printStackTrace()
  -    {
  -        synchronized(System.err) 
  -        {
  -            printStackTrace(System.err);
  -        }
  -    }
  - 
  -    /**
  -     * Prints the stack trace of this exception to the specified print stream.
  -     *
  -     * @param out <code>PrintStream</code> to use for output.
  -     */
  -    public void printStackTrace(PrintStream out) 
  -    {
  -        synchronized(out) 
  -        {
  -            PrintWriter pw = new PrintWriter(out, false);
  -            printStackTrace(pw);
  -            // Flush the PrintWriter before it's GC'ed.
  -            pw.flush();
  -        }
  -    }
  - 
  -    /**
  -     * Prints the stack trace of this exception to the specified print writer.
  -     *
  -     * @param out <code>PrintWriter</code> to use for output.
  -     */
  -    public void printStackTrace(PrintWriter out)
  -    {
  -        synchronized(out) 
  -        {
  -            printStackTrace(out, 0);
  -        }
  -    }
  - 
  -    /**
  -     * Prints the stack trace of this exception skiping a specified number
  -     * of stack frames.
  -     *
  -     * @param out  <code>PrintWriter</code> to use for output.
  -     * @param skip The numbere of stack frames to skip.
  -     */
  -    public void printStackTrace(PrintWriter out, int skip)
  +    public ServiceException(Throwable nested)
       {
  -        String[] st = captureStackTrace();
  -        if(nested != null) 
  -        {
  -            if(nested instanceof ServiceException) 
  -            {
  -                ((ServiceException)nested).printStackTrace(out, st.length - 2);
  -            } 
  -            else if(nested instanceof InstantiationException) 
  -            {
  -                ((InstantiationException)nested).printStackTrace(out, st.length - 2);
  -            } 
  -            else 
  -            {
  -                String[] nst = captureStackTrace(nested);
  -                for(int i = 0; i < nst.length - st.length + 2; i++) 
  -                {
  -                    out.println(nst[i]);
  -                }
  -            }
  -            out.print("rethrown as ");
  -        }
  -        for(int i=0; i<st.length - skip; i++) 
  -        {
  -            out.println(st[i]);
  -        }
  +        super(nested);
       }
   
  -    /**
  -     * Captures the stack trace associated with this exception.
  -     *
  -     * @return an array of Strings describing stack frames.
  -     */ 
  -    private String[] captureStackTrace() 
  -    {
  -        StringWriter sw = new StringWriter();
  -        super.printStackTrace(new PrintWriter(sw, true));
  -        return splitStackTrace(sw.getBuffer().toString());
  -    }
  - 
  -    /**
  -     * Captures the stack trace associated with a <code>Throwable</code> 
  -     * object.
  -     *
  -     * @param t The <code>Throwable</code>.
  -     * @return  An array of strings describing each stack frame.
  -     */
  -    private String[] captureStackTrace(Throwable t) 
  -    {
  -        StringWriter sw = new StringWriter();
  -        t.printStackTrace(new PrintWriter(sw, true));
  -        return splitStackTrace(sw.getBuffer().toString());
  -    }
  -  
  -    /**
  -     * Splits the stack trace given as a newline separated string
  -     * into an array of stack frames.
  -     * 
  -     * @param stackTrace The stack trace.
  -     * @return           An array of strings describing each stack frame.
  -     */
  -    private String[] splitStackTrace(String stackTrace) 
  +    public ServiceException(String msg, Throwable nested)
       {
  -        String linebreak = System.getProperty("line.separator");
  -        StringTokenizer st = new StringTokenizer(stackTrace, linebreak);
  -        LinkedList list = new LinkedList();
  -        while(st.hasMoreTokens()) 
  -        {
  -            list.add(st.nextToken());
  -        }
  -        return (String [])list.toArray(new String[] {});
  +        super(msg, nested);
       }
   }
  
  
  
  1.2       +9 -178    jakarta-turbine-fulcrum/src/core/java/org/apache/fulcrum/ServiceRuntimeException.java
  
  Index: ServiceRuntimeException.java
  ===================================================================
  RCS file: /home/cvs/jakarta-turbine-fulcrum/src/core/java/org/apache/fulcrum/ServiceRuntimeException.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -u -r1.1 -r1.2
  --- ServiceRuntimeException.java	2001/07/31 14:35:41	1.1
  +++ ServiceRuntimeException.java	2001/08/08 07:51:06	1.2
  @@ -54,201 +54,32 @@
    * <http://www.apache.org/>.
    */
   
  -import java.io.OutputStream;
  -import java.io.PrintStream;
  -import java.io.PrintWriter;
  -import java.io.StringWriter;
  -import java.io.Writer;
  -import java.util.LinkedList;
  -import java.util.StringTokenizer;
  +import org.apache.commons.util.exception.NestableRuntimeException;
   
   /**
  - * This is a base class of runtime exeptions thrown by Turbine.
  - *
  - * This class represents a non-checked type exception (see 
  - * {@see java.lang.RuntimeException}). It has the nested stack trace
  - * functionality found in the {@see ServiceException} class.
  + * This is a base class of runtime exeptions thrown by Fulcrum.
    * 
  - * It's sad that this class is a straight copy/paste of Turbine exception. 
  - * I wish that Java supported NonCheckedException marker interface...
  - * 
  - * @author <a href="mailto:Rafal.Krzewski@e-point.pl">Rafal Krzewski</a>
  + * @author <a href="mailto:jvz@apache.org">Jason van Zyl</a>
  + * @author <a href="mailto:dlr@finemaltcoding.com">Daniel Rall</a>
    */
  -public class ServiceRuntimeException 
  -    extends RuntimeException
  +public class ServiceRuntimeException extends NestableRuntimeException
   {
  -    /** 
  -     * Holds the reference to the exception or error that caused
  -     * this exception to be thrown.
  -     */
  -    private Throwable nested = null;
  - 
  -    /**
  -     * Constructs a new <code>ServiceRuntimeException</code> without specified 
  -     * detail message.
  -     */
       public ServiceRuntimeException()
       {
  -        super();
       }
   
  -    /**
  -     * Constructs a new <code>ServiceRuntimeException</code> with specified 
  -     * detail message.
  -     *
  -     * @param msg the error message.
  -     */
       public ServiceRuntimeException(String msg)
       {
           super(msg);
       }
  - 
  -    /**
  -     * Constructs a new <code>ServiceRuntimeException</code> with specified 
  -     * nested <code>Throwable</code>.
  -     *
  -     * @param nested the exception or error that caused this exception 
  -     *               to be thrown.
  -     */
  +    
       public ServiceRuntimeException(Throwable nested)
       {
  -        super();
  -        this.nested = nested;
  +        super(nested);
       }
  - 
  -    /**
  -     * Constructs a new <code>ServiceRuntimeException</code> with specified 
  -     * detail message and nested <code>Throwable</code>.
  -     *
  -     * @param msg the error message.
  -     * @param nested the exception or error that caused this exception 
  -     *               to be thrown.
  -     */
  +    
       public ServiceRuntimeException(String msg, Throwable nested)
  -    {
  -        super(msg);
  -        this.nested = nested;
  -    }
  - 
  -    /**
  -     * Prints the stack trace of this exception the the standar error 
  -     * stream.
  -     */
  -    public void printStackTrace()
  -    {
  -        synchronized(System.err) 
  -        {
  -            printStackTrace(System.err);
  -        }
  -    }
  - 
  -    /**
  -     * Prints the stack trace of this exception to the specified print stream.
  -     *
  -     * @param out <code>PrintStream</code> to use for output
  -     */
  -    public void printStackTrace(PrintStream out) 
  -    {
  -        synchronized(out) 
  -        {
  -            PrintWriter pw=new PrintWriter(out, false);
  -            printStackTrace(pw);
  -            // flush the PrintWriter before it's GCed
  -            pw.flush();
  -        }
  -    }
  - 
  -    /**
  -     * Prints the stack trace of this exception to the specified print writer.
  -     *
  -     * @param out <code>PrintWriter</code> to use for output.
  -     */
  -    public void printStackTrace(PrintWriter out)
  -    {
  -        synchronized(out) 
  -        {
  -            printStackTrace(out, 0);
  -        }
  -    }
  - 
  -    /**
  -     * Prints the stack trace of this exception skiping a specified number
  -     * of stack frames.
  -     *
  -     * @param out <code>PrintWriter</code> to use for output.
  -     * @param skip the numbere of stack frames to skip.
  -     */
  -    public void printStackTrace(PrintWriter out, int skip)
  -    {
  -        String[] st = captureStackTrace();
  -        if(nested != null) 
  -        {
  -            if(nested instanceof ServiceRuntimeException) 
  -            {
  -                ((ServiceRuntimeException)nested).printStackTrace(out, st.length - 2);
  -            } 
  -            else if(nested instanceof ServiceException) 
  -            {
  -                ((ServiceException)nested).printStackTrace(out, st.length - 2);
  -            } 
  -            else 
  -            {
  -                String[] nst = captureStackTrace(nested);
  -                for(int i = 0; i<nst.length - st.length + 2; i++) 
  -                {
  -                    out.println(nst[i]);
  -                }
  -            }
  -            out.print("rethrown as ");
  -        }
  -        for(int i=0; i<st.length - skip; i++) 
  -        {
  -            out.println(st[i]);
  -        }
  -    }
  -
  -    /**
  -     * Captures the stack trace associated with this exception.
  -     *
  -     * @return an array of Strings describing stack frames.
  -     */ 
  -    private String[] captureStackTrace() 
  -    {
  -        StringWriter sw = new StringWriter();
  -        super.printStackTrace(new PrintWriter(sw, true));
  -        return splitStackTrace(sw.getBuffer().toString());
  -    }
  - 
  -    /**
  -     * Captures the stack trace associated with a <code>Throwable</code> 
  -     * object.
  -     *
  -     * @param t the <code>Throwable</code>.
  -     * @return an array of Strings describing stack frames.
  -     */
  -    private String[] captureStackTrace(Throwable t) 
  -    {
  -        StringWriter sw = new StringWriter();
  -        t.printStackTrace(new PrintWriter(sw, true));
  -        return splitStackTrace(sw.getBuffer().toString());
  -    }
  -  
  -    /**
  -     * Splits the stack trace given as a newline separated string
  -     * into an array of stack frames.
  -     * 
  -     * @param stackTrace the stack trace.
  -     * @return an array of Strings describing stack frames.
  -     */
  -    private String[] splitStackTrace(String stackTrace) 
       {
  -        String linebreak = System.getProperty("line.separator");
  -        StringTokenizer st = new StringTokenizer(stackTrace, linebreak);
  -        LinkedList list = new LinkedList();
  -        while(st.hasMoreTokens()) 
  -        {
  -            list.add(st.nextToken());
  -        }
  -        return (String [])list.toArray(new String[] {});
  +        super(msg, nested);
       }
   }
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: turbine-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: turbine-dev-help@jakarta.apache.org